docs: public void offerChannel(ChannelWrapper channel) {
          String nodeGroup = channel.getNodeGroup();
          NodeType nodeType = channel.getNodeType();
          List<ChannelWrapper> channels = getChannels(nodeGroup, nodeType);
          if (channels == null) {
              channels = new ArrayList<ChannelWrapper>();
              if (nodeType == NodeType.JOB_CLIENT) {
                  clientChannelMap.put(nodeGroup, channels);
              } else if (nodeType == NodeType.TASK_TRACKER) {
                  taskTrackerChannelMap.put(nodeGroup, channels);
                  // 如果在离线列表中，那么移除
                  if (offlineTaskTrackerMap.containsKey(channel.getIdentity())) {
                      offlineTaskTrackerMap.remove(channel.getIdentity());
                  }
              }
              channels.add(channel);
              LOGGER.info("new connected channel={}", channel);
          } else {
              if (!channels.contains(channel)) {
                  channels.add(channel);
                  LOGGER.info("new connected channel={}", channel);
              }
          }
      }