WAL fencing for the WALProcedureStore is a bit different than the fencing done for region server WALs.
In case of this sequence of events, the WAL is not fenced (especially with
- master1 creates WAL with logId = 1: /MasterProcWALs/state-00000000000000000001.log
- master2 takes over, fences logId = 1 with recoverLease(), creates logId=2: /MasterProcWALs/state-00000000000000000002.log.
- master2 writes some procedures and rolls the logId2, and creates logId = 3, and deletes logId = 2.
- master1 now tries to write a procedure, gets lease mismatch, rolls the log from 1 to 2, and succeeds the write since it can write logId = 2 (master2 uses logId=3 now).