mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Merge pull request #33899 from MrHohn/fix_config_test
Automatic merge from submit-queue Fix #33784, IN_CREATE event does not guarantee file content written Fixed #33784. The CREATE inotify event [here](https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/config/file_linux_test.go#L275) is triggered by os.OpenFile(), however the content would be written by the following f.Write(). It will fail if the program try to process the event in between. IN_CREAE event is triggered by open(2), mkdir(2), link(2), symlink(2), bind(2), but not all of them will guarantee the content is written ([ref](http://man7.org/linux/man-pages/man7/inotify.7.html)). <s>Hence we should not respond to IN_CREATE event for pod creation. I believe listen on IN_MODIFY and IN_MOVED_TO would be sufficient for pod addition&update. Would like to see the Jenkins test results for further evaluation. @Random-Liu
This commit is contained in:
commit
47b4c0e770
@ -261,32 +261,13 @@ func watchFileAdded(watchDir bool, t *testing.T) {
|
|||||||
testCase.writeToFile(dirName, fileName, t)
|
testCase.writeToFile(dirName, fileName, t)
|
||||||
}
|
}
|
||||||
|
|
||||||
if watchDir {
|
|
||||||
defer func() {
|
|
||||||
// Remove the file
|
|
||||||
deleteFile(dirName, fileName, ch, t)
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
go addFile()
|
go addFile()
|
||||||
|
|
||||||
if watchDir {
|
// For !watchDir: expect an update by SourceFile.resetStoreFromPath().
|
||||||
// expect an update by CREATE inotify event
|
// For watchDir: expect at least one update from CREATE & MODIFY inotify event.
|
||||||
|
// Shouldn't expect two updates from CREATE & MODIFY because CREATE doesn't guarantee file written.
|
||||||
|
// In that case no update will be sent from CREATE event.
|
||||||
expectUpdate(t, ch, testCase)
|
expectUpdate(t, ch, testCase)
|
||||||
// expect an update by MODIFY inotify event
|
|
||||||
expectUpdate(t, ch, testCase)
|
|
||||||
|
|
||||||
from := fileName
|
|
||||||
fileName = fileName + "_ch"
|
|
||||||
go changeFileName(dirName, from, fileName, t)
|
|
||||||
// expect an update by MOVED_FROM inotify event cause changing file name
|
|
||||||
expectEmptyUpdate(t, ch)
|
|
||||||
// expect an update by MOVED_TO inotify event cause changing file name
|
|
||||||
expectUpdate(t, ch, testCase)
|
|
||||||
} else {
|
|
||||||
// expect an update by SourceFile.resetStoreFromPath()
|
|
||||||
expectUpdate(t, ch, testCase)
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user