On Tue, 23 Feb 2021 02:55:01 GMT, Chris Plummer <[email protected]> wrote:

>> Hi, Please review
>> 
>>  When debugging for other test case which uses jcmd to attach LingeredApp 
>> process, found there is no error information logged when the app started 
>> with function 'startAppExactJvmOpts' exits due to some reason. This is not 
>> convenient for trace what is the app failure.
>>  This simple fix for adding finishApp to print out error information when 
>> LingeredApp could not start with startAppExactJvmOpts, this is similar to 
>> startApp.
>> 
>> Tests: This is a simple fix and done tests with test/jdk/sun/tools/jinfo 
>> which uses the function startAppExactJvmOpts to create LingeredApp, also the 
>> test case in debugging, which indeed captured the error message upon start 
>> error.
>> 
>> Thanks
>> Yumin
>
> test/lib/jdk/test/lib/apps/LingeredApp.java line 419:
> 
>> 417:             theApp.waitAppReady();
>> 418:         } catch (Exception ex) {
>> 419:             theApp.finishApp();
> 
> I'm worried about the output appearing twice in some tests:
> 
>         try {
>             ...
>             theApp = new LingeredAppWithLargeArray();
>             LingeredApp.startAppExactJvmOpts(theApp, vmArgs);
>             attachAndDump(heapDumpFileName, theApp.getPid());
>         } finally {
>             LingeredApp.stopApp(theApp);
>             heapDumpFile.delete();
>         }
> 
> So we always call `stopApp()`:
> 
>     public void stopApp() throws IOException {
>            ...
>            if (appProcess != null) {
>            ...
>             finishApp();
>            ...
>         }
>     }
> 
> 
> Which means we always call `finishApp()`, which means we always print the 
> output. With your changes won't we see the output twice when there is an 
> exception?
> 
> In the CR it looks like `LingeredApp.startAppExactJvmOpts()` is being call 
> from `JCmdTest.java`. I don't see this test. Is it under development? Does it 
> need a `stopApp()` call?

It seems error prone to have to call finishApp() manually in order to see the 
error log. Since LingeredApp.startApp calls finishApp() on exceptions, 
shouldn't startAppExactJvmOpts do the same thing?

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

PR: https://git.openjdk.java.net/jdk/pull/2679

Reply via email to