docs: public void notifyNewLeaderOfTxnDoneIfNeeded() {
          //return quickly to avoid performance hit
          if (m_newLeaderHSID == Long.MIN_VALUE ) {
              return;
          }
  
          SpScheduler scheduler = (SpScheduler)m_scheduler;
          if (!scheduler.txnDoneBeforeCheckPoint()) {
              return;
          }
  
          MigratePartitionLeaderMessage message = new MigratePartitionLeaderMessage(m_hsId, m_newLeaderHSID);
          send(message.getNewLeaderHSID(), message);
  
          //reset status on the old partition leader
          m_migratePartitionLeaderStatus = MigratePartitionLeaderStatus.NONE;
          m_repairLog.setLeaderState(false);
          tmLog.info("MigratePartitionLeader previous leader " + CoreUtils.hsIdToString(m_hsId) + " notifies new leader " +
                  CoreUtils.hsIdToString(m_newLeaderHSID) + " transactions are drained." + " status:" + m_migratePartitionLeaderStatus);
          m_newLeaderHSID = Long.MIN_VALUE;
      }