On Thu, 23 Nov 2023 11:37:12 GMT, Daniel Fuchs <dfu...@openjdk.org> 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

Reply via email to