You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2016/02/15 15:25:10 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-6171 -
fix vm transport replacement of : from brokerName in error,
fix networkConnector retry logic in the event of localTransport creation
failure
Repository: activemq
Updated Branches:
refs/heads/master 24ad36778 -> b0c0441d0
https://issues.apache.org/jira/browse/AMQ-6171 - fix vm transport replacement of : from brokerName in error, fix networkConnector retry logic in the event of localTransport creation failure
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/b0c0441d
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/b0c0441d
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/b0c0441d
Branch: refs/heads/master
Commit: b0c0441d0907a26b239367dedbd9b1f3a355ab66
Parents: 24ad367
Author: gtully <ga...@gmail.com>
Authored: Mon Feb 15 14:13:07 2016 +0000
Committer: gtully <ga...@gmail.com>
Committed: Mon Feb 15 14:14:19 2016 +0000
----------------------------------------------------------------------
.../apache/activemq/broker/BrokerService.java | 8 +--
.../network/DiscoveryNetworkConnector.java | 13 ++++-
.../usecases/NetworkBrokerNameColonTest.java | 51 ++++++++++++++++++++
3 files changed, 67 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/b0c0441d/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
index cef2520..b9d8842 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java
@@ -1043,13 +1043,14 @@ public class BrokerService implements Service {
*
* @param brokerName
*/
+ private static final String brokerNameReplacedCharsRegExp = "[^a-zA-Z0-9\\.\\_\\-\\:]";
public void setBrokerName(String brokerName) {
if (brokerName == null) {
throw new NullPointerException("The broker name cannot be null");
}
- String str = brokerName.replaceAll("[^a-zA-Z0-9\\.\\_\\-\\:]", "_");
+ String str = brokerName.replaceAll(brokerNameReplacedCharsRegExp, "_");
if (!str.equals(brokerName)) {
- LOG.error("Broker Name: {} contained illegal characters - replaced with {}", brokerName, str);
+ LOG.error("Broker Name: {} contained illegal characters matching regExp: {} - replaced with {}", brokerName, brokerNameReplacedCharsRegExp, str);
}
this.brokerName = str.trim();
}
@@ -1618,7 +1619,7 @@ public class BrokerService implements Service {
public URI getVmConnectorURI() {
if (vmConnectorURI == null) {
try {
- vmConnectorURI = new URI("vm://" + getBrokerName().replaceAll("[^a-zA-Z0-9\\.\\_\\-]", "_"));
+ vmConnectorURI = new URI("vm://" + getBrokerName());
} catch (URISyntaxException e) {
LOG.error("Badly formed URI from {}", getBrokerName(), e);
}
@@ -2603,6 +2604,7 @@ public class BrokerService implements Service {
URI uri = getVmConnectorURI();
Map<String, String> map = new HashMap<String, String>(URISupport.parseParameters(uri));
map.put("async", "false");
+ map.put("create","false");
uri = URISupport.createURIWithQuery(uri, URISupport.createQueryString(map));
if (!stopped.get()) {
http://git-wip-us.apache.org/repos/asf/activemq/blob/b0c0441d/activemq-broker/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
----------------------------------------------------------------------
diff --git a/activemq-broker/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java b/activemq-broker/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
index feef9d5..e05c42c 100644
--- a/activemq-broker/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
+++ b/activemq-broker/src/main/java/org/apache/activemq/network/DiscoveryNetworkConnector.java
@@ -129,7 +129,11 @@ public class DiscoveryNetworkConnector extends NetworkConnector implements Disco
} catch (Exception e) {
LOG.warn("Could not connect to remote URI: {}: {}", connectUri, e.getMessage());
LOG.debug("Connection failure exception: ", e);
- activeEvents.remove(uri);
+ try {
+ discoveryAgent.serviceFailed(event);
+ } catch (IOException e1) {
+ LOG.debug("Failure while handling create remote transport failure event: {}", e1.getMessage(), e1);
+ }
return;
}
try {
@@ -138,7 +142,12 @@ public class DiscoveryNetworkConnector extends NetworkConnector implements Disco
ServiceSupport.dispose(remoteTransport);
LOG.warn("Could not connect to local URI: {}: {}", localURI, e.getMessage());
LOG.debug("Connection failure exception: ", e);
- activeEvents.remove(uri);
+
+ try {
+ discoveryAgent.serviceFailed(event);
+ } catch (IOException e1) {
+ LOG.debug("Failure while handling create local transport failure event: {}", e1.getMessage(), e1);
+ }
return;
}
} finally {
http://git-wip-us.apache.org/repos/asf/activemq/blob/b0c0441d/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/NetworkBrokerNameColonTest.java
----------------------------------------------------------------------
diff --git a/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/NetworkBrokerNameColonTest.java b/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/NetworkBrokerNameColonTest.java
new file mode 100644
index 0000000..192dc80
--- /dev/null
+++ b/activemq-unit-tests/src/test/java/org/apache/activemq/usecases/NetworkBrokerNameColonTest.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.usecases;
+
+import java.net.URI;
+import java.util.Arrays;
+import org.apache.activemq.JmsMultipleBrokersTestSupport;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.network.DiscoveryNetworkConnector;
+import org.apache.activemq.network.NetworkConnector;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class NetworkBrokerNameColonTest extends JmsMultipleBrokersTestSupport {
+ private static final Logger LOG = LoggerFactory.getLogger(NetworkBrokerNameColonTest.class);
+
+ public void testNetworkStartupColon() throws Exception {
+
+ BrokerService brokerColon = new BrokerService();
+ brokerColon.setBrokerName("BrokerA:Colon");
+ brokerColon.setUseJmx(true);
+
+ BrokerService brokerColonB = createBroker(new URI("broker:()BrokerB?persistent=false&useJmx=false"));
+ brokerColonB.addConnector("tcp://localhost:0");
+ brokerColonB.start();
+
+ String uri = "static:(" + brokerColonB.getTransportConnectors().get(0).getPublishableConnectString() + ")";
+ NetworkConnector connector = new DiscoveryNetworkConnector(new URI(uri));
+ connector.setName("bridge-to-b");
+ brokerColon.setNetworkConnectors(Arrays.asList(new NetworkConnector[]{connector}));
+
+ LOG.info("starting broker with Colon in name");
+ brokerColon.start();
+
+ assertTrue("got bridge to B", waitForBridgeFormation(brokerColon, 1, 0));
+ }
+}