On Thu, 23 Nov 2023 11:37:12 GMT, Daniel Fuchs <[email protected]> wrote:
>> src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPDirectSocketFactory.java
>> line 46:
>>
>>> 44: private static final int connectTimeout = // default 1 minute
>>> 45: AccessController.doPrivileged((PrivilegedAction<Integer>) () ->
>>> 46:
>>> Integer.getInteger("sun.rmi.transport.tcp.initialConnectTimeout", 60 *
>>> 1000).intValue());
>>
>> An exception here will prevent the class from being initialized, any
>> subsequent attempts to use the class will then produce hard to diagnose
>> error. If the class is not loaded by the main thread, such exception/error
>> could be swallowed unless an uncaught exception handler was registered. I
>> would suggest implementing the logic in a static block, catch any exception
>> and revert to default behaviour (i.e. 0) if the value supplied for the
>> property is not an integer, or not a valid integer, etc...
>
> IIRC, the default agent uses / may use its own socket factories - are we
> still coming here even with those factories?
> An exception here will prevent the class from being initialized...
Maybe we can break it, but this new property is following the same pattern I
think as the neighbouring file
src/java.rmi/share/classes/sun/rmi/transport/tcp/TCPChannel.java when it reads
the system props. I see Integer.getInteger handles the obvious Exceptions, so
specifying a strange value does not immediately break us.
If there's more protection needed then we have various other places to apply it
that might need separate follow-up if you think there's a case?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16771#discussion_r1403331157