RFR: 7903188: Log time spent waiting to acquire exclusive access lock [v2]

Jaikiran Pai jpai at openjdk.org
Thu Jun 20 10:45:51 UTC 2024


On Thu, 20 Jun 2024 10:42:09 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> Can I please get a review of this change which proposes to implement the enhancement requested in https://bugs.openjdk.org/browse/CODETOOLS-7903188?
>> 
>> jtreg supports the ability to sequentially execute tests, instead of concurrently, for tests belonging to a pre-configured `exclusiveAccess.dirs` directory. The `MainAction` and `ShellAction` before launching the test, first acquire a lock. The lock acquisition can be time consuming and depends on how long an already running test from that directory takes to complete. This lock acquisiton time isn't reported anywhere in the jtreg action's `section` in the report. Because of this, it sometimes makes it difficult to determine where the unaccounted time is spent.
>> 
>> The change in this PR prints out how long it took to acquire a exclusive access before launching the test. It's only printed if the test was configured with exclusiveAccess. The reported message will look like:
>> 
>> 
>> #section:main
>> ----------messages:(7/230)----------
>> command: main Test
>> reason: User specified action: run main Test 
>> started: Wed Jun 19 14:45:21 IST 2024
>> exclusiveAccess wait time (seconds): 20.289
>> Mode: othervm
>> finished: Wed Jun 19 14:45:21 IST 2024
>> elapsed time (seconds): 0.123
>> 
>> 
>> An existing self test has been updated to verify this change. All existing tests continue to pass with this change.
>
> Jaikiran Pai has updated the pull request incrementally with one additional commit since the last revision:
> 
>   A more cleaner fix - let the Action class dealing with acquiring and releasing locks and printing the wait duration

src/share/classes/com/sun/javatest/regtest/config/RegressionTestSuite.java line 226:

> 224:      */
> 225:     @Deprecated
> 226:     public boolean needsExclusiveAccess(TestDescription td) throws TestSuite.Fault {

This already existing `throws TestSuite.Fault` is actually unnecessary because nothing in that logic throws that checked exception. However, I decided not to change this method signature since that can cause compatibility issue - I'm guessing this `com.sun.javatest.regtest.config.RegressionTestSuite` is a public API?
That's why I decided to introduce a new `isExclusiveAccessRequired` method which doesn't throw the checked exception.

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

PR Review Comment: https://git.openjdk.org/jtreg/pull/208#discussion_r1647373119


More information about the jtreg-dev mailing list