On Tue, 21 Feb 2023 18:59:35 GMT, Stuart Marks <sma...@openjdk.org> wrote:

>> I don't think all of those code paths ever executed. If `System.exit()` is 
>> called, regardless of the exit code, `make` treats it as an error:
>> 
>> `TEST RESULT: Failed. Unexpected exit from test [exit code: 0]`
>> 
>> I added a try/catch in `main` so that if an exception is thrown during the 
>> test, `System.exit` will be called.
>
> My bad, I was confused about the execution environments. In the old test, 
> jtreg invoked the shell script, which in turn invoked the Java test as a 
> standalone Java program. In that environment it's paramount that every code 
> path call System.exit() in order to avoid stale JVMs building up.
> 
> The new test is invoked directly by jtreg, which disallows calling 
> System.exit(). Instead, every code path needs to result in the main() method 
> completing somehow, either via a normal return or by throwing an exception 
> directly or letting one propagate from some called method. So, you need to 
> pull out the try/catch and any calls to System.exit(). Sorry about that.
> 
> If we're going to stick with a scheme where we're running separate JVM per 
> test, there's no need to unexport any RMI service. When main() returns or 
> throws an exception, jtreg will detect this and terminate the JVM because of 
> /othervm, and any exported RMI services will be destroyed at that time. Thus, 
> the finally-block in `testRmiCommunication` can simply be removed.

I removed the finally block.

-------------

PR: https://git.openjdk.org/jdk/pull/11910

Reply via email to