mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 23:37:01 +00:00
Merge pull request #52119 from mtaufen/sync-files
Automatic merge from submit-queue fsync config checkpoint files after writing @yujuhong brought up that it's possible for a hard reboot to result in empty checkpoint files, if they haven't been synced to disk yet. This PR ensures that Kubelet configuration checkpoints are synced after writing to avoid this issue. fixes #52222 **Release note**: ```release-note NONE ```
This commit is contained in:
commit
d8847a8f1d
@ -83,6 +83,10 @@ func ReplaceFile(fs utilfs.Filesystem, path string, data []byte) error {
|
||||
if _, err := tmpFile.Write(data); err != nil {
|
||||
return err
|
||||
}
|
||||
// sync file, to ensure it's written in case a hard reset happens
|
||||
if err := tmpFile.Sync(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tmpFile.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -101,6 +101,11 @@ func (file *defaultFile) Write(b []byte) (n int, err error) {
|
||||
return file.file.Write(b)
|
||||
}
|
||||
|
||||
// Sync via os.File.Sync
|
||||
func (file *defaultFile) Sync() error {
|
||||
return file.file.Sync()
|
||||
}
|
||||
|
||||
// Close via os.File.Close
|
||||
func (file *defaultFile) Close() error {
|
||||
return file.file.Close()
|
||||
|
@ -107,6 +107,11 @@ func (file *fakeFile) Write(b []byte) (n int, err error) {
|
||||
return file.file.Write(b)
|
||||
}
|
||||
|
||||
// Sync via afero.File.Sync
|
||||
func (file *fakeFile) Sync() error {
|
||||
return file.file.Sync()
|
||||
}
|
||||
|
||||
// Close via afero.File.Close
|
||||
func (file *fakeFile) Close() error {
|
||||
return file.file.Close()
|
||||
|
@ -45,5 +45,6 @@ type File interface {
|
||||
// for now, the only os.File methods used are those below, add more as necessary
|
||||
Name() string
|
||||
Write(b []byte) (n int, err error)
|
||||
Sync() error
|
||||
Close() error
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user