Details
-
Sub-task
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.1.0, 2.0.2
-
None
-
None
-
Reviewed
Description
Good news! stack, Apache9, I may find the root cause of mysterious ‘Corrupted procedure’ or some procedures disappeared after master restarts(happens during ITBLL).
This is because during master restarts, we load procedures from the log, and builds the 'holdingCleanupTracker' according each log's tracker. We may mark a procedure in the oldest log as deleted if one log doesn't contain the procedure. This is Inappropriate since one log will not contain info of the log if this procedure was not updated during the time. We can only delete the procedure only if it is not in the global tracker, which have the whole picture.
trackerNode = tracker.lookupClosestNode(trackerNode, procId); if (trackerNode == null || !trackerNode.contains(procId) || trackerNode.isModified(procId)) { // the procedure was removed or modified node.delete(procId); }
A test case(testProcedureShouldNotCleanOnLoad) shows cleanly how the corruption happened in the patch.
Attachments
Attachments
Issue Links
- relates to
-
HBASE-21363 Rewrite the buildingHoldCleanupTracker method in WALProcedureStore
- Resolved
-
HBASE-18152 [AMv2] Corrupt Procedure WAL file; procedure data stored out of order
- Resolved