Skip to content

HADOOP-19979. Fix four flaky tests that race with work on other threads. - #8717

Closed
joseluisll wants to merge 9 commits into
apache:trunkfrom
joseluisll:HADOOP-19979
Closed

joseluisll wants to merge 9 commits into
apache:trunkfrom
joseluisll:HADOOP-19979

Conversation

@joseluisll

@joseluisll joseluisll commented Sep 5, 2026 •

Copy link
Copy Markdown
Contributor

Description of PR

Four tests assert on, or tear down around, work owned by another thread without
waiting for it or stopping it. All four fail intermittently.

  • TestSSLHttpServerMTLS.testUntrustedClientIsRejected (common) expects an
    SSLHandshakeException, but the server's close races the client's last
    handshake flight, and when it wins the client gets a SocketException
    instead. 7 of 25 runs fail. Assert that the request is refused rather than
    which exception carries it.

  • TestLogAggregationService.testLocalFileDeletionAfterUpload (nodemanager)
    waits for each log file to go, then asserts on the parent directory with no
    wait; the container-file and app-dir deletes are independent
    FileDeletionTasks and either can run first. Hit 4 of the 60 most recent PRs,
    including unrelated ones. Wait for the directory too.

  • TestStandbyCheckpoints.testLastCheckpointTime (hdfs) waits for the active
    to hold the new image, then reads a standby's checkpoint time, which that wait
    does not cover: the standby stamps lastCheckpointTime only after
    doCheckpoint() returns, so the interval can read 0 against an expected 3000.
    Wait for that value to move. testPutFsimagePartFailed has the same shape and
    gets the same wait.

  • TestTimelineReaderHBaseDown (timelineservice-hbase-tests) starts a
    TimelineReaderServer in all five tests and never stops one, leaking the
    TimelineStorageMonitor it schedules: non-daemon threads polling a minicluster
    the test has torn down. The module builds with forkCount 0, so these
    accumulate across its eleven test classes. Stop the server in a finally, as
    every other test in the module already does.

The last one rests on TimelineReaderServer.serviceStop() actually stopping the
reader, so this PR also carries one production change: that method stopped the
web server before super.serviceStop() with no try/finally, and
HttpServer2.stop() rethrows its MultiException. The service is already
STOPPED by then, so a retry is a no-op and the storage monitor's polling
executor is left running. The stop is now in a try with super.serviceStop()
in the finally.

How was this patch tested?

