public void checkConfigVersion(int version) {
    if (version == configVersion) {
      return;
    }

    if (retrieveLastTime.get() > (System.currentTimeMillis() - 5000)) {
      log.debug("last check time is less than 5 seconds, need not sync");
      return;
    }

    retrieveLastTime.set(System.currentTimeMillis());

    RequestGetGroupPacket packet = new RequestGetGroupPacket(null);

    packet.setGroupName(groupName);
    packet.setConfigVersion(configVersion);

    for (int i = 0; i < configServerList.size(); i++) {
      if (i == 0 && masterFailCount > MAX_MASTER_FAILCOUNT) {
    	  masterFailCount = 0;
    	  continue;
      }
      
      String host = configServerList.get(i);
      try {
        TairClient client = factory.get(host,
            TairConstant.DEFAULT_CS_CONN_TIMEOUT, pstream);
        client.invokeAsync(packet, TairConstant.DEFAULT_CS_TIMEOUT, this);
        break;
      } catch (TairClientException e) {
        log.error("get client failed", e);
        continue;
      }
    }
  }