HBASE-29804: NullPointerException in WorkerAssigner.serverAdded during Master Shutdown and Restart#7666
Open
teamconfx wants to merge 1 commit intoapache:masterfrom
Open
HBASE-29804: NullPointerException in WorkerAssigner.serverAdded during Master Shutdown and Restart#7666teamconfx wants to merge 1 commit intoapache:masterfrom
teamconfx wants to merge 1 commit intoapache:masterfrom
Conversation
|
🎊 +1 overall
This message was automatically generated. |
|
💔 -1 overall
This message was automatically generated. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fix for HBASE-29804.
Summary of Changes
WorkerAssigner.java:
SnapshotManager.java
The stop() method is called via mpmHost.stop("server shutting down.") in HMaster.stopServiceThreads(). Added:
SplitWALManager.java (end of file)
Added new stop() method:
HMaster.java
Added explicit call before stopProcedureExecutor():
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.