@Override
  protected void serializeStateData(ProcedureStateSerializer serializer) throws IOException {
    MasterProcedureProtos.SplitWALRemoteData.Builder builder =
      MasterProcedureProtos.SplitWALRemoteData.newBuilder();
    builder.setWalPath(walPath).setWorker(ProtobufUtil.toServerName(targetServer))
      .setCrashedServer(ProtobufUtil.toServerName(crashedServer)).setState(state);
    if (this.remoteError != null) {
      ErrorHandlingProtos.ForeignExceptionMessage fem =
        ForeignExceptionUtil.toProtoForeignException(remoteError);
      builder.setError(fem);
    }
    serializer.serialize(builder.build());
  }
A remote procedure which is used to send split WAL request to region server. It will return null
if the task succeeded or return a DoNotRetryIOException. {@link SplitWALProcedure} will help
handle the situation that encounters DoNotRetryIOException. Otherwise it will retry until
success.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/SplitWALRemoteProcedure.java