protected void tryMakingNewConnection()

in zuul-core/src/main/java/com/netflix/zuul/netty/connectionpool/PerServerConnectionPool.java [238:277]


    protected void tryMakingNewConnection(
            EventLoop eventLoop,
            Promise<PooledConnection> promise,
            CurrentPassport passport,
            AtomicReference<? super InetAddress> selectedHostAddr) {

        if (!isWithinConnectionLimit(promise)) {
            return;
        }

        try {
            createNewConnCounter.increment();
            connCreationsInProgress.incrementAndGet();
            passport.add(PassportState.ORIGIN_CH_CONNECTING);

            selectedHostAddr.set(getSelectedHostString(serverAddr));

            ChannelFuture cf = connectToServer(eventLoop, passport, serverAddr);

            if (cf.isDone()) {
                handleConnectCompletion(cf, promise, passport);
            } else {
                cf.addListener(future -> {
                    try {
                        handleConnectCompletion((ChannelFuture) future, promise, passport);
                    } catch (Throwable e) {
                        if (!promise.isDone()) {
                            promise.setFailure(e);
                        }
                        LOG.warn(
                                "Error creating new connection! origin={}, host={}",
                                config.getOriginName(),
                                server.getServerId());
                    }
                });
            }
        } catch (Throwable e) {
            promise.setFailure(e);
        }
    }