code: public Map<Integer, ThriftClientPool<T>> setServices(List<ServiceInfo> services) {
          synchronized (poolMap) {
              logger.info("reinit pool using new serviceList: {}", services);
              Map<Integer, ThriftClientPool<T>> previousMap = poolMap;
  
              init(services);
              return previousMap;
          }
      }
docs: set new services for this pool(TODO may throw
  {@link IndexOutOfBoundsException} at {@link #getShardedPool(Object)}
  in heavy load environment)
  
  @param services
  @return previous pool, you must release each pool(for example wait
  some seconds while no access to pool)