Existing tests, plus one new test for the production change. Measured before and
after:

  • testLastCheckpointTime: 2 failures in 20 runs before. After, 18 runs passed
    (12 idle, 6 with the box oversubscribed), with the new wait observed rescuing
    a read that would otherwise have been 0.
  • TestTimelineReaderHBaseDown: 5/5 pass; instrumented, the class starts 9
    storage monitors and now stops all 9.
  • TestTimelineReaderServer.testChildServicesStoppedWhenWebAppStopFails is the
    regression test for the serviceStop() change: it makes the web server stop
    throw and asserts the child services still reach STOPPED. Confirmed failing
    without the finally ("FileSystemTimelineReaderImpl was left running by the
    failed stop ... expected: but was: ") and passing with it.
  • testUntrustedClientIsRejected: 30/30 under both TLSv1.2 and TLSv1.3,
    on JDK 21.

The timeline thread leak is measured, but is an unproven cause of the CI shard
failure it was found in.

For code changes:

  • Does the title of this PR start with the corresponding JIRA issue id?
  • Object storage: not applicable.
  • New dependencies: none added.
  • LICENSE/LICENSE-binary/NOTICE-binary: not applicable.

AI Tooling

Contains content generated by Claude Code.

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 2 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 22s Maven dependency ordering for branch
+1 💚 mvninstall 28m 14s trunk passed
+1 💚 compile 8m 36s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 10m 1s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 3m 34s trunk passed
+1 💚 mvnsite 1m 41s trunk passed
+1 💚 javadoc 1m 26s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 1m 23s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 4s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 18m 19s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 1m 23s the patch passed
+1 💚 compile 8m 57s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 8m 57s the patch passed
+1 💚 compile 9m 41s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 9m 41s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 11s the patch passed
+1 💚 mvnsite 1m 46s the patch passed
+1 💚 javadoc 1m 32s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 1m 32s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 3m 17s the patch passed
+1 💚 shadedclient 16m 33s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 1s hadoop-common in the patch passed.
+1 💚 unit 22m 59s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 asflicense 0m 48s The patch does not generate ASF License warnings.
175m 16s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/1/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux d93e481d787c 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 5a99f75
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/1/testReport/
Max. process+thread count 3157 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/1/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@github-actions github-actions Bot added the HDFS label Sep 6, 2026
@joseluisll joseluisll changed the title HADOOP-19979. Fix flaky TestLogAggregationService and TestSSLHttpServerMTLS. HADOOP-19979. Fix four flaky tests that race with work on other threads. Sep 6, 2026
@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 3 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 9s Maven dependency ordering for branch
+1 💚 mvninstall 27m 18s trunk passed
+1 💚 compile 8m 38s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 8m 45s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 3m 2s trunk passed
+1 💚 mvnsite 3m 0s trunk passed
+1 💚 javadoc 2m 33s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 2m 30s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 10s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 24s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 16m 46s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for patch
+1 💚 mvninstall 2m 7s the patch passed
+1 💚 compile 8m 3s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 8m 3s the patch passed
+1 💚 compile 8m 50s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 8m 50s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 1s the patch passed
+1 💚 mvnsite 3m 5s the patch passed
+1 💚 javadoc 2m 23s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 2m 30s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 5m 30s the patch passed
+1 💚 shadedclient 16m 24s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 6s hadoop-common in the patch passed.
+1 💚 unit 184m 16s hadoop-hdfs in the patch passed.
+1 💚 unit 23m 3s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 asflicense 0m 56s The patch does not generate ASF License warnings.
364m 40s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/2/artifact/out/Dockerfile
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 39e433649206 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 706d4dc
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/2/testReport/
Max. process+thread count 4823 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/2/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@pan3793 pan3793 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pre-existing, but the leak fix now relies on it: TimelineReaderServer.serviceStop() calls readerWebServer.stop() before super.serviceStop() with no try/finally. HttpServer2.stop() rethrows its MultiException, and the service is already STOPPED by then so a retry is a no-op, leaving the storage monitor running. try { readerWebServer.stop(); } finally { super.serviceStop(); } closes it; fine as a follow-up if this PR stays test-only.

TestStandbyCheckpoints.java L844: testPutFsimagePartFailed has the same shape: snnCheckpointTime2 is read right after waitForCheckpoint(cluster, 0, [23]) and asserted > snnCheckpointTime1, but nns[1] stamps lastCheckpointTime only after doCheckpoint() returns, which here is after the upload to the stopped nns[2] fails. The same wait fixes it.

@pan3793

pan3793 commented Sep 7, 2026

Copy link
Copy Markdown
Member

can some entries in .github/gha-tests/exclude-tests.txt be removed with this change?

@joseluisll

Copy link
Copy Markdown
Contributor Author

can some entries in .github/gha-tests/exclude-tests.txt be removed with this change?

Only TestLogAggregationService is listed (line 106); the other three aren't. I will create a new JIRA for GHA exclusions testing improvements and reactivation of fixed tests like TestLogAggregationService.

@joseluisll

Copy link
Copy Markdown
Contributor Author

Pre-existing, but the leak fix now relies on it: TimelineReaderServer.serviceStop() calls readerWebServer.stop() before super.serviceStop() with no try/finally. HttpServer2.stop() rethrows its MultiException, and the service is already STOPPED by then so a retry is a no-op, leaving the storage monitor running. try { readerWebServer.stop(); } finally { super.serviceStop(); } closes it; fine as a follow-up if this PR stays test-only.

TestStandbyCheckpoints.java L844: testPutFsimagePartFailed has the same shape: snnCheckpointTime2 is read right after waitForCheckpoint(cluster, 0, [23]) and asserted > snnCheckpointTime1, but nns[1] stamps lastCheckpointTime only after doCheckpoint() returns, which here is after the upload to the stopped nns[2] fails. The same wait fixes it.

TestStandbyCheckpoints.testPutFsimagePartFailed — good catch, it's the same race. Fixed here rather than deferred: nns[2] is shut down in that test, so nns[1] is the uploader and the anchor is the same one used in testLastCheckpointTime — waitForCheckpoint(cluster, 1, ImmutableList.of(23)) followed by a wait on getStandbyLastCheckpointTime() moving past the baseline.

TimelineReaderServer.serviceStop() — fixed here too, since the leak fix depends on it: try { readerWebServer.stop(); } finally { super.serviceStop(); }, so a web server that fails to stop can't leave the storage monitor's polling executor behind.

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 56s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 4 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 8s Maven dependency ordering for branch
+1 💚 mvninstall 52m 38s trunk passed
+1 💚 compile 20m 38s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 19m 57s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 5m 58s trunk passed
+1 💚 mvnsite 6m 4s trunk passed
+1 💚 javadoc 4m 19s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 4m 27s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 58s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 34m 46s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 46s Maven dependency ordering for patch
+1 💚 mvninstall 4m 23s the patch passed
+1 💚 compile 16m 51s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 16m 51s the patch passed
+1 💚 compile 18m 11s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 18m 11s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 5m 55s the patch passed
+1 💚 mvnsite 6m 2s the patch passed
+1 💚 javadoc 4m 37s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 4m 40s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 11m 40s the patch passed
+1 💚 shadedclient 35m 31s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 24m 25s hadoop-common in the patch passed.
+1 💚 unit 265m 15s hadoop-hdfs in the patch passed.
+1 💚 unit 26m 48s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 10m 29s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 1m 27s The patch does not generate ASF License warnings.
608m 31s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/3/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 5433f35cb3ed 5.15.0-185-generic #195-Ubuntu SMP Fri Jun 19 17:11:50 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / eb5900b
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/3/testReport/
Max. process+thread count 3348 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/3/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@pan3793 pan3793 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, cc @slfan1989 too

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 4 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 8s Maven dependency ordering for branch
+1 💚 mvninstall 26m 23s trunk passed
+1 💚 compile 8m 33s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 8m 47s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 2m 59s trunk passed
+1 💚 mvnsite 4m 18s trunk passed
+1 💚 javadoc 3m 35s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 39s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 11s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 12s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 15s Maven dependency ordering for patch
+1 💚 mvninstall 2m 41s the patch passed
+1 💚 compile 8m 18s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 8m 18s the patch passed
+1 💚 compile 8m 45s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 8m 45s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 0s the patch passed
+1 💚 mvnsite 4m 22s the patch passed
+1 💚 javadoc 3m 37s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 41s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 7m 26s the patch passed
+1 💚 shadedclient 16m 32s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 3s hadoop-common in the patch passed.
-1 ❌ unit 186m 52s /patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt hadoop-hdfs in the patch passed.
+1 💚 unit 1m 38s hadoop-yarn-server-timelineservice in the patch passed.
+1 💚 unit 23m 14s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 9m 11s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 0m 52s The patch does not generate ASF License warnings.
389m 32s
Reason Tests
Failed junit tests hadoop.hdfs.server.balancer.TestBalancerWithHANameNodes
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/4/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 400df088d6fb 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / d44411a
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/4/testReport/
Max. process+thread count 3992 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/4/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@joseluisll

joseluisll commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor Author

Debugging the errors reported by Yetus, I have created two subtasks for the "HADOOP-19979 Fix four tests that assert on work owned by another thread", PR-8717:

@pan3793 @slfan1989 @Hexiaoqiao I will attach PR to both subtasks. The order to solve this is to solve 19986, then solve 19987, rebase 19979 to trunk including those fixes, then solve 19979. Another alternative can be to solve and merge independently.

joseluisll and others added 6 commits September 18, 2026 16:04
…erMTLS.

Two tests assert on work that finishes on another thread, without
waiting for it. Both fail intermittently.

TestSSLHttpServerMTLS.testUntrustedClientIsRejected expects an
SSLHandshakeException. The server drops the connection as soon as it
rejects the client certificate, racing the client's last handshake
flight; when the close wins, the client fails writing it and gets a
SocketException instead. 7 of 25 runs fail. The server guarantees the
request is refused, not which exception the client sees, so assert that.

TestLogAggregationService.testLocalFileDeletionAfterUpload waits for
each log file to disappear, then asserts on the enclosing directory with
no wait. DeletionService removes files before the directories holding
them, so the assertion can run in between. Hit 4 of the 60 most recent
PRs, including unrelated ones. Wait for the directory too.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The test waits for the active to hold the new image and then reads a
standby's checkpoint time, which that wait says nothing about.

Every standby builds its own checkpoint and any of them may be the one
that uploads it, so the active holding image 23 does not mean nns[1] was
involved. The standby that did upload stamps its own lastCheckpointTime
only after doCheckpoint() has returned, while the active stamps its own
while it is still receiving the upload inside that call. Either way
nns[1] can still be reporting the previous checkpoint when the test
reads it, and the interval comes out as zero against an expected 3000.

Instrumented, a failing run reads a standby interval of 0 where a
passing one reads 4242, and the same value is 7272 five seconds later.
Waiting for it to move first turns that run into a pass. It reproduced
2 times in 20 unloaded runs, and once in 6 with the box oversubscribed.

Waiting on the standby is enough for both: the active's time is stamped
during the upload, inside the same doCheckpoint() that the standby only
stamps after, so it has always moved by then.

Also split the compound assertion so a failure reports which side missed
and by how much, rather than just expected true but was false.

Co-Authored-By: Claude <noreply@anthropic.com>
The five tests each start a TimelineReaderServer and none of them stop
it. Starting the server starts an HBaseTimelineReaderImpl, whose
serviceStart schedules a TimelineStorageMonitor; serviceStop, reached
only through the server, is the one thing that cancels it. So every test
leaves behind a scheduled executor polling healthCheck() against the
minicluster the test then tears down, and those threads are not daemons.

The module builds with forkCount 0, so its eleven test classes share the
Maven JVM and the leaks accumulate across the whole run. A failing run
of the "other" shard dumped 337 threads, among them fourteen copies of
each minicluster's regionserver chores and monitor threads stuck in
HBaseStorageMonitor.healthCheck -> locateRegionInMeta, retrying against
clusters that had already gone. The tests also set the monitor interval
to 5s rather than the 60s default, so each leaked monitor polls twelve
times as often.

Every other test in the module already stops what it starts, through
AbstractTimelineReaderHBaseTestBase, TestTimelineWriterHBaseDown or
DataGeneratorForTest. This one was the exception.

Stop the server in a finally, before the minicluster goes down so the
monitor is not still scanning while HBase is torn down underneath it.
That needs the server hoisted out of the try, and one test that had no
finally at all now gets one.

Instrumented, the class starts 9 monitors and now stops all 9.

Co-Authored-By: Claude <noreply@anthropic.com>
Review feedback on the earlier leak fix: stopping the server as the first
unguarded statement of the finally block can itself throw, and then
util.shutdownMiniCluster() never runs.  AbstractService.stop() rethrows a
serviceStop() failure as a ServiceStateException, and
TimelineStorageMonitor.stop() throws InterruptedException out of
awaitTermination if a @timeout interrupt lands there.  The base code
reached shutdownMiniCluster() unconditionally, so that traded a leaked
storage monitor for a leaked minicluster.

Use ServiceOperations.stopQuietly(), the existing null-safe helper, and
drop the local stopServer() wrapper.  The server is now built before the
try block rather than assigned inside it, so the finally can see it
without a null local; a server whose init() never ran is still safe to
stop, since uninited -> stopped is a legal transition in
ServiceStateModel.  The explanation of what the stop is for moves to the
class javadoc.

Also guard TimelineReaderServer.serviceStop() itself: super.serviceStop()
is what stops the reader and, with it, the storage monitor's polling
executor, so a readerWebServer.stop() that throws must not skip it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review feedback on the earlier testLastCheckpointTime fix.

Waiting only for the standby's lastCheckpointTime to move does not tie
the reading to the checkpoint the test cares about.  doWork() stamps the
time after every doCheckpoint() call, including the "Skipping..." early
return taken when no new transactions arrived, so the timestamp can also
advance on a period tick that checkpointed nothing.  Wait for nns[1] to
hold checkpoint 23 first.  This costs nothing at runtime: the existing
wait on nns[0] already implies the standby saved 23 locally before
uploading it.

The anchor narrows that window rather than closing it.  The image is
saved inside doCheckpoint() while the stamp happens after it returns, so
a reading taken between the two still sees the previous stamp.  The
assertion holds either way: a tick only stamps once the period has
elapsed, and the transaction threshold of 1000 is out of reach for nine
edits, so any advance at all is already at least one period wide.

The active's time cannot be inferred from the standby's either.  FSImage
does the rename that waitForCheckpoint observes and only then stamps
mostRecentCheckpointInfo, in the same saveDigestAndRenameCheckpointImage
the active runs on receiving the upload, so wait for it in its own right.

Correct the comment while here: nns[2] is transitioned to observer
before the edits, and startStandbyServices creates a StandbyCheckpointer
only when the node is not an observer, so nns[1] is the only possible
uploader.  The gap is between ImageServlet stamping the active during
the upload and nns[1] stamping itself once doCheckpoint() returns.

testPutFsimagePartFailed reads the standby's stamp straight after the
same waitForCheckpoint and races the same way; give it the same anchor.

Use the four-argument GenericTestUtils.waitFor throughout.  waitFor
throws on timeout, so an assertion placed after it is unreachable on the
failure path and its message never reaches the report.  The overload
takes a String built at call time, so the message carries the baseline
being compared against but not the value seen at timeout.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review feedback on the earlier fixes for these two tests.

TestLogAggregationService: the container files and the application
directory are removed by two independent FileDeletionTasks, both queued
on the DeletionService pool with no ordering between them, so "removes
the files before the directories" was not the mechanism -- the directory
task can run first or concurrently.  Waiting for the application
directory subsumes the four per-file waits, since the files live inside
it.

TestSSLHttpServerMTLS: how the rejection surfaces also depends on the
protocol, not only on who wins the race.  Under TLSv1.3 the handshake
completes client-side before the server has verified the certificate, so
the failure lands on the request write as a bare IOException with
neither an SSLException nor a SocketException in hand.  Assert the
refusal and exclude only ConnectException, which is the case that would
mean the server was never reached.

This is weaker than the SSLException/SocketException pair it replaces,
in one way worth naming: SocketTimeoutException extends
InterruptedIOException rather than SocketException, so a timeout used to
fail this assertion and now passes it.  The trade is still worth making,
because the assertion it replaces depended on
hadoop.ssl.enabled.protocols, and that dependence is the flakiness being
removed.  A server that wrongly accepted the untrusted certificate is
still caught, since getInputStream() would then not throw at all.

Both waits now carry their message in the four-argument
GenericTestUtils.waitFor, since waitFor throws on timeout and an
assertion after it never runs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 4 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 38s Maven dependency ordering for branch
+1 💚 mvninstall 28m 28s trunk passed
+1 💚 compile 8m 40s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 8m 39s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 3m 0s trunk passed
+1 💚 mvnsite 4m 21s trunk passed
+1 💚 javadoc 3m 39s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 40s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 50s /branch-spotbugs-hadoop-common-project_hadoop-common-warnings.html hadoop-common-project/hadoop-common in trunk has 1 extant spotbugs warnings.
-1 ❌ spotbugs 1m 5s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 5s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 2m 36s the patch passed
+1 💚 compile 8m 12s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 8m 12s the patch passed
+1 💚 compile 8m 50s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 8m 50s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 8s the patch passed
+1 💚 mvnsite 4m 13s the patch passed
+1 💚 javadoc 3m 38s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 36s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 7m 27s the patch passed
+1 💚 shadedclient 16m 19s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 10s hadoop-common in the patch passed.
+1 💚 unit 182m 28s hadoop-hdfs in the patch passed.
+1 💚 unit 1m 36s hadoop-yarn-server-timelineservice in the patch passed.
+1 💚 unit 23m 8s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 8m 58s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 0m 52s The patch does not generate ASF License warnings.
387m 20s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/5/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 5c74cfc53603 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / e422800
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/5/testReport/
Max. process+thread count 4343 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/5/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@slfan1989 slfan1989 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small documentation nit: could you update “Existing tests; test-only change”
in the PR description?

This patch also changes the production shutdown behavior in
TimelineReaderServer.serviceStop(), so it is no longer a test-only change.

@slfan1989 slfan1989 self-assigned this Sep 24, 2026
@joseluisll

Copy link
Copy Markdown
Contributor Author

Thanks for the review @slfan1989 - all three addressed in 822d705.

Small documentation nit: could you update "Existing tests; test-only change" in the PR description?

You're right, and it was understating the change rather than just mis-wording it. The description now carries the TimelineReaderServer.serviceStop() change explicitly, says why the test fix rests on it, and "How was this patch tested?" lists the new regression test instead of claiming existing tests cover everything.

The other two are answered in their threads: getResponseCode() in place of getInputStream() in TestSSLHttpServerMTLS (30/30 under both TLSv1.2 and TLSv1.3), and TestTimelineReaderServer.testChildServicesStoppedWhenWebAppStopFails for the exceptional stop path, verified to fail without the finally.

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 0s Docker mode activated.
-1 ❌ patch 0m 29s #8717 does not apply to trunk. Rebase required? Wrong Branch? See https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute for help.
Subsystem Report/Notes
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/6/console
versions git=2.34.1
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

… web server stop.

getResponseCode() rather than getInputStream() in
TestSSLHttpServerMTLS.testUntrustedClientIsRejected: getInputStream()
also throws for an HTTP error status, so it would have accepted a 403 or
a 500 reached over a handshake the server should have refused.

TimelineReaderServer.serviceStop() now stops the web server through
stopTimelineReaderWebApp(), a seam a test can make throw, and
TestTimelineReaderServer covers that path: the child services - the
reader, which owns the storage monitor's polling executor - must still
reach STOPPED.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@joseluisll

Copy link
Copy Markdown
Contributor Author

Force-pushed 56baa14 over the previous 822d705: that commit accidentally carried two build artifacts, hadoop-common-project/hadoop-common/src/site/resources/core-default.xml and configuration.xsl. A local Maven run generates them into src/site/resources/ (copies of src/main/resources/core-default.xml), they are not covered by .gitignore, and a git add -A swept them in — 4828 spurious lines.

That is almost certainly what Yetus tripped on in run 6 (ERROR: https://github.com/apache/hadoop/pull/8717 does not apply to trunk, 3 s in, no surefire reports), since the patch created a file a reused workspace would already have on disk. The GitHub Actions Build check on the same commit passed.

The PR content is unchanged from what I described in the review threads — it is back to the intended 6 files. Sorry for the noise.

@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 5 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 12s Maven dependency ordering for branch
+1 💚 mvninstall 28m 28s trunk passed
+1 💚 compile 8m 39s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 compile 8m 52s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 checkstyle 3m 2s trunk passed
+1 💚 mvnsite 4m 25s trunk passed
+1 💚 javadoc 3m 43s trunk passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 41s trunk passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 42s /branch-spotbugs-hadoop-common-project_hadoop-common-warnings.html hadoop-common-project/hadoop-common in trunk has 1 extant spotbugs warnings.
-1 ❌ spotbugs 1m 9s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 16s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for patch
+1 💚 mvninstall 2m 42s the patch passed
+1 💚 compile 8m 9s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javac 8m 9s the patch passed
+1 💚 compile 8m 58s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 javac 8m 58s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 0s the patch passed
+1 💚 mvnsite 4m 17s the patch passed
+1 💚 javadoc 3m 37s the patch passed with JDK Ubuntu-21.0.12+8-1-24.04-Ubuntu
+1 💚 javadoc 3m 41s the patch passed with JDK Ubuntu-17.0.20+8-1-24.04-Ubuntu
+1 💚 spotbugs 7m 22s the patch passed
+1 💚 shadedclient 16m 47s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 1s hadoop-common in the patch passed.
+1 💚 unit 187m 6s hadoop-hdfs in the patch passed.
+1 💚 unit 1m 38s hadoop-yarn-server-timelineservice in the patch passed.
+1 💚 unit 23m 14s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 9m 33s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 0m 56s The patch does not generate ASF License warnings.
392m 56s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/7/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 1e337f595e39 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 56baa14
Default Java Ubuntu-17.0.20+8-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12+8-1-24.04-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20+8-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/7/testReport/
Max. process+thread count 4036 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/7/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

…er finish reopening before shutdown.

testTimelineReaderRecoversAfterHBaseReturns restarts HBase and waits
until the storage monitor reports it up.  That only takes one read of
the flow activity table, so the test could shut the minicluster down
while the region server was still reopening the regions of the other
timeline tables.  Those opens then failed with
RegionServerStoppedException and the region server aborted.

An abort schedules a timer that halts the JVM once
hbase.regionserver.abort.timeout (20 minutes) passes, and the timer is
never cancelled.  This module runs with forkCount 0, so that halt took
down Maven's own JVM in a later, unrelated module.

Wait for no regions to be in transition before shutting down, and set
hbase.regionserver.abort.timeout.task to a task that does nothing, so
an abort in this in-process module is still logged but can no longer
halt the shared JVM.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WyUSFmtLG5L3cfQyz31Ddg
@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 7m 51s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 5 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 1m 59s Maven dependency ordering for branch
+1 💚 mvninstall 25m 41s trunk passed
+1 💚 compile 8m 40s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 compile 8m 48s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 checkstyle 3m 1s trunk passed
+1 💚 mvnsite 4m 16s trunk passed
+1 💚 javadoc 3m 40s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javadoc 3m 39s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 47s /branch-spotbugs-hadoop-common-project_hadoop-common-warnings.html hadoop-common-project/hadoop-common in trunk has 1 extant spotbugs warnings.
-1 ❌ spotbugs 1m 12s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 3s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 16m 25s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 2m 40s the patch passed
+1 💚 compile 9m 54s the patch passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javac 9m 54s the patch passed
+1 💚 compile 10m 4s the patch passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 javac 10m 4s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 3m 9s /results-checkstyle-root.txt root: The patch generated 1 new + 120 unchanged - 0 fixed = 121 total (was 120)
+1 💚 mvnsite 4m 19s the patch passed
+1 💚 javadoc 3m 37s the patch passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javadoc 3m 34s the patch passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 spotbugs 7m 24s the patch passed
+1 💚 shadedclient 15m 55s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 19m 0s hadoop-common in the patch passed.
-1 ❌ unit 184m 47s /patch-unit-hadoop-hdfs-project_hadoop-hdfs.txt hadoop-hdfs in the patch passed.
+1 💚 unit 1m 34s hadoop-yarn-server-timelineservice in the patch passed.
+1 💚 unit 23m 3s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 9m 16s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 0m 55s The patch does not generate ASF License warnings.
396m 11s
Reason Tests
Failed junit tests hadoop.hdfs.server.balancer.TestBalancer
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/8/artifact/out/Dockerfile
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 868f49d3e7b9 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / e8783aa
Default Java Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/8/testReport/
Max. process+thread count 3878 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/8/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

…final.

Checkstyle's FinalClass rule flagged NoOpAbortTimeoutTask: its only
constructor is private, so it can never be subclassed and should say
so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WyUSFmtLG5L3cfQyz31Ddg
@hadoop-yetus

Copy link
Copy Markdown

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 23s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 5 new or modified test files.
_ trunk Compile Tests _
+0 🆗 mvndep 2m 3s Maven dependency ordering for branch
+1 💚 mvninstall 27m 28s trunk passed
+1 💚 compile 8m 35s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 compile 8m 50s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 checkstyle 3m 1s trunk passed
+1 💚 mvnsite 4m 21s trunk passed
+1 💚 javadoc 3m 41s trunk passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javadoc 3m 42s trunk passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
-1 ❌ spotbugs 1m 49s /branch-spotbugs-hadoop-common-project_hadoop-common-warnings.html hadoop-common-project/hadoop-common in trunk has 1 extant spotbugs warnings.
-1 ❌ spotbugs 1m 16s /branch-spotbugs-hadoop-yarn-project_hadoop-yarn_hadoop-yarn-server_hadoop-yarn-server-nodemanager-warnings.html hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager in trunk has 1 extant spotbugs warnings.
+1 💚 shadedclient 16m 5s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for patch
+1 💚 mvninstall 2m 37s the patch passed
+1 💚 compile 8m 11s the patch passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javac 8m 11s the patch passed
+1 💚 compile 8m 51s the patch passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 javac 8m 51s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 3m 4s the patch passed
+1 💚 mvnsite 4m 18s the patch passed
+1 💚 javadoc 3m 32s the patch passed with JDK Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu
+1 💚 javadoc 3m 37s the patch passed with JDK Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
+1 💚 spotbugs 7m 28s the patch passed
+1 💚 shadedclient 16m 22s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 18m 35s hadoop-common in the patch passed.
+1 💚 unit 185m 19s hadoop-hdfs in the patch passed.
+1 💚 unit 1m 36s hadoop-yarn-server-timelineservice in the patch passed.
+1 💚 unit 23m 10s hadoop-yarn-server-nodemanager in the patch passed.
+1 💚 unit 9m 18s hadoop-yarn-server-timelineservice-hbase-tests in the patch passed.
+1 💚 asflicense 0m 54s The patch does not generate ASF License warnings.
388m 29s
Subsystem Report/Notes
Docker ClientAPI=1.56 ServerAPI=1.56 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/9/artifact/out/Dockerfile
GITHUB PR #8717
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 7e53a8b5ea07 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 35875e6
Default Java Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Multi-JDK versions /usr/lib/jvm/java-21-openjdk-amd64:Ubuntu-21.0.12.1+1-1-24.04.4-Ubuntu /usr/lib/jvm/java-17-openjdk-amd64:Ubuntu-17.0.20.1+1-1-24.04-Ubuntu
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/9/testReport/
Max. process+thread count 4500 (vs. ulimit of 10000)
modules C: hadoop-common-project/hadoop-common hadoop-hdfs-project/hadoop-hdfs hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-timelineservice-hbase-tests U: .
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-8717/9/console
versions git=2.43.0 maven=3.9.15 spotbugs=4.9.7
Powered by Apache Yetus 0.14.1 https://yetus.apache.org

This message was automatically generated.

@joseluisll

Copy link
Copy Markdown
Contributor Author

This PR touches several components of hadoop, so I cut it down into several JIRAs & PR's, one per component and test.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants