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

Jim Gish jim.gish at oracle.com
Thu Dec 20 16:32:15 UTC 2012


Hi Stuart,
Looks good to me.

Thanks,
    Jim

On 12/19/2012 08: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

-- 
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.gish at oracle.com




More information about the core-libs-dev mailing list