ARTEMIS-208 fixing BrokerInfo, using OpenWire connection instead of static 
property on the protocolManager


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

Branch: refs/heads/master
Commit: 8935483cdd0081c5fef7cd983e19f91b00e44182
Parents: 34e127c
Author: Clebert Suconic <[email protected]>
Authored: Mon Aug 24 22:25:13 2015 -0400
Committer: Clebert Suconic <[email protected]>
Committed: Mon Aug 24 22:54:59 2015 -0400

----------------------------------------------------------------------
 .../remoting/impl/netty/NettyConnection.java    |  8 +++++++
 .../artemis/spi/core/remoting/Connection.java   |  9 ++++++++
 .../protocol/openwire/OpenWireConnection.java   |  4 ++++
 .../openwire/OpenWireProtocolManager.java       | 23 ++++++++------------
 .../core/remoting/impl/invm/InVMConnection.java |  4 ++++
 .../core/remoting/impl/netty/NettyAcceptor.java |  3 ---
 6 files changed, 34 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnection.java
----------------------------------------------------------------------
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnection.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnection.java
index f6fe267..e9e64a2 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnection.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnection.java
@@ -298,6 +298,14 @@ public class NettyConnection implements Connection {
       return address.toString();
    }
 
+   public String getLocalAddress() {
+      SocketAddress address = channel.localAddress();
+      if (address == null) {
+         return null;
+      }
+      return "tcp://" + address.toString();
+   }
+
    public boolean isDirectDeliver() {
       return directDeliver;
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/Connection.java
----------------------------------------------------------------------
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/Connection.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/Connection.java
index 76e5a3d..ac05267 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/Connection.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/Connection.java
@@ -91,6 +91,15 @@ public interface Connection {
    String getRemoteAddress();
 
    /**
+    * Returns a string representation of the local address this connection is 
connected to.
+    * This is useful when the server is configured at 0.0.0.0 (or multiple 
IPs).
+    * This will give you the actual IP that's being used.
+    *
+    * @return the local address
+    */
+   String getLocalAddress();
+
+   /**
     * Called periodically to flush any data in the batch buffer
     */
    void checkFlushBatchBuffer();

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
----------------------------------------------------------------------
diff --git 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
index 3cddb29..abe7cdf 100644
--- 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
+++ 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireConnection.java
@@ -191,6 +191,10 @@ public class OpenWireConnection implements 
RemotingConnection, CommandVisitor {
       this.creationTime = System.currentTimeMillis();
    }
 
+   public String getLocalAddress() {
+      return transportConnection.getLocalAddress();
+   }
+
    @Override
    public void bufferReceived(Object connectionID, ActiveMQBuffer buffer) {
       try {

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
----------------------------------------------------------------------
diff --git 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
index 5489fdf..fa75fcf 100644
--- 
a/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
+++ 
b/artemis-protocols/artemis-openwire-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/openwire/OpenWireProtocolManager.java
@@ -46,7 +46,6 @@ import 
org.apache.activemq.artemis.core.protocol.openwire.amq.AMQPersistenceAdap
 import 
org.apache.activemq.artemis.core.protocol.openwire.amq.AMQProducerBrokerExchange;
 import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQServerSession;
 import org.apache.activemq.artemis.core.protocol.openwire.amq.AMQSession;
-import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor;
 import 
org.apache.activemq.artemis.core.remoting.impl.netty.NettyServerConnection;
 import org.apache.activemq.artemis.core.security.CheckType;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
@@ -137,7 +136,6 @@ public class OpenWireProtocolManager implements 
ProtocolManager<Interceptor>, No
 
    private final ScheduledExecutorService scheduledPool;
 
-   private BrokerInfo brokerInfo = new BrokerInfo();
 
    public OpenWireProtocolManager(OpenWireProtocolManagerFactory factory, 
ActiveMQServer server) {
       this.factory = factory;
@@ -152,11 +150,6 @@ public class OpenWireProtocolManager implements 
ProtocolManager<Interceptor>, No
       if (service != null) {
          service.addNotificationListener(this);
       }
-      brokerInfo.setBrokerName(server.getIdentity());
-      brokerInfo.setBrokerId(new BrokerId(server.getNodeID().toString()));
-      brokerInfo.setPeerBrokerInfos(null);
-      brokerInfo.setFaultTolerantConfiguration(false);
-      brokerInfo.setBrokerURL(null);
 
    }
 
@@ -172,10 +165,6 @@ public class OpenWireProtocolManager implements 
ProtocolManager<Interceptor>, No
 
    @Override
    public ConnectionEntry createConnectionEntry(Acceptor acceptorUsed, 
Connection connection) {
-      if (brokerInfo.getBrokerURL() == null) {
-         NettyAcceptor nettyAcceptor = (NettyAcceptor)acceptorUsed;
-         brokerInfo.setBrokerURL(nettyAcceptor.getURL());
-      }
       OpenWireFormat wf = (OpenWireFormat) wireFactory.createWireFormat();
       OpenWireConnection owConn = new OpenWireConnection(acceptorUsed, 
connection, this, wf);
       owConn.init();
@@ -709,9 +698,15 @@ public class OpenWireProtocolManager implements 
ProtocolManager<Interceptor>, No
    }
 
    public void sendBrokerInfo(OpenWireConnection connection) {
-      BrokerInfo copy = brokerInfo.copy();
+      BrokerInfo brokerInfo = new BrokerInfo();
+      brokerInfo.setBrokerName(server.getIdentity());
+      brokerInfo.setBrokerId(new BrokerId(server.getNodeID().toString()));
+      brokerInfo.setPeerBrokerInfos(null);
+      brokerInfo.setFaultTolerantConfiguration(false);
+      brokerInfo.setBrokerURL(connection.getLocalAddress());
+
       //cluster support yet to support
-      copy.setPeerBrokerInfos(null);
-      connection.dispatchAsync(copy);
+      brokerInfo.setPeerBrokerInfos(null);
+      connection.dispatchAsync(brokerInfo);
    }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/invm/InVMConnection.java
----------------------------------------------------------------------
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/invm/InVMConnection.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/invm/InVMConnection.java
index 0205141..59c319a 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/invm/InVMConnection.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/invm/InVMConnection.java
@@ -208,6 +208,10 @@ public class InVMConnection implements Connection {
       return "invm:" + serverID;
    }
 
+   public String getLocalAddress() {
+      return "invm:" + serverID;
+   }
+
    public int getBatchingBufferSize() {
       return -1;
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/8935483c/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
----------------------------------------------------------------------
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
index a53b886..c9bc16a 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
@@ -580,9 +580,6 @@ public class NettyAcceptor implements Acceptor {
       return sb.toString();
    }
 
-   public String getURL() {
-      return "tcp://" + this.host + ":" + this.port;
-   }
    // Inner classes 
-----------------------------------------------------------------------------
 
    private final class ActiveMQServerChannelHandler extends 
ActiveMQChannelHandler implements ConnectionCreator {

Reply via email to