RFR: JDK-6956385: URLConnection.getLastModified() leaks file handles for jar:file and file: URLs
Daniel Fuchs
dfuchs at openjdk.org
Fri May 19 13:59:51 UTC 2023
On Fri, 19 May 2023 13:00:30 GMT, Jesse Glick <duke at openjdk.org> wrote:
>> src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java line 96:
>>
>>> 94: return connected;
>>> 95: }
>>> 96:
>>
>> I wonder if it would be better to add a
>>
>>
>> void closeInputStream() { ... } // (or void close() { ... }?)
>>
>>
>> that would simply close the input stream if it's not null...
>
> `close()` would be natural enough, and would encapsulate behavior a bit better.
>
> Should it then actually implement `Closeable`, permitting the implicit request in https://github.com/openjdk/jdk/pull/12871#discussion_r1198873512 to be addressed? That would not technically be an API change, since the implementation class is not exported, though it could be a behavioral change in case anyone is checking `instanceof Closeable` (or `instanceof AutoCloseable`); and would be a first step along the way to JDK-8224095, which may or may not be appropriate for something labeled a bug fix.
This is a good question. I we made `FileURLConnection` `Closeable` or `AutoCloseable`, and called `close()` in `JarURLConnection` when the underlying connection is `(Auto)Closeable` then I believe it could warrant a CSR. On the other hand IIRC the `file:` protocol handler cannot be overridden - so I'm not sure whether we could actually have a custom underlying `URLConnection` - that would need to be carefully evaluated.
Also, as you note, instance of FileURLConnection may be returned to user code - so the fact that the URLConnection implements `Closeable`/`Autocloseable` could be observed, and would also require a CSR.
That said - we could simply expose a close() method on `FileURLConnection` without implementing `Closeable`/`Autocloseable` - and could examine that (implementing `Closeable`/`Autocloseable`) in a different PR - perhaps as a Enhencement request - rather than a bug fix.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/12871#discussion_r1198989388
More information about the net-dev
mailing list