RFR of JDK-8029360: java/rmi/transport/dgcDeadLock/DGCDeadLock.java failing intermittently
Hamlin Li
huaming.li at oracle.com
Wed Dec 21 01:36:07 UTC 2016
Hi Daniel,
Thank you for reviewing, modified as you suggested and pushed the code.
-Hamlin
On 2016/12/20 18:35, Daniel Fuchs wrote:
> Hi Hamlin,
>
> DGCDeadLock.java:
>
> 61 public static boolean finished = false;
> 62 static DGCDeadLock test = new DGCDeadLock();
> 63 static int registryPort = -1;
>
> 1. 'finished' and 'registryPort' should be volatile since they are
> written and read by multiple threads.
>
> 2. 'test' should be final.
>
> The rest looks reasonable to me.
>
> -- daniel
>
> On 20/12/16 07:10, Hamlin Li wrote:
>> Would you please review the below patch?
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8029360
>> webrev: http://cr.openjdk.java.net/~mli/8029360/webrev.00/
>>
>> * For the "connection refused" and "port in use" issue:
>> Root Cause: consider reproducing scenario,
>> 1. gets free port A (in main process).
>> 2. interloper occupies port A.
>> 3. starts registry subprocess and try to listen on port A (in
>> subprocess).
>> 4. registry fails with "port in use" (in subprocess).
>> 5. interloper releases port A.
>> 6. Naming.lookup on port A, it fails with "connection refused"
>> Solution:
>> To fix the issue, use REGISTRY to start registry process on
>> ephemeral port and pass the port back to main process.
>>
>> * For another issue, log is short, can only guess that wait time is not
>> long enough on busy machine, so fix the issue by scaling the wait time
>> and using REGISTRY to synchronize.
>>
>>
>> Thank you
>> -Hamlin
>
More information about the core-libs-dev
mailing list