Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
Description
FsEditlogLoader will call FSNameSystem#triggerRollbackCheckpoint() when processing the rollback marker, which looks like the following:
void triggerRollbackCheckpoint() { if (standbyCheckpointer != null) { standbyCheckpointer.triggerRollbackCheckpoint(); } }
There is a race condition where standbyCheckpointer can be null, because in the constructor of the NameNode, the initialize() method eventually starts the edit log tailer, but the standby checkpointer is created in HAState#enterState(). Therefore, the checkpointer might not be able to checkpoint when it sees the marker.