@Override
  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {
    final LockProcedureData.Builder builder = LockProcedureData.newBuilder()
      .setLockType(LockServiceProtos.LockType.valueOf(type.name())).setDescription(description);
    if (regionInfos != null) {
      for (int i = 0; i < regionInfos.length; ++i) {
        builder.addRegionInfo(ProtobufUtil.toRegionInfo(regionInfos[i]));
      }
    } else if (namespace != null) {
      builder.setNamespace(namespace);
    } else if (tableName != null) {
      builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
    }
    if (lockAcquireLatch != null) {
      builder.setIsMasterLock(true);
    }
    serializer.serialize(builder.build());
  }
Re run the procedure after every timeout to write new WAL entries so we don't hold back old
WALs.
@return false, so procedure framework doesn't mark this procedure as failure.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/locking/LockProcedure.java