You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2015/11/03 16:30:06 UTC

[1/2] activemq-artemis git commit: ARTEMIS-292 - fix isSameHost on TransportConfiguration

Repository: activemq-artemis
Updated Branches:
  refs/heads/master 017bf8d85 -> 797ecea5a


ARTEMIS-292 - fix isSameHost on TransportConfiguration

Ive renamed the current isSameHost method to isSameparams as thats what it checked and added a new method for isSameHost that checks the appropriate params for the connector. Ive changed ClientSessionFactoryImp to use this to correct the behaviour.

https://issues.apache.org/jira/browse/ARTEMIS-292


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/b73e61ac
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/b73e61ac
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/b73e61ac

Branch: refs/heads/master
Commit: b73e61ac528443b7978a9c70e5b76a1a0b8aeefc
Parents: 017bf8d
Author: Andy Taylor <an...@gmail.com>
Authored: Tue Nov 3 10:53:07 2015 +0000
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue Nov 3 10:29:31 2015 -0500

----------------------------------------------------------------------
 .../api/core/TransportConfiguration.java        |  4 +-
 .../client/impl/ClientSessionFactoryImpl.java   |  3 +-
 .../core/client/impl/TopologyMemberImpl.java    |  2 +-
 .../impl/TransportConfigurationUtil.java        | 19 +++++
 .../config/impl/TransportConfigurationTest.java | 75 ++++++++++++++++++++
 5 files changed, 99 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b73e61ac/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/TransportConfiguration.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/TransportConfiguration.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/TransportConfiguration.java
