public void complete(long procId, long initiatingMasterActiveTime, Throwable error) {
    RemoteProcedureResult.Builder builder = RemoteProcedureResult.newBuilder().setProcId(procId)
      .setInitiatingMasterActiveTime(initiatingMasterActiveTime);
    if (error != null) {
      LOG.debug("Failed to complete execution of pid={}", procId, error);
      builder.setStatus(RemoteProcedureResult.Status.ERROR).setError(
        ForeignExceptionUtil.toProtoForeignException(server.getServerName().toString(), error));
    } else {
      LOG.debug("Successfully complete execution of pid={}", procId);
      builder.setStatus(RemoteProcedureResult.Status.SUCCESS);
    }
    results.add(builder.build());
  }
A thread which calls {@code reportProcedureDone} to tell master the result of a remote procedure.
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.java