我们有一个在 NFS 共享上生成新文件的系统(我相信提供商是 NetApp)。我们的应用程序是用 Java 编写的。Java 规范说 FileSystem 移动是原子的,但不确定 NFS 驱动器上的移动是否同样是原子的。
“制作人”应用程序:
- 将文件写入 /my/nfs/share/temp/
- 然后将文件从 /my/nfs/share/temp/ 移动到 /my/nfs/share/saved/
(文件始终具有唯一的名称,我们在临时文件名和已保存的文件名中都使用 GUID。)
“消费者”应用程序:
- 在 /my/nfs/share/saved/ 中查找新文件
- 如果发现新文件,它就会读取它。
只有一个“生产者”应用程序实例。
我的问题是:“消费者”应用程序是否总是能看到完整写入的文件?或者部分写入的文件或空文件是否可能对“消费者”可见。
任何帮助,将不胜感激。