RFR: 8005290: remove -showversion from RMI test library subprocess mechanism

Stuart Marks stuart.marks at oracle.com
Fri Dec 21 06:33:46 UTC 2012


Ah, good suggestion. I've cleaned up the imports in JavaVM.java and 
StreamPipe.java.

s'marks

On 12/20/12 10:36 AM, Darryl Mocek wrote:
> Hi Stuart,
>
>    the changes look fine to me.  The only comments I have are to remove the
> java.util.Properties import from JavaVM and possibly to use explicit imports
> instead of * imports in JavaVM and StreamPipe.
>
> Darryl
>
> On 12/19/2012 05:11 PM, Stuart Marks wrote:
>> Hi all,
>>
>> Please review the fix [1] for bug 8005290 [2].
>>
>> [1] http://cr.openjdk.java.net/~smarks/reviews/8005290/webrev.0/
>>
>> [2] http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8005290
>>
>> I just filed this bug, so it hasn't made it to the public website yet. The
>> salient text from the bug report is as follows:
>>
>> ------------------------------------------------------------
>> The RMI test library (jdk/test/java/rmi/testlibrary) has a convenience API
>> (the JavaVM class) for launching a JVM subprocess. When starting the
>> subprocess, it adds the -showversion option to the JVM command line and waits
>> for the version output to arrive from the subprocess before returning to the
>> caller. This is intended to avoid race conditions where the test might try to
>> contact the subprocess before it's fully initialized.
>>
>> It turns out this doesn't really work and it's also unnecessary.
>>
>> The reason it doesn't really work is that the version string is emitted when
>> the JVM subprocess has mostly started up, but it hasn't yet executed any user
>> code. Even after the version string has been emitted, the caller may still
>> have to wait and retry before successfully contacting a service exported by
>> the subprocess. The current code returns after two seconds, even if the
>> version string hasn't been received from the subprocess. So the caller has to
>> wait and potentially retry anyway. Since the callers have to do this anyway,
>> having the library wait for the version string isn't helpful.
>>
>> Other library code (e.g., RMID) starts the subprocess and waits until a
>> particular RMI service is ready, so the -showversion mechanism is redundant
>> in that case. Finally, many tests start the subprocess and wait until it
>> finishes, so they don't need the -showversion mechanism either.
>>
>> Finally, the -showversion mechanism adds a lot of complexity, as it has to
>> interpose between the subprocess output stream and the caller, so we're
>> better off just removing it. All RMI tests continue to pass even with this
>> mechanism removed.
>> ------------------------------------------------------------
>>
>> This is basically just test cleanup (no library code changes) to clear the
>> way for future test enhancements to improve performance and reliability.
>>
>> Thanks,
>>
>> s'marks
>



More information about the core-libs-dev mailing list