You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/07/10 20:20:00 UTC

[jira] [Updated] (HDDS-15822) Fix flaky TestStorageVolumeChecker#testNumScansSkipped

     [ https://issues.apache.org/jira/browse/HDDS-15822?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

ASF GitHub Bot updated HDDS-15822:
----------------------------------
    Labels: pull-request-available  (was: )

> Fix flaky TestStorageVolumeChecker#testNumScansSkipped
> ------------------------------------------------------
>
>                 Key: HDDS-15822
>                 URL: https://issues.apache.org/jira/browse/HDDS-15822
>             Project: Apache Ozone
>          Issue Type: Bug
>          Components: test
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>              Labels: pull-request-available
>
> Generated-by: Claude Code (Opus 4.8)
> {{TestStorageVolumeChecker#testNumScansSkipped}} fails intermittently with {{expected: <1> but was: <2>}} (seen in upstream CI on 2026-07-09).
> The test uses the real {{ThrottledAsyncChecker}}, which runs volume checks on a background executor and wraps them with {{Futures.withTimeout}}. The callback that records each check's {{completedAt}} runs on those executor threads. On a busy JVM this races with the test's {{timer.advance()}}, so a check's {{completedAt}} is occasionally recorded against a later timer value. On the third {{checkAllVolumes}} call the affected volume then looks like it is still within {{minMsBetweenChecks}} and is skipped, which inflates {{numScansSkipped}} from 1 to 2.
> Fix: make the check synchronous for this test by installing a {{ThrottledAsyncChecker}} backed by a direct executor service, and set {{diskCheckTimeout}} to zero so no {{Futures.withTimeout}} wrapper is created. {{completedChecks}} is then fully populated before {{checkAllVolumes}} returns, which removes the race. The throttling gap ({{getDiskCheckMinGap}}) is unchanged, so the test still verifies skip counting, and the asynchronous per volume timeout path stays covered by the dedicated test added in HDDS-14871. The change is limited to the test.
> Testing: ran {{testNumScansSkipped}} 100 times locally with 0 failures. Ran the full {{TestStorageVolumeChecker}} class (20 tests) multiple times with no failures. Checkstyle clean.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org