index 666c5c8..3ad7a73 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/TransportConfiguration.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/TransportConfiguration.java
@@ -174,7 +174,7 @@ public class TransportConfiguration implements Serializable {
 
       TransportConfiguration that = (TransportConfiguration) o;
 
-      if (!isSameHost(that)) {
+      if (!isSameParams(that)) {
          return false;
       }
 
@@ -184,7 +184,7 @@ public class TransportConfiguration implements Serializable {
       return true;
    }
 
-   public boolean isSameHost(TransportConfiguration that) {
+   public boolean isSameParams(TransportConfiguration that) {
       if (!factoryClassName.equals(that.factoryClassName))
          return false;
       if (params != null ? !params.equals(that.params) : that.params != null)

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b73e61ac/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
index 07a51e4..c69ef4d 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionFactoryImpl.java
@@ -48,6 +48,7 @@ import org.apache.activemq.artemis.core.client.ActiveMQClientLogger;
 import org.apache.activemq.artemis.core.client.ActiveMQClientMessageBundle;
 import org.apache.activemq.artemis.core.protocol.core.CoreRemotingConnection;
 import org.apache.activemq.artemis.core.remoting.FailureListener;
+import org.apache.activemq.artemis.core.remoting.impl.TransportConfigurationUtil;
 import org.apache.activemq.artemis.core.server.ActiveMQComponent;
 import org.apache.activemq.artemis.spi.core.protocol.RemotingConnection;
 import org.apache.activemq.artemis.spi.core.remoting.BufferHandler;
@@ -1295,7 +1296,7 @@ public class ClientSessionFactoryImpl implements ClientSessionFactoryInternal, C
                                Pair<TransportConfiguration, TransportConfiguration> connectorPair,
                                boolean isLast) {
          // if it is our connector then set the live id used for failover
-         if (connectorPair.getA() != null && connectorPair.getA().isSameHost(connectorConfig)) {
+         if (connectorPair.getA() != null && TransportConfigurationUtil.isSameHost(connectorPair.getA(), connectorConfig)) {
             liveNodeID = nodeID;
          }
          serverLocator.notifyNodeUp(uniqueEventID, nodeID, backupGroupName, scaleDownGroupName, connectorPair, isLast);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b73e61ac/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/TopologyMemberImpl.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/TopologyMemberImpl.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/TopologyMemberImpl.java
index 7c11cd0..10704c6 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/TopologyMemberImpl.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/TopologyMemberImpl.java
@@ -107,7 +107,7 @@ public final class TopologyMemberImpl implements TopologyMember {
    }
 
    public boolean isMember(TransportConfiguration configuration) {
-      if (getConnector().getA() != null && getConnector().getA().isSameHost(configuration) || getConnector().getB() != null && getConnector().getB().isSameHost(configuration)) {
+      if (getConnector().getA() != null && getConnector().getA().isSameParams(configuration) || getConnector().getB() != null && getConnector().getB().isSameParams(configuration)) {
          return true;
       }
       else {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b73e61ac/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/TransportConfigurationUtil.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/TransportConfigurationUtil.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/TransportConfigurationUtil.java
index 721290a..244e138 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/TransportConfigurationUtil.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/TransportConfigurationUtil.java
@@ -21,7 +21,10 @@ import java.security.PrivilegedAction;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.api.core.TransportConfigurationHelper;
+import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 import org.apache.activemq.artemis.utils.ClassloadingUtil;
 
 /**
@@ -78,4 +81,20 @@ public class TransportConfigurationUtil {
       }
       return cloned;
    }
+
+   public static boolean isSameHost(TransportConfiguration tc1, TransportConfiguration tc2) {
+      if (NettyConnectorFactory.class.getName().equals(tc1.getFactoryClassName())) {
+         String host1 = tc1.getParams().get("host") != null ? tc1.getParams().get("host").toString() : TransportConstants.DEFAULT_HOST;
+         String host2 = tc2.getParams().get("host") != null ? tc2.getParams().get("host").toString() : TransportConstants.DEFAULT_HOST;
+         String port1 = String.valueOf(tc1.getParams().get("port") != null ? tc1.getParams().get("port") : TransportConstants.DEFAULT_PORT);
+         String port2 = String.valueOf(tc2.getParams().get("port") != null ? tc2.getParams().get("port") : TransportConstants.DEFAULT_PORT);
+         return host1.equals(host2) && port1.equals(port2);
+      }
+      else if ("org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory".equals(tc1.getFactoryClassName())) {
+         String serverId1 = tc1.getParams().get("serverId") != null ? tc1.getParams().get("serverId").toString() : "0";
+         String serverId2 = tc2.getParams().get("serverId") != null ? tc2.getParams().get("serverId").toString() : "0";
+         return serverId1.equals(serverId2);
+      }
+      return false;
+   }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/b73e61ac/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/TransportConfigurationTest.java
----------------------------------------------------------------------
diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/TransportConfigurationTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/TransportConfigurationTest.java
index dccd5c2..e670bbc 100644
--- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/TransportConfigurationTest.java
+++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/config/impl/TransportConfigurationTest.java
@@ -16,6 +16,9 @@
  */
 package org.apache.activemq.artemis.tests.unit.core.config.impl;
 
+import org.apache.activemq.artemis.core.remoting.impl.TransportConfigurationUtil;
+import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
+import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
 import org.junit.Test;
 
@@ -23,6 +26,9 @@ import org.junit.Assert;
 
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class TransportConfigurationTest extends ActiveMQTestBase {
 
    // Constants -----------------------------------------------------
@@ -63,6 +69,75 @@ public class TransportConfigurationTest extends ActiveMQTestBase {
       Assert.assertEquals("192.168.0.10", addresses[2]);
    }
 
+   @Test
+   public void testSameHostNettyTrue() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put("host", "blah");
+      params1.put("port", "5467");
+      TransportConfiguration tc1 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params1);
+      Map<String, Object> params2 = new HashMap<>();
+      params2.put("host", "blah");
+      params2.put("port", "5467");
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertTrue(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
+
+   @Test
+   public void testSameHostNettyFalse() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put("host", "blah");
+      params1.put("port", "5467");
+      TransportConfiguration tc1 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params1);
+      Map<String, Object> params2 = new HashMap<>();
+      params2.put("host", "blah2");
+      params2.put("port", "5467");
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertFalse(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
+
+   @Test
+   public void testSameHostNettyTrueDefault() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put("host", TransportConstants.DEFAULT_HOST);
+      params1.put("port", TransportConstants.DEFAULT_PORT);
+      TransportConfiguration tc1 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params1);
+      Map<String, Object> params2 = new HashMap<>();
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertTrue(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
+
+   @Test
+   public void testSameHostInVMTrue() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "blah");
+      TransportConfiguration tc1 = new TransportConfiguration(INVM_CONNECTOR_FACTORY, params1);
+      Map<String, Object> params2 = new HashMap<>();
+      params2.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "blah");
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertTrue(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
+
+   @Test
+   public void testSameHostInVMFalse() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "blah");
+      TransportConfiguration tc1 = new TransportConfiguration(INVM_CONNECTOR_FACTORY, params1);
+      Map<String, Object> params2 = new HashMap<>();
+      params2.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "blah3");
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertFalse(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
+
+
+   @Test
+   public void testSameHostInVMTrueDefault() {
+      Map<String, Object> params1 = new HashMap<>();
+      params1.put(org.apache.activemq.artemis.core.remoting.impl.invm.TransportConstants.SERVER_ID_PROP_NAME, "0");
+      TransportConfiguration tc1 = new TransportConfiguration(INVM_CONNECTOR_FACTORY, params1);
+      Map<String, Object> params2 = new HashMap<>();
+      TransportConfiguration tc2 = new TransportConfiguration(NettyConnectorFactory.class.getName(), params2);
+      Assert.assertTrue(TransportConfigurationUtil.isSameHost(tc1, tc2));
+   }
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------


[2/2] activemq-artemis git commit: This closes #229

Posted by cl...@apache.org.
This closes #229


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/797ecea5
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/797ecea5
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/797ecea5

Branch: refs/heads/master
Commit: 797ecea5a9b589e3cc5451318ddc4466390299da
Parents: 017bf8d b73e61a
Author: Clebert Suconic <cl...@apache.org>
Authored: Tue Nov 3 10:29:49 2015 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue Nov 3 10:29:49 2015 -0500

----------------------------------------------------------------------
 .../api/core/TransportConfiguration.java        |  4 +-
 .../client/impl/ClientSessionFactoryImpl.java   |  3 +-
 .../core/client/impl/TopologyMemberImpl.java    |  2 +-
 .../impl/TransportConfigurationUtil.java        | 19 +++++
 .../config/impl/TransportConfigurationTest.java | 75 ++++++++++++++++++++
 5 files changed, 99 insertions(+), 4 deletions(-)
----------------------------------------------------------------------