Details
-
Bug
-
Status: Closed
-
Blocker
-
Resolution: Fixed
-
0.18.3
-
None
-
None
-
Reviewed
Description
SafeModeInfo.leave() acquires locks in an incorrect order, which causes the deadlock.
It first acquires the SafeModeInfo lock, then calls FSNamesystem.processMisReplicatedBlocks(), which requires the global FSNamesystem lock.
It should be the other way around: first FSNamesystem lock, then SafeModeInfo.