@Override
 public void commit() {
   final int initCount = target.size();
   if (initCount <= 0) {
     ByteBuffer buffer = source.allocate();
     buffer = source.writeToBuffer(OkPacket.OK, buffer);
     source.write(buffer);
     return;
   }
   commitExecutor.commit(null, this, initCount);
 }
  @Override
  public void terminate() {
    // 终止所有正在执行的任务
    kill();

    // 等待所有任务结束,包括还未执行的,执行中的,执行完的。
    try {
      singleNodeExecutor.terminate();
      // multiNodeExecutor.terminate();
      commitExecutor.terminate();
      rollbackExecutor.terminate();
    } catch (InterruptedException e) {
      for (RouteResultsetNode rrn : target.keySet()) {
        Channel c = target.remove(rrn);
        if (c != null) {
          //    c.close();
        }
      }
      LOGGER.warn("termination interrupted: " + source, e);
    }

    // 清理绑定的资源
    clear(false);
  }