Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 594AF200D3D for ; Mon, 13 Nov 2017 08:48:48 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 57B49160BF3; Mon, 13 Nov 2017 07:48:48 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9F290160BE4 for ; Mon, 13 Nov 2017 08:48:47 +0100 (CET) Received: (qmail 31980 invoked by uid 500); 13 Nov 2017 07:48:46 -0000 Mailing-List: contact commits-help@cloudstack.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cloudstack.apache.org Delivered-To: mailing list commits@cloudstack.apache.org Received: (qmail 31971 invoked by uid 99); 13 Nov 2017 07:48:46 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 13 Nov 2017 07:48:46 +0000 From: GitBox To: commits@cloudstack.apache.org Subject: [GitHub] rhtyd commented on a change in pull request #2309: CLOUDSTACK-10132: Multiple Management Servers Support for agents Message-ID: <151055932614.21509.4741887328468497483.gitbox@gitbox.apache.org> archived-at: Mon, 13 Nov 2017 07:48:48 -0000 rhtyd commented on a change in pull request #2309: CLOUDSTACK-10132: Multiple Management Servers Support for agents URL: https://github.com/apache/cloudstack/pull/2309#discussion_r150464946 ########## File path: agent/src/com/cloud/agent/Agent.java ########## @@ -990,4 +1091,53 @@ public void doTask(final Task task) throws TaskExecutionException { } } } + + public class HostLBCheckerTask extends ManagedContextTimerTask { + + @Override + protected void runInContext() { + try { + int index = 0; + final String[] msList = _shell.getHosts(); + String preferredHost = msList[index]; + final String connectedHost = _shell.getConnectedHost(); + if (s_logger.isTraceEnabled()) { + s_logger.trace("Running host LB checker task, connected host=" + connectedHost + ", preferred host=" + preferredHost); + } + final long wait = _shell.getFailbackPollingWait(); + while (!preferredHost.equals(connectedHost)) { + if (_link != null) { + boolean isHostUp = true; + try (final Socket socket = new Socket()) { + socket.connect(new InetSocketAddress(preferredHost, _shell.getPort()), 5000); + } catch (final IOException e) { + isHostUp = false; + if (s_logger.isDebugEnabled()) { + s_logger.debug("Host: " + preferredHost + " is not reachable, trying to reconnect to next host..."); + } + } + if (isHostUp && _link != null) { + long initialTime = System.currentTimeMillis(); + while (System.currentTimeMillis() - initialTime < wait && _inProgress.get() > 0) { + s_logger.debug("Waiting for active commands to be completed"); + Thread.sleep(5000l); + } + if (_inProgress.get() == 0) { + if (s_logger.isDebugEnabled()) { + s_logger.debug("Preferred host is found to be reachable, trying to reconnect to: " + preferredHost); + } + _shell.resetHostCounter(); + reconnect(_link); Review comment: @nvazquez just so we're on the same page, when performing a reconnect after resting the host counter, `reconnect` will start getting host from the first in the list, i.e. the preferred one. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: users@infra.apache.org With regards, Apache Git Services