From 4ccabedd50ea2b4b45b8327541257118bc8a2a08 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 15 Apr 2011 23:42:12 -0700 Subject: [PATCH] 7032589: FileHandler leaking file descriptor of the file lock Reviewed-by: forax, dcubed --- .../java/util/logging/FileHandler.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/jdk/src/share/classes/java/util/logging/FileHandler.java b/jdk/src/share/classes/java/util/logging/FileHandler.java index 956677630a0..6b67f8779b5 100644 --- a/jdk/src/share/classes/java/util/logging/FileHandler.java +++ b/jdk/src/share/classes/java/util/logging/FileHandler.java @@ -409,22 +409,25 @@ public class FileHandler extends StreamHandler { // Try the next file. continue; } + boolean available; try { - FileLock fl = fc.tryLock(); - if (fl == null) { - // We failed to get the lock. Try next file. - continue; - } + available = fc.tryLock() != null; // We got the lock OK. } catch (IOException ix) { // We got an IOException while trying to get the lock. // This normally indicates that locking is not supported // on the target directory. We have to proceed without // getting a lock. Drop through. + available = true; } - // We got the lock. Remember it. - locks.put(lockFileName, lockFileName); - break; + if (available) { + // We got the lock. Remember it. + locks.put(lockFileName, lockFileName); + break; + } + + // We failed to get the lock. Try next file. + fc.close(); } }