snapshotter: use syncfs system call #2816
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
sync
system call triggers a full page cache sync which may not always work, especially in kubernetes environment where it is very easy to be interfered by others. I have seen several cases where a broken nfs mount is blocking kaniko from doing its job.With
syncfs
, it only writes cache back to disk for the current filesystem that is used by kaniko which is supposed to be more reliable.Here is the details that I captured recently. From kaniko executor logs:
It hangs there forever in
Taking snapshot of full filesystem
- see #1333 as well.I looked the stack of kaniko process and see this:
where
180716
is the pid of kaniko executor, and one of its subtask is waiting inksys_sync
forever.At that point of time, running
sync
(command) on the host was also stuck forever. We further checked and then identified the system call was waiting for one of nfs mount to flush its superblock (but due to connectivity issues, it can't complete).While this is technically not related to kaniko, but by switching to
syncfs
with fd from current directory, it is going to only sync the current file system which holds the provided fd, and this is not affected by external filesystems.Submitter Checklist
These are the criteria that every PR should meet, please check them off as you
review them:
See the contribution guide for more details.
Reviewer Notes