RFR: 8272600: (test) Use native "sleep" in Basic.java [v6]

Roger Riggs rriggs at openjdk.java.net
Tue Sep 21 13:15:37 UTC 2021

On Tue, 21 Sep 2021 04:54:24 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> Roger Riggs has updated the pull request incrementally with one additional commit since the last revision:
>>   The switch from a Java child to /bin/sleep caused another test
>>   to fail on Linux.  The cleanup for a test used /usr/bin/pkill "sleep 60".
>>   A race between that cleanup and subsequent tests that used sleep 60 or 600
>>   could kill the sleep before the test of waitFor completed.
>>   Changing the test using pkill to use 59 seconds makes the test cleanup
>>   selective to the sleep spawned for that test.
>>   The test that was failing (lines 2626-2624) passes consistently.
> test/jdk/java/lang/ProcessBuilder/Basic.java line 2217:
>> 2215:                 // A unique (59s) time is needed to avoid killing other sleep processes.
>> 2216:                 final String[] cmd = { "/bin/bash", "-c", "(/bin/sleep 59)" };
>> 2217:                 final String[] cmdkill = { "/bin/bash", "-c", "(/usr/bin/pkill -f \"sleep 59\")" };
> Maybe future RFE but why do we even need pkill here when we can get the PID of the sleep process we create and kill only that process?

I thought of that too, but notice the parens "()" around that /bin/sleep; that creates and extra level of forked processes and its harder to get that pid. There probably is a way to traverse the hierarchy but I'll keep it as is for now.


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

More information about the core-libs-dev mailing list