RFR: 8303525: Refactor/cleanup open/test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java [v2]
Mark Sheppard
msheppar at openjdk.org
Wed Oct 18 20:13:50 UTC 2023
On Wed, 18 Oct 2023 18:20:49 GMT, Stuart Marks <smarks at openjdk.org> wrote:
>> test/jdk/javax/rmi/ssl/SSLSocketParametersTest.java line 77:
>>
>>> 75:
>>> 76: public void testRmiCommunication(RMIServerSocketFactory serverFactory) throws Exception {
>>> 77: Hello stub = (Hello)UnicastRemoteObject.exportObject(new HelloImpl(),
>>
>> by not retaining an explicit reference to the test rmi server, you are exposing it to potentially being GCed during the test execution and potentially prior to client invocation... this might sound fanciful but this has been observed in a few scenarios due to the GC changes ... althought it doesn't seem to have been an issue, the structure of the test appears to be inherently racy, with the potential for the client invocation to getting ahead of the server with the rmi server launching background threads.
>> Anyways, caution on not retaining a sever reference and GC interference.
>
> Yes, this can still happen even if the reference to the server object is held in a local variable. It's unlikely to occur, but to prevent any possibility of unexpected GC, you need to use reachabilityFence. Something like:
>
> HelloImpl server = new HelloImpl();
> try {
> // ... use server ...
> } finally {
> Reference.reachabilityFence(server);
> }
>
> I would go ahead and add this out of an abundance of caution.
yes, good advice on reachability fence ... added some -Xcomp args to test runs and no failures detected
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/14932#discussion_r1364479317
More information about the core-libs-dev
mailing list