Author: myrnavl Date: Wed Aug 19 21:14:57 2009 New Revision: 805978 URL: http://svn.apache.org/viewvc?rev=805978&view=rev Log: DERBY-700: Port 805448 from trunk to the 10.1 branch only ported the code change; the new test is not appropriate Modified: db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/io/DirFile4.java Modified: db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/io/DirFile4.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/io/DirFile4.java?rev=805978&r1=805977&r2=805978&view=diff ============================================================================== --- db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/io/DirFile4.java (original) +++ db/derby/code/branches/10.1/java/engine/org/apache/derby/impl/io/DirFile4.java Wed Aug 19 21:14:57 2009 @@ -32,6 +32,7 @@ import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; +import java.nio.channels.OverlappingFileLockException; /** * This class implements the StorageFile interface using features of Java 1.4 not available in earlier @@ -185,7 +186,31 @@ SanityManager.THROWASSERT("Unable to Acquire Exclusive Lock on " + getPath()); } - } + } catch (OverlappingFileLockException ofle) + { + // + // Under Java 6 and later, this exception is raised if the database + // has been opened by another Derby instance in a different + // ClassLoader in this VM. See DERBY-700. + // + // The OverlappingFileLockException is raised by the + // lockFileChannel.tryLock() call above. + // + try { + lockFileChannel.close(); + lockFileOpen.close(); + } catch (IOException e) + { + if (SanityManager.DEBUG) + { + SanityManager.THROWASSERT("Error closing file channel " + + getPath(), e); + } + } + lockFileChannel=null; + lockFileOpen = null; + status = EXCLUSIVE_FILE_LOCK_NOT_AVAILABLE; + } return status; } // end of getExclusiveFileLock