Skip to content

Conversation

@teamconfx
Copy link
Contributor

@teamconfx teamconfx commented Jan 22, 2026

Fix for HBASE-29804.

Summary of Changes

WorkerAssigner.java:

  • Added null checks in serverAdded() to prevent NPE
  • Added stop() method to unregister from ServerManager

SnapshotManager.java

The stop() method is called via mpmHost.stop("server shutting down.") in HMaster.stopServiceThreads(). Added:

if (verifyWorkerAssigner != null) {
  verifyWorkerAssigner.stop();
}

SplitWALManager.java (end of file)

Added new stop() method:

public void stop() {
  splitWorkerAssigner.stop();
}

HMaster.java

Added explicit call before stopProcedureExecutor():

if (this.splitWALManager != null) {
  this.splitWALManager.stop();
}

Call Hierarchy During Shutdown

HMaster.stopServiceThreads()
├── splitWALManager.stop() // HBASE-29804: Added before stopProcedureExecutor
│ └── splitWorkerAssigner.stop() // Unregisters from ServerManager
├── stopProcedureExecutor() // Sets procedureExecutor = null
│ ...
└── mpmHost.stop()
└── SnapshotManager.stop()
└── verifyWorkerAssigner.stop() // HBASE-29804: Unregisters from ServerManager

The null check in serverAdded() is the primary safety mechanism since there's a window between stopProcedureExecutor() and mpmHost.stop() where SnapshotManager's WorkerAssigner is still registered. The stop() calls ensure proper cleanup.

@teamconfx teamconfx changed the title HBase-29804: NullPointerException in WorkerAssigner.serverAdded during Master Shutdown and Restart HBASE-29804: NullPointerException in WorkerAssigner.serverAdded during Master Shutdown and Restart Jan 22, 2026
@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 29s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
_ master Compile Tests _
+1 💚 mvninstall 3m 29s master passed
+1 💚 compile 3m 37s master passed
+1 💚 checkstyle 1m 2s master passed
+1 💚 spotbugs 1m 41s master passed
+1 💚 spotless 0m 51s branch has no errors when running spotless:check.
_ Patch Compile Tests _
+1 💚 mvninstall 3m 5s the patch passed
+1 💚 compile 3m 25s the patch passed
+1 💚 javac 3m 25s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 1m 1s the patch passed
+1 💚 spotbugs 1m 46s the patch passed
+1 💚 hadoopcheck 12m 12s Patch does not cause any errors with Hadoop 3.3.6 3.4.1.
+1 💚 spotless 0m 46s patch has no errors when running spotless:check.
_ Other Tests _
+1 💚 asflicense 0m 12s The patch does not generate ASF License warnings.
42m 24s
Subsystem Report/Notes
Docker ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-7666/1/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #7666
Optional Tests dupname asflicense javac spotbugs checkstyle codespell detsecrets compile hadoopcheck hbaseanti spotless
uname Linux 9a624144d9f8 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / 7b44627
Default Java Eclipse Adoptium-17.0.11+9
Max. process+thread count 85 (vs. ulimit of 30000)
modules C: hbase-server U: hbase-server
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-7666/1/console
versions git=2.34.1 maven=3.9.8 spotbugs=4.7.3
Powered by Apache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 29s Docker mode activated.
-0 ⚠️ yetus 0m 3s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --author-ignore-list --blanks-eol-ignore-file --blanks-tabs-ignore-file --quick-hadoopcheck
_ Prechecks _
_ master Compile Tests _
+1 💚 mvninstall 3m 22s master passed
+1 💚 compile 0m 58s master passed
+1 💚 javadoc 0m 30s master passed
+1 💚 shadedjars 5m 45s branch has no errors when building our shaded downstream artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 2m 56s the patch passed
+1 💚 compile 0m 57s the patch passed
+1 💚 javac 0m 57s the patch passed
+1 💚 javadoc 0m 29s the patch passed
+1 💚 shadedjars 5m 40s patch has no errors when building our shaded downstream artifacts.
_ Other Tests _
-1 ❌ unit 235m 4s /patch-unit-hbase-server.txt hbase-server in the patch failed.
261m 32s
Subsystem Report/Notes
Docker ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-7666/1/artifact/yetus-jdk17-hadoop3-check/output/Dockerfile
GITHUB PR #7666
Optional Tests javac javadoc unit compile shadedjars
uname Linux 22f5bdc7c1c0 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision master / 7b44627
Default Java Eclipse Adoptium-17.0.11+9
Test Results https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-7666/1/testReport/
Max. process+thread count 4818 (vs. ulimit of 30000)
modules C: hbase-server U: hbase-server
Console output https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-7666/1/console
versions git=2.34.1 maven=3.9.8
Powered by Apache Yetus 0.15.0 https://yetus.apache.org

This message was automatically generated.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants