Review request 6543863, 6429910, 6814948, 6822643

Xueming Shen Xueming.Shen at Sun.COM
Sat Apr 11 01:12:24 UTC 2009


approved.

Alan Bateman wrote:
> Sherman, this is your locky day :-) 
>
> 6543863: (fc) FileLock.release can deadlock with FileChannel.close
>
> This is a long-standing deadlock (since 1.4) that can happen when 
> closing a FileChannel and releasing a FileLock (obtained from the 
> channel) at around the same time. Closing locks the FileLock while 
> synchronized on the list of file locks; Release locks the list while 
> holding the FileLock. The cycle is broken by changing the removeAll 
> method to remove and return the list of the channel's file locks.
>
>
> 6429910: (fc) FileChannel.lock() IOException: Bad file number, not 
> AsynchronousCloseException
>
> If the FileChannel#lock method is blocked waiting to acquire a lock on 
> the channel's file and the FileChannel is closed then the lock method 
> fails with IOException "Bad file number" whereas it is should throw 
> AsynchronousCloseException. The end method, marking the end of the I/O 
> operation was being invoked with true instead of false and so wasn't 
> suppressing the I/O operation.
>
>
> 6814948: (fc) test/java/nio/channels/AsynchronousFileChannel/Lock.java 
> failed intermittently
>
> The asynchronous close sub-test fails intermittently (about 1 per 1000 
> runs on the machines I tried). It's a timing issue that arises if the 
> preclose is done before the lock attempt, in which case it will appear 
> the file has been acquired (but the channel is closed). The lock and 
> tryLock methods were missing an isOpen check.
>
>
> 6822643: (fc) AsynchronousFileChannel.close does not invalidate FileLocks
>
> This is an embarrassing one. The close method attempts to release and 
> invalidate all locks but the "shared" FileLockTable removeAll 
> implementation checked the lock's channel using lock.channel() instead 
> of lock.acquiredBy() (and hence only worked for FileChannel).
>
>
> The webrev is here:
>  
> http://cr.openjdk.java.net/~alanb/6543863%2b6429910%2b6814948%2b6822643/webrev.00/ 
>
>
> Thanks,
> Alan.
>
>
>
>
>
>
>
>
>
>




More information about the core-libs-dev mailing list