Code review request: 7082769: FileInputStream/FileOutputStream/RandomAccessFile allow file descriptor be closed when still in use

Chris Hegarty chris.hegarty at oracle.com
Fri Sep 9 10:26:38 UTC 2011


Sean,

The changes look good, though I haven't gone through the test in much 
detail!

One question that is not directly related to your changes, but may be 
applicable.

Shouldn't the close on FileChannel also check the value of the use count 
before closing the native fd? For example:

    raf = new RandomAccessFile("test1", "rw");
    fd = raf.getFD();
    fos = new FileOutputStream(fd);
    fos.getChannel();
    fis = new FileInputStream(fd);
    fos.close()

    fis.read()   <<<<<<< will this fail ????

Yes the channel should be closed, but shouldn't the 
FileChannelImpl.close itself decrement the use count and not close the 
fd if it is still in use?

-Chris

On 08/09/2011 18:11, Seán Coffey wrote:
> http://bugs.sun.com/view_bug.do?bug_id=7082769
>
> webrev : http://cr.openjdk.java.net/~coffeys/webrev.7082769.7087019.jdk8/
>
> Bug fix where we ensure that the fd object is not disposed of until all
> streams are closed out.
>
> Testcase is a bulked up version of CR 6322678 (which wasn't committed at
> time of 6322678 fix). It includes create/close() calls for
> FileInputStream/FileOutputStream/RandomAccessFile which all reference
> the same file descriptor. Multi threaded access to the same file
> descriptor is also tested.
>
> Typo fix also as per http://bugs.sun.com/view_bug.do?bug_id=7087019 also
> included.
>
> regards,
> Sean.
>



More information about the core-libs-dev mailing list