protected void kill() {
   boolean hooked = false;
   AtomicInteger count = null;
   Map<RouteResultsetNode, BackendConnection> killees = null;
   for (RouteResultsetNode node : target.keySet()) {
     BackendConnection c = target.get(node);
     if (c != null) {
       if (!hooked) {
         hooked = true;
         killees = new HashMap<RouteResultsetNode, BackendConnection>();
         count = new AtomicInteger(0);
       }
       killees.put(node, c);
       count.incrementAndGet();
     }
   }
   if (hooked) {
     ConnectionMeta conMeta = new ConnectionMeta(null, null, -1, true);
     for (Entry<RouteResultsetNode, BackendConnection> en : killees.entrySet()) {
       KillConnectionHandler kill = new KillConnectionHandler(en.getValue(), this);
       MycatConfig conf = MycatSystem.getInstance().getConfig();
       PhysicalDBNode dn = conf.getDataNodes().get(en.getKey().getName());
       try {
         dn.getConnectionFromSameSource(conMeta, en.getValue(), kill, en.getKey());
       } catch (Exception e) {
         LOGGER.error("get killer connection failed for " + en.getKey(), e);
         kill.connectionError(e, null);
       }
     }
   }
 }
Beispiel #2
0
 public static void dataNode(ManagerConnection c, String name) {
   PhysicalDBNode dn = MycatServer.getInstance().getConfig().getDataNodes().get(name);
   PhysicalDBPool ds = null;
   if (dn != null && ((ds = dn.getDbPool()) != null)) {
     // ds.getSqlRecorder().clear();
     c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
   } else {
     c.writeErrMessage(ErrorCode.ER_YES, "Invalid DataNode:" + name);
   }
 }