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

Darryl Mocek darryl.mocek at oracle.com
Thu Dec 20 18:36:49 UTC 2012

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.


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