ConnectionManager.java 文件源码

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

项目:pbase 作者:
@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.getHostAndPort());
    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;
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号