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 {
