前些天遇到了一个坑,利用fsnotify进行文件热加载,文件更新后,容器内文件已经更新,但进程却感知不到,咨询大佬得知需要watch 文件夹而不是文件。。。
看官网文档确实也是这样 Watching a file doesn't work well
原因说是因为更新文件是原子化操作,先更新到临时文件,然后覆盖旧文件,对于旧文件的watcher就没了
今天一起读下k8s这部分的代码,具体代码读哪里,也没有头绪,还是咨询下deepseek
ok,deepseek帮我们定位到了代码段
这个几个volume都是用AtomicWriter来进行文件更新的
可以阅读上边的注释,写的非常详细,也就是说新文件是直接被link到旧文件的,在这个过程里,文件没有变化
subPath 这种方式无法实现文件的热更新,是因为直接被mount到对应的目录了