Jim, Looking at the webrev again I think I tricked myself into thinking that 'parentFile' was a file that could be opened with a stream when it actually is a directory. I think the best fix would be to add a check in the catch block (around line 432) and only continue if the directory of the generated file java.nio.file.Files.isWritable/isDirectory otherwise throw the original exception. If the running JVM terminates abnormally won't the lock file fail to be deleted? On restart, the lock file will exist to protect a dead process. Jason
Date: Tue, 13 Nov 2012 13:25:27 -0500 From: jim.g...@oracle.com To: alan.bate...@oracle.com CC: jason_mehr...@hotmail.com; core-libs-dev@openjdk.java.net Subject: Re: RFR: 6244047: impossible to specify directories to logging FileHandler unless they exist On 11/13/2012 07:08 AM, Alan Bateman wrote: On 12/11/2012 23:22, Jim Gish wrote: Which file(s) are you concerned about truncating/damaging? The code I'm impacting is for creating a new lock file. Where is the potential for truncating/damaging that you both are referring to? Is this sufficient (plus the proper exception handling of course) ? //lockStream = new FileOutputStream(lockFileName); fc = FileChannel.open(new File(lockFileName).toPath(), CREATE_NEW, WRITE); //fc = lockStream.getChannel(); CREATE rather than CREATE_NEW so that it doesn't fail if the lock file already exists. Although it's just a lock file then I think it would be impolite to truncate it. You could use Paths.get(lockFileName)rather than new File(lockFileName).toPath() here but either is fine. -Alan. I think we want it to fail if the lock file already exists. That's why I used CREATE_NEW. At least the way the logic is now, is that it attempts to create a new file and if it fails it tries again until it can create a new one. It may be the case that the lockFileName is not in the locks map, and thus we don't own it, but it's possible that another JVM/app is logging in the same location. It, of course, would be bad practice, but not disallowed. We shouldn't be grabbing a lock file that might otherwise be in use. Jim -- Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304 Oracle Java Platform Group | Core Libraries Team 35 Network Drive Burlington, MA 01803 jim.g...@oracle.com