RFR: 8005290: remove -showversion from RMI test library subprocess mechanism (original) (raw)

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.

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/viewbug.do?bugid=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