ConnectionManager.java 文件源码

java
阅读 35 收藏 0 点赞 0 评论 0

项目:ditb 作者:
@Override
public ClientService.BlockingInterface getClient(final ServerName sn)
throws IOException {
  if (isDeadServer(sn)) {
    throw new RegionServerStoppedException(sn + " is dead.");
  }
  String key = getStubKey(ClientService.BlockingInterface.class.getName(), sn.getHostname(),
      sn.getPort(), this.hostnamesCanChange);
  this.connectionLock.putIfAbsent(key, key);
  ClientService.BlockingInterface stub = null;
  synchronized (this.connectionLock.get(key)) {
    stub = (ClientService.BlockingInterface)this.stubs.get(key);
    if (stub == null) {
      BlockingRpcChannel channel =
          this.rpcClient.createBlockingRpcChannel(sn, user, rpcTimeout);
      stub = ClientService.newBlockingStub(channel);
      // In old days, after getting stub/proxy, we'd make a call.  We are not doing that here.
      // Just fail on first actual call rather than in here on setup.
      this.stubs.put(key, stub);
    }
  }
  return stub;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号