Review Request: JDK-8173096 jmod files are not world-readable
mandy.chung at oracle.com
Fri Jan 20 21:12:28 UTC 2017
> On Jan 20, 2017, at 12:37 PM, Peter Levart <peter.levart at gmail.com> wrote:
> I guess the JmodTask is creating a temp file because it wants the file to not be observed by other processes while it is being written to, right? At the end when the tempTarget is fully written, it is renamed to its intended name with:
> Files.move(tempTarget, target);
> ...but that operation will not be atomic since you didn't pass ATOMIC_MOVE to the CopyOption... options. Even if you did, the atomic move will succeed only when both tempTarget and target point to the same filesystem. Since you are creating tempTarget in default temporary files location (/tmp on UNIXes) this might not be the case (depending on where the real target is located).
> So why don't you simply append a .tmp suffix to the intended target file name when opening the JmodOutputStream. This would ensure the file location will be on the same filesystem as the final target name as it will be created in the same directory. Module path scanning should skip files with .tmp extension then.
Module path only ignores files starts with “.” or is hidden. This says making the temp file starting with “.” is a possibility.
$ java -p mods -m hi
Error occurred during initialization of VM
java.lang.module.ResolutionException: Unrecognized module: mods/abc.tmp
More information about the jigsaw-dev