You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by dj...@apache.org on 2008/12/30 21:05:16 UTC
svn commit: r730226 - in
/activemq/trunk/activemq-core/src/main/java/org/apache/activemq:
ActiveMQConnection.java command/ConnectionInfo.java
Author: djencks
Date: Tue Dec 30 12:05:16 2008
New Revision: 730226
URL: http://svn.apache.org/viewvc?rev=730226&view=rev
Log:
AMQ-2049 Fix race condition on ConnectionInfo by copying. Minor javaodc cleanup
Modified:
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConnectionInfo.java
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java?rev=730226&r1=730225&r2=730226&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/ActiveMQConnection.java Tue Dec 30 12:05:16 2008
@@ -51,6 +51,7 @@
import javax.jms.TopicConnection;
import javax.jms.TopicSession;
import javax.jms.XAConnection;
+import javax.jms.InvalidDestinationException;
import org.apache.activemq.blob.BlobTransferPolicy;
import org.apache.activemq.command.ActiveMQDestination;
@@ -1332,11 +1333,11 @@
if (isConnectionInfoSentToBroker || closed.get()) {
return;
}
-
+ //TODO shouldn't this check be on userSpecifiedClientID rather than the value of clientID?
if (info.getClientId() == null || info.getClientId().trim().length() == 0) {
info.setClientId(clientIdGenerator.generateId());
}
- syncSendPacket(info);
+ syncSendPacket(info.copy());
this.isConnectionInfoSentToBroker = true;
// Add a temp destination advisory consumer so that
@@ -2043,7 +2044,7 @@
* specified.
* @since 1.1
*/
- public void unsubscribe(String name) throws JMSException {
+ public void unsubscribe(String name) throws InvalidDestinationException, JMSException {
checkClosedOrFailed();
RemoveSubscriptionInfo rsi = new RemoveSubscriptionInfo();
rsi.setConnectionId(getConnectionInfo().getConnectionId());
Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConnectionInfo.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConnectionInfo.java?rev=730226&r1=730225&r2=730226&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConnectionInfo.java (original)
+++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/command/ConnectionInfo.java Tue Dec 30 12:05:16 2008
@@ -48,14 +48,23 @@
return DATA_STRUCTURE_TYPE;
}
- public void copy(ConnectionInfo copy) {
+ public ConnectionInfo copy() {
+ ConnectionInfo copy = new ConnectionInfo();
+ copy(copy);
+ return copy;
+ }
+
+ private void copy(ConnectionInfo copy) {
super.copy(copy);
+ copy.connectionId = connectionId;
copy.clientId = clientId;
copy.userName = userName;
copy.password = password;
copy.brokerPath = brokerPath;
copy.brokerMasterConnector = brokerMasterConnector;
copy.manageable = manageable;
+ copy.clientMaster = clientMaster;
+ copy.transportContext = transportContext;
}
/**
@@ -133,7 +142,7 @@
}
/**
- * @param brokerMasterConnector The brokerMasterConnector to set.
+ * @param slaveBroker The brokerMasterConnector to set.
*/
public void setBrokerMasterConnector(boolean slaveBroker) {
this.brokerMasterConnector = slaveBroker;