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 4ACF8200C72 for ; Fri, 12 May 2017 14:41:14 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 4622F160BC8; Fri, 12 May 2017 12:41:14 +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 8984C160BA3 for ; Fri, 12 May 2017 14:41:13 +0200 (CEST) Received: (qmail 69386 invoked by uid 500); 12 May 2017 12:41:12 -0000 Mailing-List: contact commits-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@qpid.apache.org Delivered-To: mailing list commits@qpid.apache.org Received: (qmail 69377 invoked by uid 99); 12 May 2017 12:41:12 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 May 2017 12:41:12 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A3123DFE34; Fri, 12 May 2017 12:41:12 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: orudyy@apache.org To: commits@qpid.apache.org Date: Fri, 12 May 2017 12:41:12 -0000 Message-Id: <3b45f6a57b194035974abde1989d4b8f@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/2] qpid-broker-j git commit: QPID-7774: [AMQP 0-8..0-91] Ensure failover latch is nulled on all paths following a successful failover archived-at: Fri, 12 May 2017 12:41:14 -0000 Repository: qpid-broker-j Updated Branches: refs/heads/6.1.x 9493668e8 -> 4748dbc99 QPID-7774: [AMQP 0-8..0-91] Ensure failover latch is nulled on all paths following a successful failover Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/28236751 Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/28236751 Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/28236751 Branch: refs/heads/6.1.x Commit: 28236751e5c4edcc00532fe33a1338b36308aed3 Parents: 9493668 Author: Keith Wall Authored: Thu May 11 15:23:27 2017 +0100 Committer: Alex Rudyy Committed: Fri May 12 13:14:20 2017 +0100 ---------------------------------------------------------------------- .../org/apache/qpid/client/AMQConnection.java | 1 + .../apache/qpid/client/AMQProtocolHandler.java | 28 +++++++++++++------- .../org/apache/qpid/client/FailoverHandler.java | 5 +--- 3 files changed, 21 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/28236751/client/src/main/java/org/apache/qpid/client/AMQConnection.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/qpid/client/AMQConnection.java b/client/src/main/java/org/apache/qpid/client/AMQConnection.java index b650c55..4207746 100644 --- a/client/src/main/java/org/apache/qpid/client/AMQConnection.java +++ b/client/src/main/java/org/apache/qpid/client/AMQConnection.java @@ -43,6 +43,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; import java.util.concurrent.RejectedExecutionException; import java.util.concurrent.ScheduledExecutorService; http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/28236751/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java b/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java index bff7ace..f68d1a9 100644 --- a/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java +++ b/client/src/main/java/org/apache/qpid/client/AMQProtocolHandler.java @@ -277,14 +277,24 @@ public class AMQProtocolHandler implements ExceptionHandlingByteBufferReceiver, // the fail over. setFailoverLatch(new CountDownLatch(1)); - // We wake up listeners. If they can handle failover, they will extend the - // FailoverRetrySupport class and will in turn block on the latch until failover - // has completed before retrying the operation. - notifyFailoverStarting(); - - getConnection().doWithAllLocks(_failoverHandler); + try + { + // We wake up listeners. If they can handle failover, they will extend the + // FailoverRetrySupport class and will in turn block on the latch until failover + // has completed before retrying the operation. + notifyFailoverStarting(); - getFailoverLatch().countDown(); + getConnection().doWithAllLocks(_failoverHandler); + } + finally + { + CountDownLatch failoverLatch = getFailoverLatch(); + if (failoverLatch != null) + { + failoverLatch.countDown(); + setFailoverLatch(null); + } + } } }); } @@ -731,9 +741,9 @@ public class AMQProtocolHandler implements ExceptionHandlingByteBufferReceiver, { if (_failoverLatch != null) { - if(!_failoverLatch.await(MAXIMUM_STATE_WAIT_TIME, TimeUnit.MILLISECONDS)) + if (!_failoverLatch.await(MAXIMUM_STATE_WAIT_TIME, TimeUnit.MILLISECONDS)) { - + _logger.debug("Timed out after waiting {}ms for failover to complete.", MAXIMUM_STATE_WAIT_TIME); } } } http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/28236751/client/src/main/java/org/apache/qpid/client/FailoverHandler.java ---------------------------------------------------------------------- diff --git a/client/src/main/java/org/apache/qpid/client/FailoverHandler.java b/client/src/main/java/org/apache/qpid/client/FailoverHandler.java index bc89dc6..d90115e 100644 --- a/client/src/main/java/org/apache/qpid/client/FailoverHandler.java +++ b/client/src/main/java/org/apache/qpid/client/FailoverHandler.java @@ -52,6 +52,7 @@ public class FailoverHandler implements Runnable /** * Performs the failover procedure. */ + @Override public void run() { AMQConnection connection = _amqProtocolHandler.getConnection(); @@ -82,10 +83,6 @@ public class FailoverHandler implements Runnable AMQDisconnectedException cause = new AMQDisconnectedException("Failover was vetoed by client", null); connection.closed(cause); - - _amqProtocolHandler.getFailoverLatch().countDown(); - _amqProtocolHandler.setFailoverLatch(null); - return; } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org For additional commands, e-mail: commits-help@qpid.apache.org