You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2017/09/07 16:17:48 UTC
[12/14] activemq git commit: [AMQ-6792] fire the failover exception
handler before stop to ensure blocked write does not block stop request
[AMQ-6792] fire the failover exception handler before stop to ensure blocked write does not block stop request
(cherry picked from commit 63f0b7e20d56837b4f159e83594a4e4fb906cd4a)
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/0924f983
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/0924f983
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/0924f983
Branch: refs/heads/activemq-5.15.x
Commit: 0924f983f874179af1aad2839fcdef53ef530bed
Parents: f7185b9
Author: gtully <ga...@gmail.com>
Authored: Fri Aug 11 12:58:51 2017 +0100
Committer: Timothy Bish <ta...@gmail.com>
Committed: Thu Sep 7 12:14:23 2017 -0400
----------------------------------------------------------------------
.../activemq/network/DemandForwardingBridgeSupport.java | 12 ++++++++++++
1 file changed, 12 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/0924f983/activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java b/activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
index 5070266..879ab39 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/network/DemandForwardingBridgeSupport.java
@@ -93,6 +93,7 @@ import org.apache.activemq.transport.ResponseCallback;
import org.apache.activemq.transport.Transport;
import org.apache.activemq.transport.TransportDisposedIOException;
import org.apache.activemq.transport.TransportFilter;
+import org.apache.activemq.transport.failover.FailoverTransport;
import org.apache.activemq.transport.tcp.SslTransport;
import org.apache.activemq.transport.tcp.TcpTransport;
import org.apache.activemq.util.IdGenerator;
@@ -323,6 +324,7 @@ public abstract class DemandForwardingBridgeSupport implements NetworkBridge, Br
}
} finally {
ServiceStopper ss = new ServiceStopper();
+ stopFailoverTransport(remoteBroker);
ss.stop(remoteBroker);
ss.stop(localBroker);
ss.stop(duplexInboundLocalBroker);
@@ -341,6 +343,16 @@ public abstract class DemandForwardingBridgeSupport implements NetworkBridge, Br
}
}
+ private void stopFailoverTransport(Transport transport) {
+ FailoverTransport failoverTransport = transport.narrow(FailoverTransport.class);
+ if (failoverTransport != null) {
+ // may be blocked on write, in which case stop will block
+ try {
+ failoverTransport.handleTransportFailure(new IOException("Bridge stopped"));
+ } catch (InterruptedException ignored) {}
+ }
+ }
+
protected void triggerStartAsyncNetworkBridgeCreation() throws IOException {
brokerService.getTaskRunnerFactory().execute(new Runnable() {
@Override