code: public boolean check() {
          String path = ZookeeperPathUtils.getDestinationClientRunning(this.destination, clientData.getClientId());
          try {
              byte[] bytes = zkClient.readData(path);
              ClientRunningData eventData = JsonUtils.unmarshalFromByte(bytes, ClientRunningData.class);
              activeData = eventData;// 更新下为最新值
              // 检查下nid是否为自己
              boolean result = isMine(activeData.getAddress());
              if (!result) {
                  logger.warn("canal is running in [{}] , but not in [{}]",
                      activeData.getAddress(),
                      clientData.getAddress());
              }
              return result;
          } catch (ZkNoNodeException e) {
              logger.warn("canal is not run any in node");
              return false;
          } catch (ZkInterruptedException e) {
              logger.warn("canal check is interrupt");
              Thread.interrupted();// 清除interrupt标记
              return check();
          } catch (ZkException e) {
              logger.warn("canal check is failed");
              return false;
          }
      }
docs: 检查当前的状态