[jboss-cvs] JBoss Messaging SVN: r5967 - in trunk: examples/messaging/src/org/jboss/messaging/example and 47 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Mar 3 04:00:00 EST 2009
Author: timfox
Date: 2009-03-03 03:59:59 -0500 (Tue, 03 Mar 2009)
New Revision: 5967
Added:
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/replication/
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/replication/SessionReplicateDeliveryMessage.java
Removed:
trunk/src/main/org/jboss/messaging/core/cluster/ClusterMessage.java
trunk/src/main/org/jboss/messaging/core/cluster/GroupCoordinator.java
trunk/src/main/org/jboss/messaging/core/cluster/GroupHandler.java
trunk/src/main/org/jboss/messaging/core/cluster/StateHandler.java
trunk/src/main/org/jboss/messaging/core/config/cluster/MessageFlowConfiguration.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionAddDestinationMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionRemoveDestinationMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionReplicateDeliveryMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/server/DelayedResult.java
trunk/src/main/org/jboss/messaging/core/server/SendLock.java
trunk/src/main/org/jboss/messaging/core/server/impl/SendLockImpl.java
Modified:
trunk/docs/userguide/en/modules/configuration.xml
trunk/examples/messaging/src/org/jboss/messaging/example/ManagementClient.java
trunk/src/config/jbm-cluster-configuration.xml
trunk/src/config/jbm-configuration.xml
trunk/src/main/org/jboss/messaging/core/client/ClientRequestor.java
trunk/src/main/org/jboss/messaging/core/client/ClientSession.java
trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java
trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
trunk/src/main/org/jboss/messaging/core/config/Configuration.java
trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
trunk/src/main/org/jboss/messaging/core/management/NotificationType.java
trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
trunk/src/main/org/jboss/messaging/core/management/jmx/impl/ReplicationAwareMessagingServerControlWrapper.java
trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java
trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java
trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java
trunk/src/main/org/jboss/messaging/core/postoffice/AddressManager.java
trunk/src/main/org/jboss/messaging/core/postoffice/Bindings.java
trunk/src/main/org/jboss/messaging/core/postoffice/PostOffice.java
trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java
trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java
trunk/src/main/org/jboss/messaging/core/postoffice/impl/SimpleAddressManager.java
trunk/src/main/org/jboss/messaging/core/postoffice/impl/WildcardAddressManager.java
trunk/src/main/org/jboss/messaging/core/remoting/Channel.java
trunk/src/main/org/jboss/messaging/core/remoting/Packet.java
trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/PacketImpl.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/ReplicateCreateSessionMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/RollbackMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionCreateQueueMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionDeleteQueueMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java
trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java
trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
trunk/src/main/org/jboss/messaging/core/server/Queue.java
trunk/src/main/org/jboss/messaging/core/server/ServerConsumer.java
trunk/src/main/org/jboss/messaging/core/server/ServerSession.java
trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java
trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java
trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java
trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java
trunk/src/main/org/jboss/messaging/jms/client/JBossSession.java
trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
trunk/src/schemas/jbm-configuration.xsd
trunk/tests/config/ConfigurationTest-config.xml
trunk/tests/config/ConfigurationTest-full-config.xml
trunk/tests/src/org/jboss/messaging/tests/integration/basic/ClientRequestorTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientExitTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientTestBase.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/cluster/management/ReplicationAwareMessagingServerControlWrapperTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/http/CoreClientOverHttpTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/http/NettyHttpTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSUtil.java
trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/management/NotificationTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/security/SimpleClient.java
trunk/tests/src/org/jboss/messaging/tests/integration/wildcard/WildCardRoutingTest.java
trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
trunk/tests/src/org/jboss/messaging/tests/performance/persistence/FakePostOffice.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/ConfigurationImplTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/DefaultsFileConfigurationTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/FileConfigurationTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/core/persistence/impl/journal/JournalStorageManagerTest.java
trunk/tests/src/org/jboss/messaging/tests/unit/jms/JBossTemporaryTopicTest.java
Log:
various fixes, tweaks, changes to replicatiom etc
Modified: trunk/docs/userguide/en/modules/configuration.xml
===================================================================
--- trunk/docs/userguide/en/modules/configuration.xml 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/docs/userguide/en/modules/configuration.xml 2009-03-03 08:59:59 UTC (rev 5967)
@@ -38,8 +38,6 @@
<scheduled-executor-max-pool-size>30</scheduled-executor-max-pool-size>
- <require-destinations>true</require-destinations>
-
<!-- Remoting configuration -->
<!-- one of: TCP, INVM -->
@@ -140,10 +138,6 @@
<para>The maximum number of threads available for scheduling delivery of scheduled messages</para>
</listitem>
<listitem>
- <para>require-destinations</para>
- <para>Whether or not a destination needs to pre-exist when delivering a message</para>
- </listitem>
- <listitem>
<para>remoting-transport</para>
<para>Type of transport to use, currently there is only TCP</para>
</listitem>
Modified: trunk/examples/messaging/src/org/jboss/messaging/example/ManagementClient.java
===================================================================
--- trunk/examples/messaging/src/org/jboss/messaging/example/ManagementClient.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/examples/messaging/src/org/jboss/messaging/example/ManagementClient.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -59,8 +59,7 @@
sendMessages(clientSession, queue);
- // add temporary destination and queue
- clientSession.addDestination(replytoQueue, false, true);
+ // add temporary queue
clientSession.createQueue(replytoQueue, replytoQueue, null, false, true);
SimpleString notifQueue = new SimpleString("notifQueue");
@@ -91,11 +90,6 @@
});
clientSession.start();
- // add and remove a destination to receive two notifications from the
- // server
- clientSession.addDestination(new SimpleString("anotherQueue"), false, true);
- clientSession.removeDestination(new SimpleString("anotherQueue"), false);
-
ClientRequestor requestor = new ClientRequestor(clientSession, DEFAULT_MANAGEMENT_ADDRESS);
// to set a new value for an attribute, invoke the corresponding setter
@@ -164,7 +158,6 @@
consumeMessages(clientSession, queue);
notifConsumer.close();
- clientSession.removeDestination(replytoQueue, false);
clientSession.deleteQueue(replytoQueue);
clientSession.deleteQueue(notifQueue);
Modified: trunk/src/config/jbm-cluster-configuration.xml
===================================================================
--- trunk/src/config/jbm-cluster-configuration.xml 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/config/jbm-cluster-configuration.xml 2009-03-03 08:59:59 UTC (rev 5967)
@@ -8,8 +8,6 @@
<!-- Maximum number of threads to use for scheduled deliveries -->
<scheduled-max-pool-size>30</scheduled-max-pool-size>
- <require-destinations>true</require-destinations>
-
<security-enabled>true</security-enabled>
<security-invalidation-interval>10000</security-invalidation-interval>
Modified: trunk/src/config/jbm-configuration.xml
===================================================================
--- trunk/src/config/jbm-configuration.xml 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/config/jbm-configuration.xml 2009-03-03 08:59:59 UTC (rev 5967)
@@ -8,8 +8,6 @@
<!-- Maximum number of threads to use for scheduled deliveries -->
<scheduled-max-pool-size>30</scheduled-max-pool-size>
- <require-destinations>true</require-destinations>
-
<security-enabled>true</security-enabled>
<security-invalidation-interval>10000</security-invalidation-interval>
Modified: trunk/src/main/org/jboss/messaging/core/client/ClientRequestor.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientRequestor.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientRequestor.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -49,7 +49,6 @@
requestProducer = queueSession.createProducer(requestAddress);
replyQueue = new SimpleString(UUID.randomUUID().toString());
- queueSession.addDestination(replyQueue, false, true);
queueSession.createQueue(replyQueue, replyQueue, null, false, true);
replyConsumer = queueSession.createConsumer(replyQueue);
}
@@ -75,7 +74,6 @@
{
replyConsumer.close();
queueSession.deleteQueue(replyQueue);
- queueSession.removeDestination(replyQueue, false);
queueSession.close();
}
Modified: trunk/src/main/org/jboss/messaging/core/client/ClientSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/ClientSession.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/client/ClientSession.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -47,48 +47,35 @@
/**
* Queues created by this method are <em>not</em> temporary
*/
- void createQueue(SimpleString address,
- SimpleString queueName,
- boolean durable) throws MessagingException;
+ void createQueue(SimpleString address, SimpleString queueName, boolean durable) throws MessagingException;
+
/**
* Queues created by this method are <em>not</em> temporary
*/
- void createQueue(String address,
- String queueName,
- boolean durable) throws MessagingException;
+ void createQueue(String address, String queueName, boolean durable) throws MessagingException;
- void createQueue(SimpleString address,
- SimpleString queueName,
- boolean durable,
- boolean temporary) throws MessagingException;
- void createQueue(String address,
- String queueName,
- boolean durable,
- boolean temporary) throws MessagingException;
+ void createQueue(SimpleString address, SimpleString queueName, boolean durable, boolean temporary) throws MessagingException;
+ void createQueue(String address, String queueName, boolean durable, boolean temporary) throws MessagingException;
+
void createQueue(SimpleString address,
SimpleString queueName,
SimpleString filterString,
boolean durable,
boolean temporary) throws MessagingException;
- void createQueue(String address,
- String queueName,
- String filterString,
- boolean durable,
- boolean temporary) throws MessagingException;
+ void createQueue(String address, String queueName, String filterString, boolean durable, boolean temporary) throws MessagingException;
+
void deleteQueue(SimpleString queueName) throws MessagingException;
+
void deleteQueue(String queueName) throws MessagingException;
- void addDestination(SimpleString address, boolean durable, boolean temporary) throws MessagingException;
- void addDestination(String address, boolean durable, boolean temporary) throws MessagingException;
-
- void removeDestination(SimpleString address, boolean durable) throws MessagingException;
- void removeDestination(String address, boolean durable) throws MessagingException;
-
ClientConsumer createConsumer(SimpleString queueName) throws MessagingException;
+
ClientConsumer createConsumer(SimpleString queueName, SimpleString filterString) throws MessagingException;
+
ClientConsumer createConsumer(SimpleString queueName, SimpleString filterString, boolean browseOnly) throws MessagingException;
+
ClientConsumer createConsumer(SimpleString queueName,
SimpleString filterString,
int windowSize,
@@ -96,20 +83,22 @@
boolean browseOnly) throws MessagingException;
ClientConsumer createConsumer(String queueName) throws MessagingException;
+
ClientConsumer createConsumer(String queueName, String filterString) throws MessagingException;
+
ClientConsumer createConsumer(String queueName, String filterString, boolean browseOnly) throws MessagingException;
- ClientConsumer createConsumer(String queueName,
- String filterString,
- int windowSize,
- int maxRate,
- boolean browseOnly) throws MessagingException;
+ ClientConsumer createConsumer(String queueName, String filterString, int windowSize, int maxRate, boolean browseOnly) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory, SimpleString queueName) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory, SimpleString queueName, SimpleString filterString) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory,
SimpleString queueName,
SimpleString filterString,
boolean browseOnly) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory,
SimpleString queueName,
SimpleString filterString,
@@ -118,14 +107,14 @@
boolean browseOnly) throws MessagingException;
ClientConsumer createFileConsumer(File directory, String queueName) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory, String queueName, String filterString) throws MessagingException;
+
+ ClientConsumer createFileConsumer(File directory, String queueName, String filterString, boolean browseOnly) throws MessagingException;
+
ClientConsumer createFileConsumer(File directory,
String queueName,
String filterString,
- boolean browseOnly) throws MessagingException;
- ClientConsumer createFileConsumer(File directory,
- String queueName,
- String filterString,
int windowSize,
int maxRate,
boolean browseOnly) throws MessagingException;
@@ -137,15 +126,20 @@
* @see ClientProducer#send(SimpleString, org.jboss.messaging.core.message.Message)
*/
ClientProducer createProducer() throws MessagingException;
+
ClientProducer createProducer(SimpleString address) throws MessagingException;
+
ClientProducer createProducer(SimpleString address, int rate) throws MessagingException;
+
ClientProducer createProducer(SimpleString address,
int maxRate,
boolean blockOnNonPersistentSend,
boolean blockOnPersistentSend) throws MessagingException;
ClientProducer createProducer(String address) throws MessagingException;
+
ClientProducer createProducer(String address, int rate) throws MessagingException;
+
ClientProducer createProducer(String address,
int maxRate,
boolean blockOnNonPersistentSend,
@@ -200,6 +194,6 @@
boolean removeFailureListener(FailureListener listener);
int getVersion();
-
+
void setSendAcknowledgementHandler(SendAcknowledgementHandler handler);
}
Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientConsumerImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -308,7 +308,7 @@
// This is ok - we just ignore the message
return;
}
-
+
ClientMessageInternal messageToHandle = message;
if (isFileConsumer())
@@ -402,7 +402,7 @@
{
buffer.clear();
}
-
+
waitForOnMessageToComplete();
}
@@ -545,7 +545,7 @@
MessageHandler theHandler = handler;
if (theHandler != null)
- {
+ {
synchronized (this)
{
message = buffer.poll();
@@ -742,6 +742,7 @@
{
public void run()
{
+
try
{
callOnMessage();
@@ -752,6 +753,7 @@
lastException = e;
}
+
}
}
Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ClientSessionImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -54,7 +54,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.ReattachSessionResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.RollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionCloseMessage;
@@ -68,7 +67,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAEndMessage;
@@ -175,9 +173,9 @@
private volatile boolean started;
private SendAcknowledgementHandler sendAckHandler;
+
+ private volatile boolean closedSent;
- private volatile boolean inClose;
-
// Constructors ----------------------------------------------------------------------------
public ClientSessionImpl(final ConnectionManager connectionManager,
@@ -319,35 +317,7 @@
return response;
}
-
- public void addDestination(final SimpleString address, final boolean durable, final boolean temp) throws MessagingException
- {
- checkClosed();
-
- SessionAddDestinationMessage request = new SessionAddDestinationMessage(address, durable, temp);
-
- channel.sendBlocking(request);
- }
-
- public void addDestination(final String address, final boolean durable, final boolean temporary) throws MessagingException
- {
- addDestination(toSimpleString(address), durable, temporary);
- }
-
- public void removeDestination(final SimpleString address, final boolean durable) throws MessagingException
- {
- checkClosed();
-
- SessionRemoveDestinationMessage request = new SessionRemoveDestinationMessage(address, durable);
-
- channel.sendBlocking(request);
- }
-
- public void removeDestination(final String address, final boolean durable) throws MessagingException
- {
- removeDestination(toSimpleString(address), durable);
- }
-
+
public ClientConsumer createConsumer(final SimpleString queueName) throws MessagingException
{
return createConsumer(queueName, null, false);
@@ -541,8 +511,6 @@
{
checkClosed();
- flushAcks();
-
// We do a "JMS style" rollback where the session is stopped, and the buffer is cancelled back
// first before rolling back
// This ensures messages are received in the same order after rollback w.r.t. to messages in the buffer
@@ -560,6 +528,9 @@
{
consumer.clear();
}
+
+ //Acks must be flushed here *after connection is stopped and all onmessages finished executing
+ flushAcks();
channel.sendBlocking(new RollbackMessage(isLastMessageAsDelived));
@@ -688,6 +659,7 @@
{
return;
}
+
checkClosed();
SessionAcknowledgeMessage message = new SessionAcknowledgeMessage(consumerID, messageID, blockOnAcknowledge);
@@ -774,19 +746,15 @@
try
{
closeChildren();
-
- inClose = true;
+ closedSent = true;
+
channel.sendBlocking(new SessionCloseMessage());
}
catch (Throwable ignore)
{
// Session close should always return without exception
}
- finally
- {
- inClose = false;
- }
doCleanup();
}
@@ -826,7 +794,7 @@
try
{
- channel.transferConnection(backupConnection);
+ channel.transferConnection(backupConnection, channel.getID(), null);
backupConnection.syncIDGeneratorSequence(remotingConnection.getIDGeneratorSequence());
@@ -840,13 +808,13 @@
if (!response.isRemoved())
{
- channel.replayCommands(response.getLastReceivedCommandID());
+ channel.replayCommands(response.getLastReceivedCommandID(), channel.getID());
ok = true;
}
else
{
- if (inClose)
+ if (closedSent)
{
// a session re-attach may fail, if the session close was sent before failover started, hit the server,
// processed, then before the response was received back, failover occurred, re-attach was attempted. in
@@ -858,8 +826,8 @@
ok = true;
}
else
- {
- log.warn("Session not found on server when attempting to re-attach");
+ {
+ log.warn(System.identityHashCode(this) + " Session not found on server when attempting to re-attach");
}
channel.returnBlocking();
@@ -1082,11 +1050,9 @@
public void rollback(final Xid xid) throws XAException
{
checkXA();
-
+
try
{
- flushAcks();
-
boolean wasStarted = started;
if (wasStarted)
@@ -1099,6 +1065,8 @@
{
consumer.clear();
}
+
+ flushAcks();
SessionXARollbackMessage packet = new SessionXARollbackMessage(xid);
Modified: trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/client/impl/ConnectionManagerImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -23,7 +23,6 @@
package org.jboss.messaging.core.client.impl;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.EARLY_RESPONSE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.QUIT;
import java.util.ArrayList;
import java.util.HashMap;
@@ -49,7 +48,6 @@
import org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl;
import org.jboss.messaging.core.remoting.impl.wireformat.CreateSessionMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.CreateSessionResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
import org.jboss.messaging.core.remoting.spi.Connection;
import org.jboss.messaging.core.remoting.spi.ConnectionLifeCycleListener;
import org.jboss.messaging.core.remoting.spi.Connector;
@@ -227,7 +225,7 @@
synchronized (createSessionLock)
{
String name = UUIDGenerator.getInstance().generateSimpleStringUUID().toString();
-
+
boolean retry = false;
do
{
@@ -604,6 +602,7 @@
private boolean reconnect(final int retries)
{
+ log.info("reconnecting");
// We fail over sessions per connection to ensure there is the same mapping of channel id
// on live and backup connections
@@ -758,8 +757,6 @@
{
try
{
- quitConnection(entry.connection.getTransportConnection());
-
entry.connection.destroy();
entry.connector.close();
@@ -772,14 +769,6 @@
mapIterator = null;
}
}
-
- private void quitConnection(final Connection connection)
- {
- PacketImpl quitPacket = new PacketImpl(QUIT);
- MessagingBuffer buffer = connection.createBuffer(quitPacket.getRequiredBufferSize());
- quitPacket.encode(buffer);
- connection.write(buffer);
- }
private RemotingConnection getConnection(final int count)
{
Deleted: trunk/src/main/org/jboss/messaging/core/cluster/ClusterMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/cluster/ClusterMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/cluster/ClusterMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,35 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.cluster;
-
-/**
- *
- * A ClusterRequest
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public interface ClusterMessage
-{
- void execute();
-}
Deleted: trunk/src/main/org/jboss/messaging/core/cluster/GroupCoordinator.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/cluster/GroupCoordinator.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/cluster/GroupCoordinator.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,55 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.cluster;
-
-import java.util.List;
-
-/**
- *
- * A GroupCoordinator
- *
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public interface GroupCoordinator
-{
- /**
- * Join the cluster with the specified id
- * @param id
- * @return The state
- * @throws Exception
- */
- Object join(int id, StateHandler handler) throws Exception;
-
- void leave(int id) throws Exception;
-
- void sendToAll(ClusterMessage request, boolean sychronous) throws Exception;
-
- List<Integer> getMembers();
-
- void registerHandler(GroupHandler handler);
-
- void unregisterHandler(GroupHandler handler);
-
-}
Deleted: trunk/src/main/org/jboss/messaging/core/cluster/GroupHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/cluster/GroupHandler.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/cluster/GroupHandler.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,39 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.cluster;
-
-import java.util.List;
-
-/**
- *
- * A GroupHandler
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public interface GroupHandler
-{
- void membersChanged(List<Integer> newMembers);
-
- void onMessage(int fromNodeId, ClusterMessage message);
-}
Deleted: trunk/src/main/org/jboss/messaging/core/cluster/StateHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/cluster/StateHandler.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/cluster/StateHandler.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,35 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.cluster;
-
-/**
- *
- * A StateHandler
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public interface StateHandler
-{
- Object getState();
-}
Modified: trunk/src/main/org/jboss/messaging/core/config/Configuration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/Configuration.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/config/Configuration.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -75,10 +75,6 @@
void setSecurityEnabled(boolean enabled);
- boolean isRequireDestinations();
-
- void setRequireDestinations(boolean require);
-
boolean isJMXManagementEnabled();
void setJMXManagementEnabled(boolean enabled);
Deleted: trunk/src/main/org/jboss/messaging/core/config/cluster/MessageFlowConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/cluster/MessageFlowConfiguration.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/config/cluster/MessageFlowConfiguration.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,211 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.config.cluster;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.jboss.messaging.utils.Pair;
-
-/**
- * A MessageFlowConfiguration
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- * Created 12 Nov 2008 13:52:22
- *
- *
- */
-public class MessageFlowConfiguration implements Serializable
-{
- private static final long serialVersionUID = 6583525368508418953L;
-
- private final String name;
-
- private final String address;
-
- private final String filterString;
-
- private final boolean exclusive;
-
- private final int maxBatchSize;
-
- private final long maxBatchTime;
-
- private final List<Pair<String, String>> staticConnectorNamePairs;
-
- private final String discoveryGroupName;
-
- private final String transformerClassName;
-
- private final long retryInterval;
-
- private final double retryIntervalMultiplier;
-
- private final int maxRetriesBeforeFailover;
-
- private final int maxRetriesAfterFailover;
-
- private final boolean useDuplicateDetection;
-
- private final int maxHops;
-
- public MessageFlowConfiguration(final String name,
- final String address,
- final String filterString,
- final boolean exclusive,
- final int maxBatchSize,
- final long maxBatchTime,
- final String transformerClassName,
- final long retryInterval,
- final double retryIntervalMultiplier,
- final int maxRetriesBeforeFailover,
- final int maxRetriesAfterFailover,
- final boolean useDuplicateDetection,
- final int maxHops,
- final List<Pair<String, String>> staticConnectorNamePairs)
- {
- this.name = name;
- this.address = address;
- this.filterString = filterString;
- this.exclusive = exclusive;
- this.maxBatchSize = maxBatchSize;
- this.maxBatchTime = maxBatchTime;
- this.transformerClassName = transformerClassName;
- this.retryInterval = retryInterval;
- this.retryIntervalMultiplier = retryIntervalMultiplier;
- this.maxRetriesBeforeFailover = maxRetriesBeforeFailover;
- this.maxRetriesAfterFailover = maxRetriesAfterFailover;
- this.useDuplicateDetection = useDuplicateDetection;
- this.maxHops = maxHops;
- this.staticConnectorNamePairs = staticConnectorNamePairs;
- this.discoveryGroupName = null;
- }
-
- public MessageFlowConfiguration(final String name,
- final String address,
- final String filterString,
- final boolean exclusive,
- final int maxBatchSize,
- final long maxBatchTime,
- final String transformerClassName,
- final long retryInterval,
- final double retryIntervalMultiplier,
- final int maxRetriesBeforeFailover,
- final int maxRetriesAfterFailover,
- final boolean useDuplicateDetection,
- final int maxHops,
- final String discoveryGroupName)
- {
- this.name = name;
- this.address = address;
- this.filterString = filterString;
- this.exclusive = exclusive;
- this.maxBatchSize = maxBatchSize;
- this.maxBatchTime = maxBatchTime;
- this.transformerClassName = transformerClassName;
- this.retryInterval = retryInterval;
- this.retryIntervalMultiplier = retryIntervalMultiplier;
- this.maxRetriesBeforeFailover = maxRetriesBeforeFailover;
- this.maxRetriesAfterFailover = maxRetriesAfterFailover;
- this.useDuplicateDetection = useDuplicateDetection;
- this.maxHops = maxHops;
- this.staticConnectorNamePairs = null;
- this.discoveryGroupName = discoveryGroupName;
- }
-
- public String getName()
- {
- return name;
- }
-
- public String getAddress()
- {
- return address;
- }
-
- public String getFilterString()
- {
- return filterString;
- }
-
- public boolean isExclusive()
- {
- return exclusive;
- }
-
- public int getMaxBatchSize()
- {
- return maxBatchSize;
- }
-
- public long getMaxBatchTime()
- {
- return maxBatchTime;
- }
-
- public String getTransformerClassName()
- {
- return transformerClassName;
- }
-
- public List<Pair<String, String>> getConnectorNamePairs()
- {
- return staticConnectorNamePairs;
- }
-
- public String getDiscoveryGroupName()
- {
- return this.discoveryGroupName;
- }
-
- public long getRetryInterval()
- {
- return retryInterval;
- }
-
- public double getRetryIntervalMultiplier()
- {
- return retryIntervalMultiplier;
- }
-
- public int getMaxRetriesBeforeFailover()
- {
- return maxRetriesBeforeFailover;
- }
-
- public int getMaxRetriesAfterFailover()
- {
- return maxRetriesAfterFailover;
- }
-
- public boolean isUseDuplicateDetection()
- {
- return useDuplicateDetection;
- }
-
- public int getMaxHops()
- {
- return maxHops;
- }
-}
Modified: trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/ConfigurationImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -53,7 +53,7 @@
public static final long DEFAULT_SECURITY_INVALIDATION_INTERVAL = 10000;
- public static final boolean DEFAULT_REQUIRE_DESTINATIONS = false;
+ //public static final boolean DEFAULT_REQUIRE_DESTINATIONS = false;
public static final boolean DEFAULT_SECURITY_ENABLED = true;
@@ -115,10 +115,6 @@
public static final long DEFAULT_BROADCAST_REFRESH_TIMEOUT = 10000;
- public static final int DEFAULT_MAX_FORWARD_BATCH_SIZE = 1;
-
- public static final long DEFAULT_MAX_FORWARD_BATCH_TIME = -1;
-
public static final long DEFAULT_MESSAGE_EXPIRY_SCAN_PERIOD = 30000;
public static final int DEFAULT_MESSAGE_EXPIRY_THREAD_PRIORITY = 3;
@@ -151,8 +147,6 @@
protected long securityInvalidationInterval = DEFAULT_SECURITY_INVALIDATION_INTERVAL;
- protected boolean requireDestinations = DEFAULT_REQUIRE_DESTINATIONS;
-
protected boolean securityEnabled = DEFAULT_SECURITY_ENABLED;
protected boolean jmxManagementEnabled = DEFAULT_JMX_MANAGEMENT_ENABLED;
@@ -307,16 +301,6 @@
securityInvalidationInterval = interval;
}
- public boolean isRequireDestinations()
- {
- return requireDestinations;
- }
-
- public void setRequireDestinations(final boolean require)
- {
- requireDestinations = require;
- }
-
public long getConnectionScanPeriod()
{
return connectionScanPeriod;
@@ -756,8 +740,7 @@
return cother.isClustered() == isClustered() && cother.isCreateBindingsDir() == isCreateBindingsDir() &&
cother.isCreateJournalDir() == isCreateJournalDir() &&
cother.isJournalSyncNonTransactional() == isJournalSyncNonTransactional() &&
- cother.isJournalSyncTransactional() == isJournalSyncTransactional() &&
- cother.isRequireDestinations() == isRequireDestinations() &&
+ cother.isJournalSyncTransactional() == isJournalSyncTransactional() &&
cother.isSecurityEnabled() == isSecurityEnabled() &&
cother.isWildcardRoutingEnabled() == isWildcardRoutingEnabled() &&
cother.getLargeMessagesDirectory().equals(getLargeMessagesDirectory()) &&
Modified: trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/config/impl/FileConfiguration.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -97,8 +97,6 @@
scheduledThreadPoolMaxSize = getInteger(e, "scheduled-max-pool-size", scheduledThreadPoolMaxSize);
- requireDestinations = getBoolean(e, "require-destinations", requireDestinations);
-
securityEnabled = getBoolean(e, "security-enabled", securityEnabled);
jmxManagementEnabled = getBoolean(e, "jmx-management-enabled", jmxManagementEnabled);
Modified: trunk/src/main/org/jboss/messaging/core/management/ManagementService.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/ManagementService.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/ManagementService.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -34,6 +34,8 @@
import org.jboss.messaging.core.config.cluster.BroadcastGroupConfiguration;
import org.jboss.messaging.core.config.cluster.ClusterConnectionConfiguration;
import org.jboss.messaging.core.config.cluster.DiscoveryGroupConfiguration;
+import org.jboss.messaging.core.management.impl.AddressControl;
+import org.jboss.messaging.core.management.jmx.impl.ReplicationAwareAddressControlWrapper;
import org.jboss.messaging.core.messagecounter.MessageCounterManager;
import org.jboss.messaging.core.persistence.StorageManager;
import org.jboss.messaging.core.postoffice.PostOffice;
@@ -98,7 +100,7 @@
void registerInJMX(ObjectName objectName, Object managedResource) throws Exception;
void registerInRegistry(ObjectName objectName, Object managedResource);
-
+
void registerAddress(SimpleString address) throws Exception;
void unregisterAddress(SimpleString address) throws Exception;
Modified: trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/MessagingServerControlMBean.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -56,7 +56,7 @@
boolean isSecurityEnabled();
- boolean isRequireDestinations();
+ // boolean isRequireDestinations();
String getBindingsDirectory();
@@ -118,14 +118,14 @@
void destroyQueue(@Parameter(name = "name", desc = "Name of the queue to destroy")
String name) throws Exception;
- @Operation(desc = "Add an address to the post office", impact = ACTION)
- boolean addAddress(@Parameter(name = "address", desc = "The address to add")
- String address) throws Exception;
+// @Operation(desc = "Add an address to the post office", impact = ACTION)
+// boolean addAddress(@Parameter(name = "address", desc = "The address to add")
+// String address) throws Exception;
+//
+// @Operation(desc = "Remove an address from the post office", impact = ACTION)
+// boolean removeAddress(@Parameter(name = "address", desc = "The address to remove")
+// String address) throws Exception;
- @Operation(desc = "Remove an address from the post office", impact = ACTION)
- boolean removeAddress(@Parameter(name = "address", desc = "The address to remove")
- String address) throws Exception;
-
void enableMessageCounters() throws Exception;
void disableMessageCounters() throws Exception;
Modified: trunk/src/main/org/jboss/messaging/core/management/NotificationType.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/NotificationType.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/NotificationType.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -33,19 +33,15 @@
*/
public enum NotificationType
{
- BINDING_ADDED, BINDING_REMOVED, ADDRESS_ADDED, ADDRESS_REMOVED, CONSUMER_CREATED, CONSUMER_CLOSED;
+ BINDING_ADDED, BINDING_REMOVED, CONSUMER_CREATED, CONSUMER_CLOSED;
public static final int BINDING_ADDED_INDEX = 0;
public static final int BINDING_REMOVED_INDEX = 1;
- public static final int ADDRESS_ADDED_INDEX = 2;
+ public static final int CONSUMER_CREATED_INDEX = 2;
- public static final int ADDRESS_REMOVED_INDEX = 3;
-
- public static final int CONSUMER_CREATED_INDEX = 4;
-
- public static final int CONSUMER_CLOSED_INDEX = 5;
+ public static final int CONSUMER_CLOSED_INDEX = 3;
public static NotificationType fromInt(final int index)
{
@@ -59,14 +55,6 @@
{
return NotificationType.BINDING_REMOVED;
}
- case ADDRESS_ADDED_INDEX:
- {
- return NotificationType.ADDRESS_ADDED;
- }
- case ADDRESS_REMOVED_INDEX:
- {
- return NotificationType.ADDRESS_REMOVED;
- }
case CONSUMER_CREATED_INDEX:
{
return NotificationType.CONSUMER_CREATED;
@@ -91,15 +79,7 @@
else if (this.equals(NotificationType.BINDING_REMOVED))
{
return BINDING_REMOVED_INDEX;
- }
- else if (this.equals(NotificationType.ADDRESS_ADDED))
- {
- return ADDRESS_ADDED_INDEX;
- }
- else if (this.equals(NotificationType.ADDRESS_REMOVED))
- {
- return ADDRESS_REMOVED_INDEX;
- }
+ }
else if (this.equals(NotificationType.CONSUMER_CREATED))
{
return CONSUMER_CREATED_INDEX;
Modified: trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/ManagementServiceImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -189,8 +189,8 @@
{
ObjectName objectName = ObjectNames.getMessagingServerObjectName();
unregisterResource(objectName);
- }
-
+ }
+
public void registerAddress(final SimpleString address) throws Exception
{
ObjectName objectName = ObjectNames.getAddressObjectName(address);
@@ -206,11 +206,6 @@
{
log.debug("registered address " + objectName);
}
- TypedProperties props = new TypedProperties();
-
- props.putStringProperty(ManagementHelper.HDR_ADDRESS, address);
-
- sendNotification(new Notification(NotificationType.ADDRESS_ADDED, props));
}
public void unregisterAddress(final SimpleString address) throws Exception
@@ -218,12 +213,6 @@
ObjectName objectName = ObjectNames.getAddressObjectName(address);
unregisterResource(objectName);
-
- TypedProperties props = new TypedProperties();
-
- props.putStringProperty(ManagementHelper.HDR_ADDRESS, address);
-
- sendNotification(new Notification(NotificationType.ADDRESS_REMOVED, props));
}
public void registerQueue(final Queue queue, final SimpleString address, final StorageManager storageManager) throws Exception
Modified: trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/impl/MessagingServerControl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -140,16 +140,6 @@
// Public --------------------------------------------------------
- public void addDestination(final SimpleString simpleAddress) throws Exception
- {
- postOffice.addDestination(simpleAddress, false);
- }
-
- public void removeDestination(final SimpleString simpleAddress) throws Exception
- {
- postOffice.removeDestination(simpleAddress, false);
- }
-
public Queue getQueue(final String name) throws Exception
{
SimpleString sName = new SimpleString(name);
@@ -279,21 +269,11 @@
return configuration.isJournalSyncTransactional();
}
- public boolean isRequireDestinations()
- {
- return configuration.isRequireDestinations();
- }
-
public boolean isSecurityEnabled()
{
return configuration.isSecurityEnabled();
}
- public boolean addAddress(final String address) throws Exception
- {
- return postOffice.addDestination(new SimpleString(address), false);
- }
-
// TODO - do we really need this method?
public void createQueue(final String address, final String name) throws Exception
@@ -359,11 +339,6 @@
return server.getConnectionCount();
}
- public boolean removeAddress(final String address) throws Exception
- {
- return postOffice.removeDestination(new SimpleString(address), false);
- }
-
public void enableMessageCounters()
{
setMessageCounterEnabled(true);
@@ -513,8 +488,6 @@
String remoteAddress = connection.getRemoteAddress();
if (remoteAddress.contains(ipAddress))
{
- // force the immediate closure of the connection and its resources
- connection.setReadyToClose();
connection.fail(new MessagingException(MessagingException.INTERNAL_ERROR, "connections for " + ipAddress +
" closed by management"));
closed = true;
Modified: trunk/src/main/org/jboss/messaging/core/management/jmx/impl/ReplicationAwareMessagingServerControlWrapper.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/management/jmx/impl/ReplicationAwareMessagingServerControlWrapper.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/management/jmx/impl/ReplicationAwareMessagingServerControlWrapper.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -194,12 +194,7 @@
{
return localControl.isMessageCounterEnabled();
}
-
- public boolean isRequireDestinations()
- {
- return localControl.isRequireDestinations();
- }
-
+
public boolean isSecurityEnabled()
{
return localControl.isSecurityEnabled();
Modified: trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/message/impl/MessageImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -94,8 +94,7 @@
private byte priority;
private MessagingBuffer body;
-
-
+
// Constructors --------------------------------------------------
protected MessageImpl()
Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -46,7 +46,6 @@
import org.jboss.messaging.core.paging.PagingStoreFactory;
import org.jboss.messaging.core.persistence.StorageManager;
import org.jboss.messaging.core.postoffice.PostOffice;
-import org.jboss.messaging.core.server.SendLock;
import org.jboss.messaging.core.server.ServerMessage;
import org.jboss.messaging.core.settings.impl.AddressSettings;
import org.jboss.messaging.core.transaction.Transaction;
@@ -818,12 +817,12 @@
Transaction depageTransaction = new TransactionImpl(storageManager);
- SendLock sendLock = postOffice.getAddressLock(destination);
-
- sendLock.beforeSend();
-
- try
- {
+// SendLock sendLock = postOffice.getAddressLock(destination);
+//
+// sendLock.beforeSend();
+//
+// try
+// {
depageTransaction.putProperty(TransactionPropertyIndexes.IS_DEPAGE, Boolean.valueOf(true));
HashSet<PageTransactionInfo> pageTransactionsToUpdate = new HashSet<PageTransactionInfo>();
@@ -921,11 +920,11 @@
{
trace("Depage committed, running = " + running);
}
- }
- finally
- {
- sendLock.afterSend();
- }
+// }
+// finally
+// {
+// sendLock.afterSend();
+// }
return true;
}
Modified: trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/persistence/StorageManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -117,10 +117,5 @@
void deleteQueueBinding(long queueBindingID) throws Exception;
- boolean addDestination(SimpleString destination) throws Exception;
-
- boolean deleteDestination(SimpleString destination) throws Exception;
-
- void loadBindingJournal(List<QueueBindingInfo> queueBindingInfos,
- List<SimpleString> destinations) throws Exception;
+ void loadBindingJournal(List<QueueBindingInfo> queueBindingInfos) throws Exception;
}
Modified: trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/persistence/impl/journal/JournalStorageManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -32,8 +32,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -104,7 +102,7 @@
public static final byte QUEUE_BINDING_RECORD = 21;
- public static final byte DESTINATION_RECORD = 22;
+ // public static final byte DESTINATION_RECORD = 22;
public static final byte PERSISTENT_ID_RECORD = 23;
@@ -140,8 +138,6 @@
private final SequentialFileFactory largeMessagesFactory;
- private final ConcurrentMap<SimpleString, Long> destinationIDMap = new ConcurrentHashMap<SimpleString, Long>();
-
private volatile boolean started;
private final ExecutorService executor;
@@ -892,43 +888,8 @@
bindingsJournal.appendDeleteRecord(queueBindingID);
}
- public boolean addDestination(final SimpleString destination) throws Exception
+ public void loadBindingJournal(final List<QueueBindingInfo> queueBindingInfos) throws Exception
{
- long destinationID = idGenerator.generateID();
-
- if (destinationIDMap.putIfAbsent(destination, destinationID) != null)
- {
- // Already exists
- return false;
- }
- else
- {
- DestinationEncoding destinationEnc = new DestinationEncoding(destination);
-
- bindingsJournal.appendAddRecord(destinationID, DESTINATION_RECORD, destinationEnc);
-
- return true;
- }
- }
-
- public boolean deleteDestination(final SimpleString destination) throws Exception
- {
- Long destinationID = destinationIDMap.remove(destination);
-
- if (destinationID == null)
- {
- return false;
- }
- else
- {
- bindingsJournal.appendDeleteRecord(destinationID);
-
- return true;
- }
- }
-
- public void loadBindingJournal(final List<QueueBindingInfo> queueBindingInfos, final List<SimpleString> destinations) throws Exception
- {
List<RecordInfo> records = new ArrayList<RecordInfo>();
List<PreparedTransactionInfo> preparedTransactions = new ArrayList<PreparedTransactionInfo>();
@@ -952,17 +913,7 @@
bindingEncoding.setPersistenceID(id);
queueBindingInfos.add(bindingEncoding);
- }
- else if (rec == DESTINATION_RECORD)
- {
- DestinationEncoding destinationEncoding = new DestinationEncoding();
-
- destinationEncoding.decode(buffer);
-
- destinationIDMap.put(destinationEncoding.destination, id);
-
- destinations.add(destinationEncoding.destination);
- }
+ }
else if (rec == PERSISTENT_ID_RECORD)
{
PersistentIDEncoding encoding = new PersistentIDEncoding();
@@ -1086,12 +1037,8 @@
if (!f.exists())
{
- log.info("Directory " + dir + " does not already exists");
-
if (create)
{
- log.info("Creating it");
-
if (!f.mkdirs())
{
throw new IllegalStateException("Failed to create directory " + dir);
@@ -1099,15 +1046,9 @@
}
else
{
- log.info("Not creating it");
-
throw new IllegalArgumentException("Directory " + dir + " does not exist and will not create it");
}
}
- else
- {
- log.info("Directory " + dir + " already exists");
- }
}
/**
@@ -1121,7 +1062,6 @@
for (String tmpFile : tmpFiles)
{
SequentialFile file = largeMessagesFactory.createSequentialFile(tmpFile, -1);
- log.info("Deleting file " + file);
file.delete();
}
}
Modified: trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/persistence/impl/nullpm/NullStorageManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -75,23 +75,13 @@
{
}
- public boolean addDestination(final SimpleString destination) throws Exception
- {
- return true;
- }
-
public void commit(final long txID) throws Exception
{
}
- public boolean deleteDestination(final SimpleString destination) throws Exception
+ public void loadBindingJournal(final List<QueueBindingInfo> queueBindingInfos) throws Exception
{
- return true;
- }
- public void loadBindingJournal(final List<QueueBindingInfo> queueBindingInfos, final List<SimpleString> destinations) throws Exception
- {
-
}
public void prepare(final long txID, final Xid xid) throws Exception
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/AddressManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/AddressManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/AddressManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -21,11 +21,10 @@
*/
package org.jboss.messaging.core.postoffice;
-import org.jboss.messaging.utils.SimpleString;
-
import java.util.Map;
-import java.util.Set;
+import org.jboss.messaging.utils.SimpleString;
+
/**
* Used to maintain addresses and Bindings.
*
@@ -43,14 +42,6 @@
void clear();
- boolean addDestination(SimpleString address);
-
- boolean removeDestination(SimpleString address);
-
- boolean containsDestination(SimpleString address);
-
- Set<SimpleString> getDestinations();
-
Binding getBinding(SimpleString queueName);
Map<SimpleString, Binding> getBindings();
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/Bindings.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/Bindings.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/Bindings.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -24,6 +24,7 @@
import java.util.Collection;
+import org.jboss.messaging.core.remoting.Channel;
import org.jboss.messaging.core.server.ServerMessage;
import org.jboss.messaging.core.transaction.Transaction;
import org.jboss.messaging.utils.SimpleString;
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/PostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/PostOffice.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/PostOffice.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -23,12 +23,10 @@
package org.jboss.messaging.core.postoffice;
import java.util.List;
-import java.util.Set;
import org.jboss.messaging.core.paging.PagingManager;
import org.jboss.messaging.core.server.MessagingComponent;
import org.jboss.messaging.core.server.Queue;
-import org.jboss.messaging.core.server.SendLock;
import org.jboss.messaging.core.server.ServerMessage;
import org.jboss.messaging.core.transaction.Transaction;
import org.jboss.messaging.utils.SimpleString;
@@ -53,12 +51,6 @@
*/
public interface PostOffice extends MessagingComponent
{
- boolean addDestination(SimpleString address, boolean durable) throws Exception;
-
- boolean removeDestination(SimpleString address, boolean durable) throws Exception;
-
- boolean containsDestination(SimpleString address);
-
void addBinding(Binding binding) throws Exception;
Binding removeBinding(SimpleString uniqueName) throws Exception;
@@ -73,14 +65,10 @@
boolean redistribute(ServerMessage message, SimpleString routingName, Transaction tx) throws Exception;
- Set<SimpleString> listAllDestinations();
-
List<Queue> activate();
PagingManager getPagingManager();
- SendLock getAddressLock(SimpleString address);
-
DuplicateIDCache getDuplicateIDCache(SimpleString address);
void sendQueueInfoToQueue(SimpleString queueName, SimpleString address) throws Exception;
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/BindingsImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -133,7 +133,7 @@
private void routeFromCluster(final ServerMessage message, final Transaction tx) throws Exception
{
- byte[] ids = (byte[])message.getProperty(MessageImpl.HDR_ROUTE_TO_IDS);
+ byte[] ids = (byte[])message.removeProperty(MessageImpl.HDR_ROUTE_TO_IDS);
ByteBuffer buff = ByteBuffer.wrap(ids);
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/PostOfficeImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -35,7 +35,6 @@
import org.jboss.messaging.core.buffers.ChannelBuffers;
import org.jboss.messaging.core.client.management.impl.ManagementHelper;
-import org.jboss.messaging.core.exception.MessagingException;
import org.jboss.messaging.core.filter.Filter;
import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.management.ManagementService;
@@ -56,9 +55,7 @@
import org.jboss.messaging.core.postoffice.QueueInfo;
import org.jboss.messaging.core.server.Queue;
import org.jboss.messaging.core.server.QueueFactory;
-import org.jboss.messaging.core.server.SendLock;
import org.jboss.messaging.core.server.ServerMessage;
-import org.jboss.messaging.core.server.impl.SendLockImpl;
import org.jboss.messaging.core.server.impl.ServerMessageImpl;
import org.jboss.messaging.core.settings.HierarchicalRepository;
import org.jboss.messaging.core.settings.impl.AddressSettings;
@@ -88,8 +85,6 @@
private final QueueFactory queueFactory;
- private final boolean checkAllowable;
-
private final StorageManager storageManager;
private final PagingManager pagingManager;
@@ -100,8 +95,6 @@
private final ManagementService managementService;
- private final Map<SimpleString, SendLock> addressLocks = new HashMap<SimpleString, SendLock>();
-
private ScheduledThreadPoolExecutor messageExpiryExecutor;
private final long messageExpiryScanPeriod;
@@ -131,19 +124,18 @@
private final org.jboss.messaging.utils.ExecutorFactory redistributorExecutorFactory;
private final HierarchicalRepository<AddressSettings> addressSettingsRepository;
-
+
public PostOfficeImpl(final StorageManager storageManager,
final PagingManager pagingManager,
final QueueFactory bindableFactory,
final ManagementService managementService,
final long messageExpiryScanPeriod,
final int messageExpiryThreadPriority,
- final boolean checkAllowable,
final boolean enableWildCardRouting,
final boolean backup,
final int idCacheSize,
final boolean persistIDCache,
- final ExecutorFactory orderedExecutorFactory,
+ final ExecutorFactory orderedExecutorFactory,
HierarchicalRepository<AddressSettings> addressSettingsRepository)
{
@@ -153,8 +145,6 @@
this.managementService = managementService;
- this.checkAllowable = checkAllowable;
-
this.pagingManager = pagingManager;
this.messageExpiryScanPeriod = messageExpiryScanPeriod;
@@ -178,7 +168,7 @@
this.redistributorExecutorFactory = orderedExecutorFactory;
- this.addressSettingsRepository = addressSettingsRepository;
+ this.addressSettingsRepository = addressSettingsRepository;
}
// MessagingComponent implementation ---------------------------------------
@@ -202,9 +192,9 @@
messageExpiryThreadPriority));
messageExpiryExecutor.setExecuteExistingDelayedTasksAfterShutdownPolicy(false);
messageExpiryExecutor.scheduleWithFixedDelay(messageExpiryRunner,
- messageExpiryScanPeriod,
- messageExpiryScanPeriod,
- TimeUnit.MILLISECONDS);
+ messageExpiryScanPeriod,
+ messageExpiryScanPeriod,
+ TimeUnit.MILLISECONDS);
}
started = true;
}
@@ -221,14 +211,6 @@
addressManager.clear();
- // Release all the locks
- for (SendLock lock : addressLocks.values())
- {
- lock.close();
- }
-
- addressLocks.clear();
-
started = false;
}
@@ -279,7 +261,7 @@
QueueInfo info = new QueueInfo(routingName, clusterName, address, filterString, transientID, distance);
queueInfos.put(clusterName, info);
-
+
break;
}
case NotificationType.BINDING_REMOVED_INDEX:
@@ -299,7 +281,7 @@
{
throw new IllegalStateException("Cannot find queue info for queue " + clusterName);
}
-
+
break;
}
case NotificationType.CONSUMER_CREATED_INDEX:
@@ -334,7 +316,7 @@
info.setFilterStrings(filterStrings);
}
-
+
filterStrings.add(filterString);
}
@@ -360,19 +342,19 @@
{
// We have a local queue
Queue queue = (Queue)binding.getBindable();
-
+
AddressSettings addressSettings = addressSettingsRepository.getMatch(binding.getAddress()
- .toString());
+ .toString());
long redistributionDelay = addressSettings.getRedistributionDelay();
-
+
if (redistributionDelay != -1)
- {
+ {
queue.addRedistributor(redistributionDelay, redistributorExecutorFactory.getExecutor());
- }
+ }
}
}
-
+
break;
}
case NotificationType.CONSUMER_CLOSED_INDEX:
@@ -387,7 +369,7 @@
}
SimpleString filterString = (SimpleString)props.getProperty(ManagementHelper.HDR_FILTERSTRING);
-
+
QueueInfo info = queueInfos.get(clusterName);
if (info == null)
@@ -430,75 +412,29 @@
}
Queue queue = (Queue)binding.getBindable();
-
+
AddressSettings addressSettings = addressSettingsRepository.getMatch(binding.getAddress()
- .toString());
+ .toString());
long redistributionDelay = addressSettings.getRedistributionDelay();
-
+
if (redistributionDelay != -1)
{
- queue.addRedistributor(redistributionDelay, redistributorExecutorFactory.getExecutor());
- }
+ queue.addRedistributor(redistributionDelay, redistributorExecutorFactory.getExecutor());
+ }
}
}
-
-
-
+
break;
}
-
+
}
}
}
// PostOffice implementation -----------------------------------------------
- public synchronized boolean addDestination(final SimpleString address, final boolean durable) throws Exception
- {
- boolean added = addressManager.addDestination(address);
- if (added)
- {
- if (durable)
- {
- storageManager.addDestination(address);
- }
-
- managementService.registerAddress(address);
- }
-
- return added;
- }
-
- public synchronized boolean removeDestination(final SimpleString address, final boolean durable) throws Exception
- {
- boolean removed = addressManager.removeDestination(address);
-
- if (removed)
- {
- if (durable)
- {
- storageManager.deleteDestination(address);
- }
- managementService.unregisterAddress(address);
- }
-
- addressLocks.remove(address);
-
- return removed;
- }
-
- public synchronized boolean containsDestination(final SimpleString address)
- {
- return addressManager.containsDestination(address);
- }
-
- public Set<SimpleString> listAllDestinations()
- {
- return addressManager.getDestinations();
- }
-
// TODO - needs to be synchronized to prevent happening concurrently with activate().
// (and possible removeBinding and other methods)
// Otherwise can have situation where createQueue comes in before failover, then failover occurs
@@ -507,9 +443,26 @@
public synchronized void addBinding(final Binding binding) throws Exception
{
binding.setID(generateTransientID());
+
+ boolean existed = addressManager.addBinding(binding);
+
+ if (binding.getType() == BindingType.LOCAL_QUEUE)
+ {
+ Queue queue = (Queue)binding.getBindable();
- addBindingInMemory(binding);
+ if (backup)
+ {
+ queue.setBackup();
+ }
+ managementService.registerQueue(queue, binding.getAddress(), storageManager);
+
+ if (!existed)
+ {
+ managementService.registerAddress(binding.getAddress());
+ }
+ }
+
TypedProperties props = new TypedProperties();
props.putIntProperty(ManagementHelper.HDR_BINDING_TYPE, binding.getType().toInt());
@@ -536,11 +489,16 @@
public synchronized Binding removeBinding(final SimpleString uniqueName) throws Exception
{
- Binding binding = removeBindingInMemory(uniqueName);
-
+ Binding binding = addressManager.removeBinding(uniqueName);
+
if (binding.getType() == BindingType.LOCAL_QUEUE)
{
managementService.unregisterQueue(uniqueName, binding.getAddress());
+
+ if (addressManager.getBindings(binding.getAddress()) == null)
+ {
+ managementService.unregisterAddress(binding.getAddress());
+ }
}
TypedProperties props = new TypedProperties();
@@ -574,20 +532,13 @@
{
return addressManager.getBinding(name);
}
+
+ public Set<Long> idsAdded = new HashSet<Long>();
public void route(final ServerMessage message, Transaction tx) throws Exception
- {
+ {
SimpleString address = message.getDestination();
- if (checkAllowable)
- {
- if (!addressManager.containsDestination(address))
- {
- throw new MessagingException(MessagingException.ADDRESS_DOES_NOT_EXIST,
- "Cannot route to address " + address);
- }
- }
-
byte[] duplicateID = (byte[])message.getProperty(MessageImpl.HDR_DUPLICATE_DETECTION_ID);
DuplicateIDCache cache = null;
@@ -655,6 +606,8 @@
if (bindings != null)
{
bindings.route(message, tx);
+
+ // idsAdded.add(message.getMessageID());
}
if (startedTx)
@@ -715,20 +668,6 @@
return queues;
}
- public synchronized SendLock getAddressLock(final SimpleString address)
- {
- SendLock lock = addressLocks.get(address);
-
- if (lock == null)
- {
- lock = new SendLockImpl();
-
- addressLocks.put(address, lock);
- }
-
- return lock;
- }
-
public DuplicateIDCache getDuplicateIDCache(final SimpleString address)
{
DuplicateIDCache cache = duplicateIDCaches.get(address);
@@ -779,7 +718,7 @@
if (info.getAddress().startsWith(address))
{
message = createQueueInfoMessage(NotificationType.BINDING_ADDED, queueName);
-
+
message.putStringProperty(ManagementHelper.HDR_ADDRESS, info.getAddress());
message.putStringProperty(ManagementHelper.HDR_CLUSTER_NAME, info.getClusterName());
message.putStringProperty(ManagementHelper.HDR_ROUTING_NAME, info.getRoutingName());
@@ -799,7 +738,7 @@
message.putStringProperty(ManagementHelper.HDR_CLUSTER_NAME, info.getClusterName());
message.putStringProperty(ManagementHelper.HDR_ROUTING_NAME, info.getRoutingName());
message.putIntProperty(ManagementHelper.HDR_DISTANCE, info.getDistance());
-
+
routeDirect(queue, message);
}
@@ -814,7 +753,7 @@
message.putStringProperty(ManagementHelper.HDR_ROUTING_NAME, info.getRoutingName());
message.putStringProperty(ManagementHelper.HDR_FILTERSTRING, filterString);
message.putIntProperty(ManagementHelper.HDR_DISTANCE, info.getDistance());
-
+
routeDirect(queue, message);
}
}
@@ -888,40 +827,6 @@
return oper;
}
- private void addBindingInMemory(final Binding binding) throws Exception
- {
- boolean exists = addressManager.addBinding(binding);
-
- if (!exists)
- {
- managementService.registerAddress(binding.getAddress());
- }
-
- if (binding.getType() == BindingType.LOCAL_QUEUE)
- {
- Queue queue = (Queue)binding.getBindable();
-
- if (backup)
- {
- queue.setBackup();
- }
-
- managementService.registerQueue(queue, binding.getAddress(), storageManager);
- }
- }
-
- private Binding removeBindingInMemory(final SimpleString bindingName) throws Exception
- {
- Binding binding = addressManager.removeBinding(bindingName);
-
- if (binding != null)
- {
- managementService.unregisterAddress(binding.getAddress());
- }
-
- return binding;
- }
-
private class MessageExpiryRunner implements Runnable
{
public synchronized void run()
@@ -1068,9 +973,5 @@
}
}
}
-
}
-
-
-
}
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/SimpleAddressManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/SimpleAddressManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/SimpleAddressManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -40,12 +40,10 @@
* @author <a href="jmesnil at redhat.com">Jeff Mesnil</a>
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
*/
-public class SimpleAddressManager implements AddressManager
+public class SimpleAddressManager implements AddressManager
{
private final ConcurrentMap<SimpleString, Bindings> mappings = new ConcurrentHashMap<SimpleString, Bindings>();
- private final ConcurrentSet<SimpleString> destinations = new ConcurrentHashSet<SimpleString>();
-
private final ConcurrentMap<SimpleString, Binding> nameMap = new ConcurrentHashMap<SimpleString, Binding>();
public boolean addBinding(final Binding binding)
@@ -76,26 +74,6 @@
return mappings.get(address);
}
- public boolean addDestination(final SimpleString address)
- {
- return destinations.addIfAbsent(address);
- }
-
- public boolean removeDestination(final SimpleString address)
- {
- return destinations.remove(address);
- }
-
- public boolean containsDestination(final SimpleString address)
- {
- return destinations.contains(address);
- }
-
- public Set<SimpleString> getDestinations()
- {
- return destinations;
- }
-
public Binding getBinding(final SimpleString bindableName)
{
return nameMap.get(bindableName);
@@ -108,7 +86,7 @@
public void clear()
{
- destinations.clear();
+ // destinations.clear();
nameMap.clear();
mappings.clear();
}
Modified: trunk/src/main/org/jboss/messaging/core/postoffice/impl/WildcardAddressManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/postoffice/impl/WildcardAddressManager.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/postoffice/impl/WildcardAddressManager.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -161,19 +161,6 @@
return binding;
}
- public boolean containsDestination(final SimpleString address)
- {
- Address add = new AddressImpl(address);
- if (add.containsWildCard())
- {
- return true;
- }
- else
- {
- return super.containsDestination(address);
- }
- }
-
public void clear()
{
super.clear();
Modified: trunk/src/main/org/jboss/messaging/core/remoting/Channel.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/Channel.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/Channel.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -14,7 +14,6 @@
import java.util.concurrent.locks.Lock;
import org.jboss.messaging.core.exception.MessagingException;
-import org.jboss.messaging.core.remoting.server.DelayedResult;
/**
* A Channel A Channel *does not* support concurrent access by more than one thread!
@@ -29,19 +28,15 @@
Packet sendBlocking(Packet packet) throws MessagingException;
- DelayedResult replicatePacket(Packet packet);
+ void replicatePacket(Packet packet, long replicatedChannelID, Runnable action);
- void replicateComplete();
-
void setHandler(ChannelHandler handler);
void close();
- Channel getReplicatingChannel();
-
- void transferConnection(RemotingConnection newConnection);
+ void transferConnection(RemotingConnection newConnection, final long newID, final Channel replicatingChannel);
- void replayCommands(int lastReceivedCommandID);
+ void replayCommands(int lastReceivedCommandID, final long newID);
int getLastReceivedCommandID();
@@ -55,11 +50,11 @@
RemotingConnection getConnection();
- void replicatingChannelDead();
+ void executeOutstandingDelayedResults();
void confirm(Packet packet);
void setCommandConfirmationHandler(CommandConfirmationHandler handler);
- void flushConfirmations();
+ void flushConfirmations();
}
Modified: trunk/src/main/org/jboss/messaging/core/remoting/Packet.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/Packet.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/Packet.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -48,9 +48,11 @@
int getPacketSize();
int getRequiredBufferSize();
-
boolean isRequiresConfirmations();
- boolean isWriteAlways();
+ boolean isWriteAlways();
}
+
+
+
Modified: trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/RemotingConnection.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -38,15 +38,15 @@
void addFailureListener(FailureListener listener);
boolean removeFailureListener(FailureListener listener);
-
+
List<FailureListener> getFailureListeners();
-
+
void setFailureListeners(List<FailureListener> listeners);
MessagingBuffer createBuffer(int size);
void fail(MessagingException me);
-
+
void destroy();
boolean isExpired(long now);
@@ -56,19 +56,10 @@
void syncIDGeneratorSequence(long id);
long getIDGeneratorSequence();
-
+
void activate();
-
+
void freeze();
-
- RemotingConnection getReplicatingConnection();
-
- void setReplicatingConnection(RemotingConnection connection);
-
+
Connection getTransportConnection();
-
- void setReadyToClose();
-
- boolean isReadyToClose();
-
}
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/RemotingConnectionImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -16,7 +16,6 @@
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.CREATESESSION_RESP;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.EARLY_RESPONSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.EXCEPTION;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.QUIT;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.NULL_RESPONSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.PACKETS_CONFIRMED;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.PING;
@@ -26,14 +25,13 @@
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.REPLICATE_CREATESESSION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.REPLICATION_RESPONSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ACKNOWLEDGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ADD_DESTINATION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BINDINGQUERY;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BINDINGQUERY_RESP;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CLOSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_COMMIT;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CONSUMER_CLOSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATEQUEUE;
+import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATE_QUEUE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_DELETE_QUEUE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_EXPIRED;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_FAILOVER_COMPLETE;
@@ -42,7 +40,6 @@
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_QUEUEQUERY_RESP;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_RECEIVE_CONTINUATION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_RECEIVE_MSG;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_REMOVE_DESTINATION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_REPLICATE_DELIVERY;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ROLLBACK;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_SEND;
@@ -103,7 +100,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.ReplicateCreateSessionMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.RollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionCloseMessage;
@@ -118,8 +114,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
@@ -135,7 +129,7 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
-import org.jboss.messaging.core.remoting.server.DelayedResult;
+import org.jboss.messaging.core.remoting.impl.wireformat.replication.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.spi.Connection;
import org.jboss.messaging.core.remoting.spi.ConnectionLifeCycleListener;
import org.jboss.messaging.core.remoting.spi.Connector;
@@ -230,8 +224,6 @@
private final Channel pingChannel;
- private volatile RemotingConnection replicatingConnection;
-
private volatile boolean active;
private final boolean client;
@@ -246,6 +238,7 @@
// Channels 0-9 are reserved for the system
// 0 is for pinging
// 1 is for session creation and attachment
+ // 2 is for replication
private volatile SimpleIDGenerator idGenerator = new SimpleIDGenerator(10);
private boolean idGeneratorSynced = false;
@@ -258,13 +251,10 @@
private final Object failLock = new Object();
- private boolean readyToClose = false;
-
// debug only stuff
private boolean createdActive;
-
-
+
// Constructors
// ---------------------------------------------------------------------------------
@@ -278,15 +268,7 @@
final ScheduledExecutorService pingExecutor,
final List<Interceptor> interceptors)
{
- this(transportConnection,
- blockingCallTimeout,
- pingPeriod,
- connectionTTL,
- pingExecutor,
- interceptors,
- null,
- true,
- true);
+ this(transportConnection, blockingCallTimeout, pingPeriod, connectionTTL, pingExecutor, interceptors, true, true);
}
/*
@@ -294,12 +276,11 @@
*/
public RemotingConnectionImpl(final Connection transportConnection,
final List<Interceptor> interceptors,
- final RemotingConnection replicatingConnection,
final boolean active,
final long connectionTTL)
{
- this(transportConnection, -1, -1, connectionTTL, null, interceptors, replicatingConnection, active, false);
+ this(transportConnection, -1, -1, connectionTTL, null, interceptors, active, false);
}
private RemotingConnectionImpl(final Connection transportConnection,
@@ -308,19 +289,16 @@
final long connectionTTL,
final ScheduledExecutorService pingExecutor,
final List<Interceptor> interceptors,
- final RemotingConnection replicatingConnection,
final boolean active,
final boolean client)
- {
+ {
this.transportConnection = transportConnection;
this.blockingCallTimeout = blockingCallTimeout;
this.interceptors = interceptors;
- setReplicatingConnection(replicatingConnection);
-
this.active = active;
this.pingPeriod = pingPeriod;
@@ -360,7 +338,7 @@
{
return this.transportConnection;
}
-
+
public List<FailureListener> getFailureListeners()
{
return new ArrayList<FailureListener>(failureListeners);
@@ -422,21 +400,6 @@
return transportConnection.createBuffer(size);
}
- public RemotingConnection getReplicatingConnection()
- {
- return replicatingConnection;
- }
-
- public void setReplicatingConnection(final RemotingConnection connection)
- {
- this.replicatingConnection = connection;
-
- if (replicatingConnection != null)
- {
- replicatingConnection.addFailureListener(new ReplicatingConnectionFailureListener());
- }
- }
-
/*
* This can be called concurrently by more than one thread so needs to be locked
*/
@@ -448,7 +411,7 @@
{
return;
}
-
+
destroyed = true;
}
@@ -457,7 +420,7 @@
// Then call the listeners
callListeners(me);
- internalClose();
+ internalClose();
}
public void destroy()
@@ -468,7 +431,7 @@
{
return;
}
-
+
destroyed = true;
}
@@ -477,7 +440,7 @@
// TODO: https://jira.jboss.org/jira/browse/JBMESSAGING-1421
// This affects clustering, so I'm keeping this out for now
// We need to inform Listeners about the connection being closed
- // callListeners(null);
+ // callListeners(null);
}
public boolean isExpired(final long now)
@@ -517,20 +480,11 @@
public void bufferReceived(final Object connectionID, final MessagingBuffer buffer)
{
final Packet packet = decode(buffer);
-
+
synchronized (transferLock)
{
if (!frozen)
{
- // we intercept the QUIT command her to flag the remoting connection
- // as ready to be closed. No other packets are expected to be
- // handled after the QUIT packet
- if (packet.getType() == QUIT)
- {
- setReadyToClose();
- return;
- }
-
final ChannelImpl channel = channels.get(packet.getChannelID());
if (channel != null)
@@ -555,28 +509,6 @@
frozen = true;
}
}
-
- public void setReadyToClose()
- {
- this.readyToClose = true;
- }
-
- public boolean isReadyToClose()
- {
- return readyToClose;
- }
-
-// public void resetAllReplicatingChannels()
-// {
-// replicatingConnection = null;
-//
-// for (ChannelImpl channel: channels.values())
-// {
-// channel.replicatingChannelDead();
-//
-// //channel.replicatingChannel = null;
-// }
-// }
// Package protected
// ----------------------------------------------------------------------------
@@ -624,11 +556,6 @@
// We close the underlying transport connection
transportConnection.close();
- if (replicatingConnection != null)
- {
- replicatingConnection.destroy();
- }
-
for (Channel channel : channels.values())
{
channel.close();
@@ -725,7 +652,7 @@
}
case SESS_ROLLBACK:
{
- packet = new RollbackMessage();
+ packet = new RollbackMessage();
break;
}
case SESS_QUEUEQUERY:
@@ -738,7 +665,7 @@
packet = new SessionQueueQueryResponseMessage();
break;
}
- case SESS_CREATEQUEUE:
+ case SESS_CREATE_QUEUE:
{
packet = new SessionCreateQueueMessage();
break;
@@ -748,16 +675,6 @@
packet = new SessionDeleteQueueMessage();
break;
}
- case SESS_ADD_DESTINATION:
- {
- packet = new SessionAddDestinationMessage();
- break;
- }
- case SESS_REMOVE_DESTINATION:
- {
- packet = new SessionRemoveDestinationMessage();
- break;
- }
case SESS_BINDINGQUERY:
{
packet = new SessionBindingQueryMessage();
@@ -898,11 +815,6 @@
packet = new SessionReplicateDeliveryMessage();
break;
}
- case QUIT:
- {
- packet = new PacketImpl(QUIT);
- break;
- }
default:
{
throw new IllegalArgumentException("Invalid type: " + packetType);
@@ -920,7 +832,7 @@
// Needs to be static so we can re-assign it to another remotingconnection
private static class ChannelImpl implements Channel
{
- private final long id;
+ private volatile long id;
private ChannelHandler handler;
@@ -932,8 +844,6 @@
private volatile int lastReceivedCommandID = -1;
- private volatile Channel replicatingChannel;
-
private volatile RemotingConnectionImpl connection;
private volatile boolean closed;
@@ -952,7 +862,7 @@
private boolean failingOver;
- private final Queue<DelayedResult> responseActions = new ConcurrentLinkedQueue<DelayedResult>();
+ private final Queue<Runnable> responseActions = new ConcurrentLinkedQueue<Runnable>();
private final int windowSize;
@@ -961,9 +871,11 @@
private final Semaphore sendSemaphore;
private int receivedBytes;
-
+
private CommandConfirmationHandler commandConfirmationHandler;
-
+
+ private int responseActionCount;
+
public void setCommandConfirmationHandler(final CommandConfirmationHandler handler)
{
this.commandConfirmationHandler = handler;
@@ -978,15 +890,6 @@
this.id = id;
- if (connection.replicatingConnection != null && id != 0)
- {
- // We don't redirect the ping channel
-
- replicatingChannel = connection.replicatingConnection.getChannel(id, -1, false);
-
- replicatingChannel.setHandler(new ReplicatedPacketsConfirmedChannelHandler());
- }
-
this.windowSize = windowSize;
this.confWindowSize = (int)(0.75 * windowSize);
@@ -1089,7 +992,7 @@
}
if (connection.active || packet.isWriteAlways())
- {
+ {
connection.transportConnection.write(buffer);
}
}
@@ -1159,7 +1062,7 @@
}
connection.transportConnection.write(buffer);
-
+
long toWait = connection.blockingCallTimeout;
long start = System.currentTimeMillis();
@@ -1207,45 +1110,49 @@
// Must be synchronized since can be called by incoming session commands but also by deliveries
// Also needs to be synchronized with respect to replicatingChannelDead
- public DelayedResult replicatePacket(final Packet packet)
+ public void replicatePacket(final Packet packet, final long replicatedChannelID, final Runnable action)
{
+ packet.setChannelID(replicatedChannelID);
+
synchronized (replicationLock)
{
- if (replicatingChannel != null)
+ if (playedResponsesOnFailure && action != null)
{
- DelayedResult result = new DelayedResult();
-
- responseActions.add(result);
-
- responseActionCount++;
-
- replicatingChannel.send(packet);
-
- return result;
+ //Already replicating channel failed, so just play the action now
+
+ action.run();
}
else
- {
- return null;
+ {
+ if (action != null)
+ {
+ responseActions.add(action);
+
+ responseActionCount++;
+ }
+
+ final MessagingBuffer buffer = connection.transportConnection.createBuffer(packet.getRequiredBufferSize());
+
+ packet.encode(buffer);
+
+ connection.transportConnection.write(buffer);
}
}
}
- // The replicating connection has died (backup has died)
- public void replicatingChannelDead()
+ public void executeOutstandingDelayedResults()
{
synchronized (replicationLock)
- {
- replicatingChannel = null;
-
+ {
// Execute all the response actions now
while (true)
{
- DelayedResult result = responseActions.poll();
+ Runnable action = responseActions.poll();
- if (result != null)
+ if (action != null)
{
- result.replicated();
+ action.run();
}
else
{
@@ -1253,100 +1160,12 @@
}
}
- responseActionCount = 0;
+ responseActionCount = 0;
+
+ this.playedResponsesOnFailure = true;
}
}
- public void replicateComplete()
- {
- if (!connection.active)
- {
- // We're on backup so send back a replication response
-
- Packet packet = new PacketImpl(REPLICATION_RESPONSE);
-
- packet.setChannelID(id);
-
- doWrite(packet);
- }
- }
-
- // This will never get called concurrently by more than one thread
-
- private int responseActionCount;
-
- // TODO it's not ideal synchronizing this since it forms a contention point with replication
- // but we need to do this to protect it w.r.t. the check on replicatingChannel
- public void replicateResponseReceived()
- {
- DelayedResult result = null;
-
- synchronized (replicationLock)
- {
- if (replicatingChannel != null)
- {
- result = responseActions.poll();
-
- if (result == null)
- {
- throw new IllegalStateException("Cannot find response action");
- }
- }
- }
-
- // Must execute outside of lock
- if (result != null)
- {
- result.replicated();
-
- // TODO - we can optimise this not to lock every time - only if waiting for all replications to return
- synchronized (replicationLock)
- {
- responseActionCount--;
-
- if (responseActionCount == 0)
- {
- replicationLock.notify();
- }
- }
- }
- }
-
- private void waitForAllReplicationResponse()
- {
- synchronized (replicationLock)
- {
- if (replicatingChannel != null)
- {
- long toWait = 10000; // TODO don't hardcode timeout
-
- long start = System.currentTimeMillis();
-
- while (responseActionCount > 0 && toWait > 0)
- {
- try
- {
- replicationLock.wait();
- }
- catch (InterruptedException e)
- {
- }
-
- long now = System.currentTimeMillis();
-
- toWait -= now - start;
-
- start = now;
- }
-
- if (toWait <= 0)
- {
- log.warn("Timed out waiting for replication responses to return");
- }
- }
- }
- }
-
public void setHandler(final ChannelHandler handler)
{
this.handler = handler;
@@ -1358,32 +1177,18 @@
{
return;
}
-
+
if (!connection.destroyed && connection.channels.remove(id) == null)
{
throw new IllegalArgumentException("Cannot find channel with id " + id + " to close");
}
-
- if (connection.channels.size() == 0)
- {
- Packet last = new PacketImpl(QUIT);
- send(last);
- }
-
- if (replicatingChannel != null)
- {
- replicatingChannel.close();
- }
-
- closed = true;
- }
- public Channel getReplicatingChannel()
- {
- return replicatingChannel;
+ closed = true;
}
- public void transferConnection(final RemotingConnection newConnection)
+ public void transferConnection(final RemotingConnection newConnection,
+ final long newChannelID,
+ final Channel replicatingChannel)
{
// Needs to synchronize on the connection to make sure no packets from
// the old connection get processed after transfer has occurred
@@ -1391,34 +1196,41 @@
{
connection.channels.remove(id);
- // If we're reconnecting to a live node which is replicated then there will be a replicating channel
- // too. We need to then make sure that all replication responses come back since packets aren't
- // considered confirmed until response comes back and is processed. Otherwise responses to previous
- // message sends could come back after reconnection resulting in clients resending same message
- // since it wasn't confirmed yet.
- waitForAllReplicationResponse();
+ if (replicatingChannel != null)
+ {
+ // If we're reconnecting to a live node which is replicated then there will be a replicating channel
+ // too. We need to then make sure that all replication responses come back since packets aren't
+ // considered confirmed until response comes back and is processed. Otherwise responses to previous
+ // message sends could come back after reconnection resulting in clients resending same message
+ // since it wasn't confirmed yet.
+ ((ChannelImpl)replicatingChannel).waitForAllReplicationResponse();
+ }
// And switch it
final RemotingConnectionImpl rnewConnection = (RemotingConnectionImpl)newConnection;
- if (rnewConnection.channels.containsKey(id))
+ if (rnewConnection.channels.containsKey(newChannelID))
{
- throw new IllegalStateException("Backup connection already has channel with id " + id);
+ throw new IllegalStateException("connection already has channel with id " + newChannelID);
}
- rnewConnection.channels.put(id, this);
+ rnewConnection.channels.put(newChannelID, this);
connection = rnewConnection;
+
+ this.id = newChannelID;
}
}
- public void replayCommands(final int otherLastReceivedCommandID)
+ public void replayCommands(final int otherLastReceivedCommandID, final long newChannelID)
{
clearUpTo(otherLastReceivedCommandID);
for (final Packet packet : resendCache)
{
+ packet.setChannelID(newChannelID);
+
doWrite(packet);
}
}
@@ -1448,8 +1260,135 @@
return connection;
}
+ public void flushConfirmations()
+ {
+ if (receivedBytes != 0 && connection.active)
+ {
+ receivedBytes = 0;
+
+ final Packet confirmed = new PacketsConfirmedMessage(lastReceivedCommandID);
+
+ confirmed.setChannelID(id);
+
+ doWrite(confirmed);
+ }
+ }
+
+ public void confirm(final Packet packet)
+ {
+ if (resendCache != null && packet.isRequiresConfirmations())
+ {
+ lastReceivedCommandID++;
+
+ receivedBytes += packet.getPacketSize();
+
+ if (receivedBytes >= confWindowSize)
+ {
+ receivedBytes = 0;
+
+ if (connection.active)
+ {
+ final Packet confirmed = new PacketsConfirmedMessage(lastReceivedCommandID);
+
+ confirmed.setChannelID(id);
+
+ doWrite(confirmed);
+ }
+ }
+ }
+ }
+
+ private void replicateComplete()
+ {
+ if (!connection.active && id != 0)
+ {
+ // We're on backup and not ping channel so send back a replication response
+
+ Packet packet = new PacketImpl(REPLICATION_RESPONSE);
+
+ packet.setChannelID(2);
+
+ doWrite(packet);
+ }
+ }
+
+ private boolean playedResponsesOnFailure;
+
+ // This will never get called concurrently by more than one thread
+
+ // TODO it's not ideal synchronizing this since it forms a contention point with replication
+ // but we need to do this to protect it w.r.t. the check on replicatingChannel
+ private void replicateResponseReceived()
+ {
+ Runnable result = null;
+
+ synchronized (replicationLock)
+ {
+ if (playedResponsesOnFailure)
+ {
+ return;
+ }
+
+ result = responseActions.poll();
+
+ if (result == null)
+ {
+ throw new IllegalStateException("Cannot find response action");
+ }
+ }
+
+ // Must execute outside of lock
+ if (result != null)
+ {
+ result.run();
+
+ // TODO - we can optimise this not to lock every time - only if waiting for all replications to return
+ synchronized (replicationLock)
+ {
+ responseActionCount--;
+
+ if (responseActionCount == 0)
+ {
+ replicationLock.notify();
+ }
+ }
+ }
+ }
+
+ private void waitForAllReplicationResponse()
+ {
+ synchronized (replicationLock)
+ {
+ long toWait = 10000; // TODO don't hardcode timeout
+
+ long start = System.currentTimeMillis();
+
+ while (responseActionCount > 0 && toWait > 0)
+ {
+ try
+ {
+ replicationLock.wait();
+ }
+ catch (InterruptedException e)
+ {
+ }
+
+ long now = System.currentTimeMillis();
+
+ toWait -= now - start;
+
+ start = now;
+ }
+
+ if (toWait <= 0)
+ {
+ log.warn("Timed out waiting for replication responses to return");
+ }
+ }
+ }
+
private void handlePacket(final Packet packet)
- {
+ {
if (packet.getType() == PACKETS_CONFIRMED)
{
if (resendCache != null)
@@ -1458,17 +1397,20 @@
clearUpTo(msg.getCommandID());
}
- else if (replicatingChannel != null)
+
+ if (!connection.client)
{
- replicatingChannel.send(packet);
- }
- else
- {
handler.handlePacket(packet);
}
return;
}
+ else if (packet.getType() == REPLICATION_RESPONSE)
+ {
+ replicateResponseReceived();
+
+ return;
+ }
else
{
if (connection.interceptors != null)
@@ -1494,7 +1436,7 @@
}
if (packet.isResponse())
- {
+ {
response = packet;
confirm(packet);
@@ -1515,6 +1457,8 @@
handler.handlePacket(packet);
}
}
+
+ replicateComplete();
}
private void doWrite(final Packet packet)
@@ -1522,48 +1466,10 @@
final MessagingBuffer buffer = connection.transportConnection.createBuffer(packet.getRequiredBufferSize());
packet.encode(buffer);
-
+
connection.transportConnection.write(buffer);
}
-
- public void flushConfirmations()
- {
- if (receivedBytes != 0 && connection.active)
- {
- receivedBytes = 0;
- final Packet confirmed = new PacketsConfirmedMessage(lastReceivedCommandID);
-
- confirmed.setChannelID(id);
-
- doWrite(confirmed);
- }
- }
-
- public void confirm(final Packet packet)
- {
- if (resendCache != null && packet.isRequiresConfirmations())
- {
- lastReceivedCommandID++;
-
- receivedBytes += packet.getPacketSize();
-
- if (receivedBytes >= confWindowSize)
- {
- receivedBytes = 0;
-
- if (connection.active)
- {
- final Packet confirmed = new PacketsConfirmedMessage(lastReceivedCommandID);
-
- confirmed.setChannelID(id);
-
- doWrite(confirmed);
- }
- }
- }
- }
-
private void clearUpTo(final int lastReceivedCommandID)
{
final int numberToClear = 1 + lastReceivedCommandID - firstStoredCommandID;
@@ -1600,7 +1506,7 @@
{
sizeToFree += packet.getPacketSize();
}
-
+
if (commandConfirmationHandler != null)
{
commandConfirmationHandler.commandConfirmed(packet);
@@ -1612,26 +1518,6 @@
if (sendSemaphore != null)
{
sendSemaphore.release(sizeToFree);
- }
- }
-
- private class ReplicatedPacketsConfirmedChannelHandler implements ChannelHandler
- {
- public void handlePacket(final Packet packet)
- {
- switch (packet.getType())
- {
- case REPLICATION_RESPONSE:
- {
- replicateResponseReceived();
-
- break;
- }
- default:
- {
- throw new IllegalArgumentException("Invalid packet " + packet);
- }
- }
}
}
}
@@ -1696,22 +1582,4 @@
}
}
}
-
- private class ReplicatingConnectionFailureListener implements FailureListener
- {
- public boolean connectionFailed(final MessagingException me)
- {
- synchronized (RemotingConnectionImpl.this)
- {
- replicatingConnection = null;
-
- for (Channel channel : channels.values())
- {
- channel.replicatingChannelDead();
- }
- }
-
- return true;
- }
- }
}
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/PacketImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/PacketImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/PacketImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -38,7 +38,7 @@
private final byte type;
private int size;
-
+
// The packet types
// -----------------------------------------------------------------------------------
@@ -68,8 +68,6 @@
public static final byte REPLICATE_CREATESESSION = 34;
- public static final byte QUIT = 35;
-
// Session
public static final byte SESS_CREATECONSUMER = 40;
@@ -85,14 +83,10 @@
public static final byte SESS_QUEUEQUERY_RESP = 49;
- public static final byte SESS_CREATEQUEUE = 50;
+ public static final byte SESS_CREATE_QUEUE = 50;
public static final byte SESS_DELETE_QUEUE = 51;
- public static final byte SESS_ADD_DESTINATION = 52;
-
- public static final byte SESS_REMOVE_DESTINATION = 53;
-
public static final byte SESS_BINDINGQUERY = 54;
public static final byte SESS_BINDINGQUERY_RESP = 55;
@@ -148,8 +142,22 @@
public static final byte SESS_RECEIVE_CONTINUATION = 80;
public static final byte SESS_FAILOVER_COMPLETE = 81;
+
+ //Replication
- public static final byte SESS_REPLICATE_DELIVERY = 82;
+ public static final byte SESS_REPLICATE_DELIVERY = 92;
+
+ public static final byte REPLICATE_ADDRESS_ADDED = 93;
+
+ public static final byte REPLICATE_ADD_DESTINATION = 94;
+
+ public static final byte REPLICATE_REMOVE_DESTINATION = 95;
+
+ public static final byte REPLICATE_ADD_BINDING = 96;
+
+ public static final byte REPLICATE_REMOVE_BINDING = 97;
+
+ public static final byte REPLICATE_ROUTE = 98;
// Static --------------------------------------------------------
@@ -182,7 +190,7 @@
buffer.writeInt(0); // The length gets filled in at the end
buffer.writeByte(type);
buffer.writeLong(channelID);
-
+
encodeBody(buffer);
size = buffer.writerIndex();
@@ -198,7 +206,7 @@
public void decode(final MessagingBuffer buffer)
{
channelID = buffer.readLong();
-
+
decodeBody(buffer);
size = buffer.readerIndex();
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/ReplicateCreateSessionMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/ReplicateCreateSessionMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/ReplicateCreateSessionMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -38,14 +38,16 @@
private String name;
- private long sessionChannelID;
+ private long replicatedSessionChannelID;
+ private long originalSessionChannelID;
+
private int version;
private String username;
private String password;
-
+
private int minLargeMessageSize;
private boolean xa;
@@ -55,7 +57,7 @@
private boolean autoCommitAcks;
private boolean preAcknowledge;
-
+
private int windowSize;
// Static --------------------------------------------------------
@@ -63,7 +65,8 @@
// Constructors --------------------------------------------------
public ReplicateCreateSessionMessage(final String name,
- final long sessionChannelID,
+ final long replicatedSessionChannelID,
+ final long originalSessionChannelID,
final int version,
final String username,
final String password,
@@ -78,14 +81,16 @@
this.name = name;
- this.sessionChannelID = sessionChannelID;
+ this.replicatedSessionChannelID = replicatedSessionChannelID;
+ this.originalSessionChannelID = originalSessionChannelID;
+
this.version = version;
this.username = username;
this.password = password;
-
+
this.minLargeMessageSize = minLargeMessageSize;
this.xa = xa;
@@ -111,11 +116,16 @@
return name;
}
- public long getSessionChannelID()
+ public long getReplicatedSessionChannelID()
{
- return sessionChannelID;
+ return replicatedSessionChannelID;
}
+ public long getOriginalSessionChannelID()
+ {
+ return originalSessionChannelID;
+ }
+
public int getVersion()
{
return version;
@@ -130,7 +140,7 @@
{
return password;
}
-
+
public int getMinLargeMessageSize()
{
return minLargeMessageSize;
@@ -164,7 +174,8 @@
public void encodeBody(final MessagingBuffer buffer)
{
buffer.writeString(name);
- buffer.writeLong(sessionChannelID);
+ buffer.writeLong(originalSessionChannelID);
+ buffer.writeLong(replicatedSessionChannelID);
buffer.writeInt(version);
buffer.writeNullableString(username);
buffer.writeNullableString(password);
@@ -179,7 +190,8 @@
public void decodeBody(final MessagingBuffer buffer)
{
name = buffer.readString();
- sessionChannelID = buffer.readLong();
+ originalSessionChannelID = buffer.readLong();
+ replicatedSessionChannelID = buffer.readLong();
version = buffer.readInt();
username = buffer.readNullableString();
password = buffer.readNullableString();
@@ -201,7 +213,8 @@
ReplicateCreateSessionMessage r = (ReplicateCreateSessionMessage)other;
boolean matches = super.equals(other) && this.name.equals(r.name) &&
- this.sessionChannelID == r.sessionChannelID &&
+ this.originalSessionChannelID == r.originalSessionChannelID &&
+ this.replicatedSessionChannelID == r.replicatedSessionChannelID &&
this.version == r.version &&
this.xa == r.xa &&
this.autoCommitSends == r.autoCommitSends &&
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/RollbackMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/RollbackMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/RollbackMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -74,16 +74,7 @@
this.considerLastMessageAsDelivered = isLastMessageAsDelived;
}
- /* (non-Javadoc)
- * @see org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl#getRequiredBufferSize()
- */
@Override
- public int getRequiredBufferSize()
- {
- return BASIC_PACKET_SIZE + DataConstants.SIZE_BOOLEAN;
- }
-
- @Override
public void encodeBody(final MessagingBuffer buffer)
{
buffer.writeBoolean(considerLastMessageAsDelivered);
Deleted: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionAddDestinationMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionAddDestinationMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionAddDestinationMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,127 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.remoting.impl.wireformat;
-
-import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
-import org.jboss.messaging.utils.SimpleString;
-
-
-/**
- *
- * A SessionAddDestinationMessage
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public class SessionAddDestinationMessage extends PacketImpl
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- private SimpleString address;
-
- private boolean durable;
-
- private boolean temporary;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- public SessionAddDestinationMessage(final SimpleString address, final boolean durable, final boolean temp)
- {
- super(SESS_ADD_DESTINATION);
-
- this.address = address;
-
- this.durable = durable;
-
- this.temporary = temp;
- }
-
- public SessionAddDestinationMessage()
- {
- super(SESS_ADD_DESTINATION);
- }
-
- // Public --------------------------------------------------------
-
- public SimpleString getAddress()
- {
- return address;
- }
-
- public boolean isDurable()
- {
- return durable;
- }
-
- public boolean isTemporary()
- {
- return temporary;
- }
-
- public void encodeBody(final MessagingBuffer buffer)
- {
- buffer.writeSimpleString(address);
- buffer.writeBoolean(durable);
- buffer.writeBoolean(temporary);
- }
-
- public void decodeBody(final MessagingBuffer buffer)
- {
- address = buffer.readSimpleString();
- durable = buffer.readBoolean();
- temporary = buffer.readBoolean();
- }
-
- @Override
- public String toString()
- {
- return getParentString() + ", address=" + address + ", temp=" + durable +"]";
- }
-
- public boolean equals(Object other)
- {
- if (other instanceof SessionAddDestinationMessage == false)
- {
- return false;
- }
-
- SessionAddDestinationMessage r = (SessionAddDestinationMessage)other;
-
- return super.equals(other) && this.address.equals(r.address) &&
- this.durable == r.durable &&
- this.temporary == r.temporary;
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
-
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionCreateQueueMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionCreateQueueMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionCreateQueueMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -41,7 +41,7 @@
private SimpleString filterString;
private boolean durable;
private boolean temporary;
-
+
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
@@ -49,7 +49,7 @@
public SessionCreateQueueMessage(final SimpleString address, final SimpleString queueName,
final SimpleString filterString, final boolean durable, final boolean temporary)
{
- super(SESS_CREATEQUEUE);
+ super(SESS_CREATE_QUEUE);
this.address = address;
this.queueName = queueName;
@@ -60,7 +60,7 @@
public SessionCreateQueueMessage()
{
- super(SESS_CREATEQUEUE);
+ super(SESS_CREATE_QUEUE);
}
// Public --------------------------------------------------------
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionDeleteQueueMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionDeleteQueueMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionDeleteQueueMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -37,7 +37,7 @@
// Attributes ----------------------------------------------------
private SimpleString queueName;
-
+
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
Deleted: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionRemoveDestinationMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionRemoveDestinationMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionRemoveDestinationMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,116 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.remoting.impl.wireformat;
-
-import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
-import org.jboss.messaging.utils.SimpleString;
-
-
-/**
- *
- * A SessionRemoveDestinationMessage
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public class SessionRemoveDestinationMessage extends PacketImpl
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- private SimpleString address;
-
- private boolean durable;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- public SessionRemoveDestinationMessage(final SimpleString address, final boolean durable)
- {
- super(SESS_REMOVE_DESTINATION);
-
- this.address = address;
-
- this.durable = durable;
- }
-
- public SessionRemoveDestinationMessage()
- {
- super(SESS_REMOVE_DESTINATION);
- }
-
- // Public --------------------------------------------------------
-
- public SimpleString getAddress()
- {
- return address;
- }
-
- public boolean isDurable()
- {
- return durable;
- }
-
- public void encodeBody(final MessagingBuffer buffer)
- {
- buffer.writeSimpleString(address);
- buffer.writeBoolean(durable);
- }
-
- public void decodeBody(final MessagingBuffer buffer)
- {
- address = buffer.readSimpleString();
- durable = buffer.readBoolean();
- }
-
- @Override
- public String toString()
- {
- return getParentString() + ", address=" + address + ", temp=" + durable + "]";
- }
-
- public boolean equals(Object other)
- {
- if (other instanceof SessionRemoveDestinationMessage == false)
- {
- return false;
- }
-
- SessionRemoveDestinationMessage r = (SessionRemoveDestinationMessage)other;
-
- return super.equals(other) && this.address.equals(r.address) &&
- this.durable == r.durable;
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
-
-
Deleted: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionReplicateDeliveryMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionReplicateDeliveryMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionReplicateDeliveryMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,99 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors by
- * the @authors tag. See the copyright.txt in the distribution for a full listing of individual contributors. This is
- * free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
- * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
- * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
- * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
- * site: http://www.fsf.org.
- */
-
-package org.jboss.messaging.core.remoting.impl.wireformat;
-
-import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
-
-/**
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @version <tt>$Revision$</tt>
- */
-public class SessionReplicateDeliveryMessage extends PacketImpl
-{
- // Constants -----------------------------------------------------
-
- // Attributes ----------------------------------------------------
-
- private long consumerID;
-
- private long messageID;
-
- // Static --------------------------------------------------------
-
- // Constructors --------------------------------------------------
-
- public SessionReplicateDeliveryMessage(final long consumerID, final long messageID)
- {
- super(SESS_REPLICATE_DELIVERY);
-
- this.consumerID = consumerID;
-
- this.messageID = messageID;
- }
-
- public SessionReplicateDeliveryMessage()
- {
- super(SESS_REPLICATE_DELIVERY);
- }
-
- // Public --------------------------------------------------------
-
- public long getConsumerID()
- {
- return consumerID;
- }
-
- public long getMessageID()
- {
- return messageID;
- }
-
- public void encodeBody(final MessagingBuffer buffer)
- {
- buffer.writeLong(consumerID);
-
- buffer.writeLong(messageID);
- }
-
- public void decodeBody(final MessagingBuffer buffer)
- {
- consumerID = buffer.readLong();
-
- messageID = buffer.readLong();
- }
-
- public boolean isRequiresConfirmations()
- {
- return false;
- }
-
- public boolean equals(Object other)
- {
- if (other instanceof SessionReplicateDeliveryMessage == false)
- {
- return false;
- }
-
- SessionReplicateDeliveryMessage r = (SessionReplicateDeliveryMessage)other;
-
- return super.equals(other) && this.consumerID == r.consumerID && this.messageID == r.messageID;
- }
-
- // Package protected ---------------------------------------------
-
- // Protected -----------------------------------------------------
-
- // Private -------------------------------------------------------
-
- // Inner classes -------------------------------------------------
-}
Modified: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionSendMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -54,7 +54,7 @@
private ServerMessage serverMessage;
private boolean requiresResponse;
-
+
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
@@ -162,7 +162,7 @@
else
{
buffer.writeBoolean(false);
- }
+ }
}
else if (clientMessage != null)
{
@@ -200,6 +200,7 @@
{
this.largeMessageId = -1;
}
+
}
else
{
@@ -220,9 +221,10 @@
@Override
public int getRequiredBufferSize()
{
+ int size;
if (largeMessage)
{
- return BASIC_PACKET_SIZE +
+ size = BASIC_PACKET_SIZE +
// IsLargeMessage
DataConstants.SIZE_BOOLEAN +
// BufferSize
@@ -235,10 +237,12 @@
}
else
{
- return DataConstants.SIZE_BOOLEAN + BASIC_PACKET_SIZE +
+ size = DataConstants.SIZE_BOOLEAN + BASIC_PACKET_SIZE +
clientMessage.getEncodeSize() +
DataConstants.SIZE_BOOLEAN;
}
+
+ return size;
}
// Package protected ---------------------------------------------
Copied: trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/replication/SessionReplicateDeliveryMessage.java (from rev 5912, trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/SessionReplicateDeliveryMessage.java)
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/replication/SessionReplicateDeliveryMessage.java (rev 0)
+++ trunk/src/main/org/jboss/messaging/core/remoting/impl/wireformat/replication/SessionReplicateDeliveryMessage.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -0,0 +1,100 @@
+/*
+ * JBoss, Home of Professional Open Source Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors by
+ * the @authors tag. See the copyright.txt in the distribution for a full listing of individual contributors. This is
+ * free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
+ * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ * details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
+ * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF
+ * site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.core.remoting.impl.wireformat.replication;
+
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
+
+/**
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @version <tt>$Revision$</tt>
+ */
+public class SessionReplicateDeliveryMessage extends PacketImpl
+{
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+
+ private long consumerID;
+
+ private long messageID;
+
+ // Static --------------------------------------------------------
+
+ // Constructors --------------------------------------------------
+
+ public SessionReplicateDeliveryMessage(final long consumerID, final long messageID)
+ {
+ super(SESS_REPLICATE_DELIVERY);
+
+ this.consumerID = consumerID;
+
+ this.messageID = messageID;
+ }
+
+ public SessionReplicateDeliveryMessage()
+ {
+ super(SESS_REPLICATE_DELIVERY);
+ }
+
+ // Public --------------------------------------------------------
+
+ public long getConsumerID()
+ {
+ return consumerID;
+ }
+
+ public long getMessageID()
+ {
+ return messageID;
+ }
+
+ public void encodeBody(final MessagingBuffer buffer)
+ {
+ buffer.writeLong(consumerID);
+
+ buffer.writeLong(messageID);
+ }
+
+ public void decodeBody(final MessagingBuffer buffer)
+ {
+ consumerID = buffer.readLong();
+
+ messageID = buffer.readLong();
+ }
+
+ public boolean isRequiresConfirmations()
+ {
+ return false;
+ }
+
+ public boolean equals(Object other)
+ {
+ if (other instanceof SessionReplicateDeliveryMessage == false)
+ {
+ return false;
+ }
+
+ SessionReplicateDeliveryMessage r = (SessionReplicateDeliveryMessage)other;
+
+ return super.equals(other) && this.consumerID == r.consumerID && this.messageID == r.messageID;
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+}
Deleted: trunk/src/main/org/jboss/messaging/core/remoting/server/DelayedResult.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/server/DelayedResult.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/server/DelayedResult.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,70 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-
-package org.jboss.messaging.core.remoting.server;
-
-
-/**
- * A DelayedResult
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- * Created 16 Oct 2008 10:39:10
- *
- *
- */
-public class DelayedResult
-{
- private boolean replicated;
-
- private Runnable resultRunner;
-
- public synchronized void setResultRunner(final Runnable resultRunner)
- {
- if (replicated)
- {
- resultRunner.run();
-
- replicated = false;
- }
- else
- {
- this.resultRunner = resultRunner;
- }
- }
-
- public synchronized void replicated()
- {
- if (resultRunner != null)
- {
- resultRunner.run();
- }
- else
- {
- replicated = true;
- }
- }
-
-
-
-}
Modified: trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/remoting/server/impl/RemotingServiceImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -73,7 +73,7 @@
private TimerTask failedConnectionsTask;
private final long connectionScanPeriod;
-
+
private final long connectionTTL;
private final boolean jmxEnabled;
@@ -86,7 +86,6 @@
private ManagementService managementService;
-
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
@@ -110,12 +109,12 @@
}
connectionScanPeriod = config.getConnectionScanPeriod();
-
+
connectionTTL = config.getConnectionTTLOverride();
- backup = config.isBackup();
-
- jmxEnabled= config.isJMXManagementEnabled();
+ backup = config.isBackup();
+
+ jmxEnabled = config.isJMXManagementEnabled();
}
// RemotingService implementation -------------------------------
@@ -124,14 +123,14 @@
{
this.managementService = managementService;
}
-
+
public synchronized void start() throws Exception
{
if (started)
{
return;
}
-
+
// when JMX is enabled, it requires a INVM acceptor to send the core messages
// corresponding to the JMX management operations (@see ReplicationAwareStandardMBeanWrapper)
if (jmxEnabled)
@@ -146,7 +145,9 @@
}
if (!invmAcceptorConfigured)
{
- transportConfigs.add(new TransportConfiguration(InVMAcceptorFactory.class.getName(), new HashMap<String, Object>(), "in-vm"));
+ transportConfigs.add(new TransportConfiguration(InVMAcceptorFactory.class.getName(),
+ new HashMap<String, Object>(),
+ "in-vm"));
}
}
@@ -179,11 +180,11 @@
{
a.start();
}
-
+
failedConnectionTimer = new Timer(true);
failedConnectionsTask = new FailedConnectionsTask();
-
+
failedConnectionTimer.schedule(failedConnectionsTask, connectionScanPeriod, connectionScanPeriod);
started = true;
@@ -201,9 +202,9 @@
failedConnectionsTask.cancel();
failedConnectionsTask = null;
-
+
failedConnectionTimer.cancel();
-
+
failedConnectionTimer = null;
}
@@ -211,14 +212,14 @@
{
acceptor.stop();
}
-
+
acceptors.clear();
-
+
connections.clear();
started = false;
}
-
+
public boolean isStarted()
{
return started;
@@ -252,20 +253,11 @@
{
throw new IllegalStateException("Unable to create connection, server hasn't finished starting up");
}
-
- RemotingConnection replicatingConnection = server.getReplicatingConnection();
-
- RemotingConnection rc = new RemotingConnectionImpl(connection,
- interceptors,
- replicatingConnection,
- !backup,
- connectionTTL);
-
-
- rc.setReplicatingConnection(replicatingConnection);
- Channel channel1 = rc.getChannel(1, -1, false);
+ RemotingConnection rc = new RemotingConnectionImpl(connection, interceptors, !backup, connectionTTL);
+ Channel channel1 = rc.getChannel(1, -1, false);
+
ChannelHandler handler = new MessagingServerPacketHandler(server, channel1, rc);
channel1.setHandler(handler);
@@ -277,15 +269,12 @@
public void connectionDestroyed(final Object connectionID)
{
- RemotingConnection conn = connections.get(connectionID);
-
- // if the connection is not ready to be closed properly,
- // the cleanup will occur when the connection TTL is hit
- if (conn != null && conn.isReadyToClose())
+ RemotingConnection conn = connections.remove(connectionID);
+
+ if (conn != null)
{
- connections.remove(connectionID);
conn.destroy();
- }
+ }
}
public void connectionException(final Object connectionID, final MessagingException me)
@@ -295,7 +284,7 @@
if (rc != null)
{
rc.fail(me);
- }
+ }
}
public void addInterceptor(final Interceptor interceptor)
@@ -307,7 +296,7 @@
{
return interceptors.remove(interceptor);
}
-
+
// Public --------------------------------------------------------
// Package protected ---------------------------------------------
@@ -344,7 +333,6 @@
for (RemotingConnection conn : failedConnections)
{
- connections.remove(conn.getID());
MessagingException me = new MessagingException(MessagingException.CONNECTION_TIMEDOUT,
"Did not receive ping on connection. It is likely a client has exited or crashed without " + "closing its connection, or the network between the server and client has failed. The connection will now be closed.");
Modified: trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/MessagingServer.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -20,6 +20,7 @@
import org.jboss.messaging.core.management.MessagingServerControlMBean;
import org.jboss.messaging.core.persistence.StorageManager;
import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.remoting.Channel;
import org.jboss.messaging.core.remoting.RemotingConnection;
import org.jboss.messaging.core.remoting.impl.wireformat.CreateSessionResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.ReattachSessionResponseMessage;
@@ -70,6 +71,7 @@
CreateSessionResponseMessage createSession(String name,
long channelID,
+ long replicatedSessionID,
String username,
String password,
int minLargeMessageSize,
@@ -83,6 +85,7 @@
CreateSessionResponseMessage replicateCreateSession(String name,
long channelID,
+ long originalSessionID,
String username,
String password,
int minLargeMessageSize,
@@ -93,8 +96,12 @@
boolean preAcknowledge,
boolean xa,
int sendWindowSize) throws Exception;
-
+
void removeSession(String name) throws Exception;
+
+ ServerSession getSession(String name);
+
+ Set<ServerSession> getSessions();
boolean isStarted();
@@ -108,14 +115,10 @@
PostOffice getPostOffice();
- RemotingConnection getReplicatingConnection();
-
ResourceManager getResourceManager();
List<ServerSession> getSessions(String connectionID);
-
- List<ServerSession> getSessions();
-
+
ClusterManager getClusterManager();
QueueFactory getQueueFactory();
@@ -123,4 +126,6 @@
SimpleString getNodeID();
UUID getUUID();
+
+ Channel getReplicatingChannel();
}
Modified: trunk/src/main/org/jboss/messaging/core/server/Queue.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/Queue.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/Queue.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -98,6 +98,8 @@
int getMessagesAdded();
MessageReference removeReferenceWithID(long id) throws Exception;
+
+ MessageReference removeFirstReference(long id) throws Exception;
MessageReference getReference(long id);
Deleted: trunk/src/main/org/jboss/messaging/core/server/SendLock.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/SendLock.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/SendLock.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,46 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-
-package org.jboss.messaging.core.server;
-
-/**
- * A SendLock
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- * Created 30 Oct 2008 15:48:27
- *
- *
- */
-public interface SendLock
-{
- void lock();
-
- void unlock();
-
- void beforeSend();
-
- void afterSend();
-
- void close();
-}
Modified: trunk/src/main/org/jboss/messaging/core/server/ServerConsumer.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/ServerConsumer.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/ServerConsumer.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -24,7 +24,6 @@
import java.util.List;
-import org.jboss.messaging.core.remoting.Packet;
import org.jboss.messaging.core.transaction.Transaction;
/**
@@ -38,7 +37,7 @@
{
long getID();
- void handleClose(Packet packet);
+ //void handleClose(Packet packet);
void close() throws Exception;
Modified: trunk/src/main/org/jboss/messaging/core/server/ServerSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/ServerSession.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/ServerSession.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -25,9 +25,9 @@
import org.jboss.messaging.core.remoting.Channel;
import org.jboss.messaging.core.remoting.Packet;
import org.jboss.messaging.core.remoting.RemotingConnection;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketsConfirmedMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.RollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionConsumerCloseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionConsumerFlowCreditMessage;
@@ -36,8 +36,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionExpiredMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
@@ -49,6 +47,8 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.replication.SessionReplicateDeliveryMessage;
+import org.jboss.messaging.core.server.impl.ServerSessionPacketHandler;
/**
*
@@ -110,14 +110,10 @@
void handleSetXATimeout(SessionXASetTimeoutMessage packet);
- void handleAddDestination(SessionAddDestinationMessage packet);
-
void handleStart(Packet packet);
void handleStop(Packet packet);
- void handleRemoveDestination(SessionRemoveDestinationMessage packet);
-
void handleCreateQueue(SessionCreateQueueMessage packet);
void handleDeleteQueue(SessionDeleteQueueMessage packet);
@@ -143,9 +139,15 @@
void handleClose(Packet packet);
void handleReplicatedDelivery(SessionReplicateDeliveryMessage packet);
+
+ void handlePacketsConfirmed(PacketsConfirmedMessage packet);
int transferConnection(RemotingConnection newConnection, int lastReceivedCommandID);
Channel getChannel();
+
+ ServerSessionPacketHandler getHandler();
+
+ void setHandler(ServerSessionPacketHandler handler);
}
Modified: trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/cluster/impl/BridgeImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -621,7 +621,7 @@
ServerMessage message = ref.getMessage();
refs.add(ref);
-
+
if (flowRecord != null)
{
// We make a shallow copy of the message, then we strip out the unwanted routing id headers and leave
@@ -687,7 +687,7 @@
}
producer.send(dest, message);
-
+
return HandleStatus.HANDLED;
}
}
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -49,7 +49,7 @@
import org.jboss.messaging.core.postoffice.impl.LocalQueueBinding;
import org.jboss.messaging.core.postoffice.impl.PostOfficeImpl;
import org.jboss.messaging.core.remoting.Channel;
-import org.jboss.messaging.core.remoting.ChannelHandler;
+import org.jboss.messaging.core.remoting.FailureListener;
import org.jboss.messaging.core.remoting.RemotingConnection;
import org.jboss.messaging.core.remoting.impl.RemotingConnectionImpl;
import org.jboss.messaging.core.remoting.impl.wireformat.CreateSessionResponseMessage;
@@ -102,7 +102,7 @@
// -----------------------------------------------------------------------------------
private SimpleString nodeID;
-
+
private UUID uuid;
private final Version version;
@@ -141,6 +141,12 @@
private Map<String, Object> backupConnectorParams;
+ private RemotingConnection replicatingConnection;
+
+ private Channel replicatingChannel;
+
+ private Object replicatingChannelLock = new Object();
+
// plugins
private StorageManager storageManager;
@@ -238,12 +244,11 @@
managementService,
configuration.getMessageExpiryScanPeriod(),
configuration.getMessageExpiryThreadPriority(),
- configuration.isRequireDestinations(),
configuration.isWildcardRoutingEnabled(),
configuration.isBackup(),
configuration.getIDCacheSize(),
configuration.isPersistIDCache(),
- executorFactory,
+ executorFactory,
addressSettingsRepository);
securityRepository = new HierarchicalObjectRepository<Set<Role>>();
@@ -259,17 +264,15 @@
managementService.setManagementNotificationAddress(configuration.getManagementNotificationAddress());
managementService.setClusterPassword(configuration.getManagementClusterPassword());
managementService.setManagementRequestTimeout(configuration.getManagementRequestTimeout());
-
+
List<QueueBindingInfo> queueBindingInfos = new ArrayList<QueueBindingInfo>();
- List<SimpleString> destinations = new ArrayList<SimpleString>();
+ // List<SimpleString> destinations = new ArrayList<SimpleString>();
- storageManager.loadBindingJournal(queueBindingInfos, destinations);
-
+ storageManager.loadBindingJournal(queueBindingInfos);
+
uuid = storageManager.getPersistentID();
-
+
nodeID = new SimpleString(uuid.toString());
-
- log.info("*** messaging server node id is " + nodeID);
serverManagement = managementService.registerServer(postOffice,
storageManager,
@@ -281,22 +284,6 @@
this,
queueFactory);
-
-
- // FIXME the destination corresponding to the notification address is always created
- // so that queues can be created wether the address is allowable or not (to revisit later)
- if (!postOffice.containsDestination(configuration.getManagementNotificationAddress()))
- {
- postOffice.addDestination(configuration.getManagementNotificationAddress(), true);
- }
-
- // Destinations must be added first to ensure flow controllers exist
- // before queues are created
- for (SimpleString destination : destinations)
- {
- postOffice.addDestination(destination, true);
- }
-
Map<Long, Queue> queues = new HashMap<Long, Queue>();
for (QueueBindingInfo queueBindingInfo : queueBindingInfos)
@@ -380,6 +367,7 @@
backupConnectorParams = backupConnector.getParams();
}
}
+
remotingService.setMessagingServer(this);
if (configuration.isClustered())
@@ -430,6 +418,20 @@
// Ignore
}
+ if (replicatingConnection != null)
+ {
+ try
+ {
+ replicatingConnection.destroy();
+ }
+ catch (Exception ignore)
+ {
+ }
+
+ replicatingConnection = null;
+ replicatingChannel = null;
+ }
+
pagingManager.stop();
pagingManager = null;
securityStore = null;
@@ -564,7 +566,7 @@
{
if (configuration.isBackup())
{
- freezeAllBackupConnections();
+ freezeBackupConnection();
List<Queue> toActivate = postOffice.activate();
@@ -583,7 +585,7 @@
connection.activate();
}
- // We need to prevent any more packets being handled on any connections (from live) as soon as first live connection
+ // We need to prevent any more packets being handled on replicating connection as soon as first live connection
// is created or re-attaches, to prevent a situation like the following:
// connection 1 create queue A
// connection 2 fails over
@@ -592,18 +594,29 @@
// connection 1 delivery
// connection 1 delivery gets replicated
// can't find message in queue since active was delivered immediately
- private void freezeAllBackupConnections()
+ private void freezeBackupConnection()
{
- Set<RemotingConnection> connections = new HashSet<RemotingConnection>();
+ // Sanity check
+ // All replicated sessions should be on the same connection
+ RemotingConnection replConnection = null;
for (ServerSession session : sessions.values())
{
- connections.add(session.getChannel().getConnection());
+ RemotingConnection rc = session.getChannel().getConnection();
+
+ if (replConnection == null)
+ {
+ replConnection = rc;
+ }
+ else if (replConnection != rc)
+ {
+ throw new IllegalStateException("More than one replicating connection!");
+ }
}
- for (RemotingConnection connection : connections)
+ if (replConnection != null)
{
- connection.freeze();
+ replConnection.freeze();
}
}
@@ -632,7 +645,8 @@
}
public CreateSessionResponseMessage replicateCreateSession(final String name,
- final long channelID,
+ final long replicatedChannelID,
+ final long originalChannelID,
final String username,
final String password,
final int minLargeMessageSize,
@@ -645,7 +659,8 @@
final int sendWindowSize) throws Exception
{
return doCreateSession(name,
- channelID,
+ replicatedChannelID,
+ originalChannelID,
username,
password,
minLargeMessageSize,
@@ -655,11 +670,13 @@
autoCommitAcks,
preAcknowledge,
xa,
- sendWindowSize);
+ sendWindowSize,
+ true);
}
public CreateSessionResponseMessage createSession(final String name,
final long channelID,
+ final long replicatedChannelID,
final String username,
final String password,
final int minLargeMessageSize,
@@ -675,6 +692,7 @@
return doCreateSession(name,
channelID,
+ replicatedChannelID,
username,
password,
minLargeMessageSize,
@@ -684,7 +702,8 @@
autoCommitAcks,
preAcknowledge,
xa,
- sendWindowSize);
+ sendWindowSize,
+ false);
}
public void removeSession(final String name) throws Exception
@@ -692,6 +711,11 @@
sessions.remove(name);
}
+ public ServerSession getSession(final String name)
+ {
+ return sessions.get(name);
+ }
+
public List<ServerSession> getSessions(final String connectionID)
{
Set<Entry<String, ServerSession>> sessionEntries = sessions.entrySet();
@@ -706,50 +730,47 @@
}
return matchingSessions;
}
-
- public List<ServerSession> getSessions()
+
+ public Set<ServerSession> getSessions()
{
- Set<Entry<String, ServerSession>> sessionEntries = sessions.entrySet();
- List<ServerSession> matchingSessions = new ArrayList<ServerSession>();
- for (Entry<String, ServerSession> sessionEntry : sessionEntries)
- {
- ServerSession serverSession = sessionEntry.getValue();
- matchingSessions.add(serverSession);
- }
- return matchingSessions;
+ return new HashSet<ServerSession>(sessions.values());
}
- public RemotingConnection getReplicatingConnection()
+ public Channel getReplicatingChannel()
{
- // Note we must always get a new connection each time - since there must
- // be a one to one correspondence
- // between connections to clients and replicating connections, since we
- // need to preserve channel ids
- // before and after failover
-
- if (backupConnectorFactory != null)
+ synchronized (replicatingChannelLock)
{
- NoCacheConnectionLifeCycleListener listener = new NoCacheConnectionLifeCycleListener();
+ if (replicatingChannel == null && backupConnectorFactory != null)
+ {
+ NoCacheConnectionLifeCycleListener listener = new NoCacheConnectionLifeCycleListener();
- RemotingConnectionImpl replicatingConnection = (RemotingConnectionImpl)RemotingConnectionImpl.createConnection(backupConnectorFactory,
- backupConnectorParams,
- ClientSessionFactoryImpl.DEFAULT_CALL_TIMEOUT,
- ClientSessionFactoryImpl.DEFAULT_PING_PERIOD,
- ClientSessionFactoryImpl.DEFAULT_CONNECTION_TTL,
- scheduledExecutor,
- listener);
+ replicatingConnection = (RemotingConnectionImpl)RemotingConnectionImpl.createConnection(backupConnectorFactory,
+ backupConnectorParams,
+ ClientSessionFactoryImpl.DEFAULT_CALL_TIMEOUT,
+ ClientSessionFactoryImpl.DEFAULT_PING_PERIOD,
+ ClientSessionFactoryImpl.DEFAULT_CONNECTION_TTL,
+ scheduledExecutor,
+ listener);
- listener.conn = replicatingConnection;
+ listener.conn = replicatingConnection;
- replicatingConnection.startPinger();
+ replicatingChannel = replicatingConnection.getChannel(2, -1, false);
- return replicatingConnection;
+ replicatingConnection.addFailureListener(new FailureListener()
+ {
+ public boolean connectionFailed(MessagingException me)
+ {
+ replicatingChannel.executeOutstandingDelayedResults();
+
+ return true;
+ }
+ });
+
+ replicatingConnection.startPinger();
+ }
}
- else
- {
- return null;
- }
+ return replicatingChannel;
}
public MessagingServerControlMBean getServerManagement()
@@ -776,7 +797,7 @@
{
return nodeID;
}
-
+
public UUID getUUID()
{
return uuid;
@@ -921,6 +942,7 @@
private CreateSessionResponseMessage doCreateSession(final String name,
final long channelID,
+ final long oppositeChannelID,
final String username,
final String password,
final int minLargeMessageSize,
@@ -930,14 +952,15 @@
final boolean autoCommitAcks,
final boolean preAcknowledge,
final boolean xa,
- final int sendWindowSize) throws Exception
+ final int sendWindowSize,
+ final boolean backup) throws Exception
{
if (version.getIncrementingVersion() < incrementingVersion)
{
throw new MessagingException(MessagingException.INCOMPATIBLE_CLIENT_SERVER_VERSIONS,
"client not compatible with version: " + version.getFullVersion());
}
-
+
// Is this comment relevant any more ?
// Authenticate. Successful autentication will place a new SubjectContext
@@ -962,8 +985,10 @@
Channel channel = connection.getChannel(channelID, sendWindowSize, false);
+ Channel replicatingChannel = getReplicatingChannel();
+
final ServerSessionImpl session = new ServerSessionImpl(name,
- channelID,
+ oppositeChannelID,
username,
password,
minLargeMessageSize,
@@ -982,12 +1007,16 @@
managementService,
queueFactory,
this,
- configuration.getManagementAddress());
+ configuration.getManagementAddress(),
+ replicatingChannel,
+ backup);
sessions.put(name, session);
- ChannelHandler handler = new ServerSessionPacketHandler(session, channel);
+ ServerSessionPacketHandler handler = new ServerSessionPacketHandler(session, channel);
+ session.setHandler(handler);
+
channel.setHandler(handler);
connection.addFailureListener(session);
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/MessagingServerPacketHandler.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -24,10 +24,8 @@
import org.jboss.messaging.core.remoting.RemotingConnection;
import org.jboss.messaging.core.remoting.impl.wireformat.CreateSessionMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
import org.jboss.messaging.core.remoting.impl.wireformat.ReattachSessionMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.ReplicateCreateSessionMessage;
-import org.jboss.messaging.core.remoting.server.DelayedResult;
import org.jboss.messaging.core.server.MessagingServer;
/**
@@ -60,124 +58,174 @@
public void handlePacket(final Packet packet)
{
- DelayedResult result = null;
-
- if (packet.getType() == PacketImpl.CREATESESSION && channel1.getReplicatingChannel() != null)
- {
- CreateSessionMessage msg = (CreateSessionMessage)packet;
-
- Packet replPacket = new ReplicateCreateSessionMessage(msg.getName(), msg.getSessionChannelID(),
- msg.getVersion(), msg.getUsername(),
- msg.getPassword(), msg.getMinLargeMessageSize(),
- msg.isXA(),
- msg.isAutoCommitSends(),
- msg.isAutoCommitAcks(),
- msg.isPreAcknowledge(),
- msg.getWindowSize());
-
- result = channel1.replicatePacket(replPacket);
- }
-
- Packet response = null;
+ byte type = packet.getType();
- byte type = packet.getType();
-
// All these operations need to be idempotent since they are outside of the session
// reliability replay functionality
- try
+ switch (type)
{
- switch (type)
+ case CREATESESSION:
{
- case CREATESESSION:
- {
- CreateSessionMessage request = (CreateSessionMessage)packet;
+ CreateSessionMessage request = (CreateSessionMessage)packet;
- response = server.createSession(request.getName(),
- request.getSessionChannelID(),
- request.getUsername(),
- request.getPassword(),
- request.getMinLargeMessageSize(),
- request.getVersion(),
- connection,
- request.isAutoCommitSends(),
- request.isAutoCommitAcks(),
- request.isPreAcknowledge(),
- request.isXA(),
- request.getWindowSize());
-
- break;
- }
- case REPLICATE_CREATESESSION:
- {
- ReplicateCreateSessionMessage request = (ReplicateCreateSessionMessage)packet;
+ handleCreateSession(request);
- response = server.replicateCreateSession(request.getName(),
- request.getSessionChannelID(),
- request.getUsername(),
- request.getPassword(),
- request.getMinLargeMessageSize(),
- request.getVersion(),
- connection,
- request.isAutoCommitSends(),
- request.isAutoCommitAcks(),
- request.isPreAcknowledge(),
- request.isXA(),
- request.getWindowSize());
- break;
- }
- case REATTACH_SESSION:
- {
- ReattachSessionMessage request = (ReattachSessionMessage)packet;
+ break;
+ }
+ case REPLICATE_CREATESESSION:
+ {
+ ReplicateCreateSessionMessage request = (ReplicateCreateSessionMessage)packet;
- response = server.reattachSession(connection, request.getName(), request.getLastReceivedCommandID());
+ handleReplicateCreateSession(request);
- break;
- }
- default:
- {
- response = new MessagingExceptionMessage(new MessagingException(MessagingException.UNSUPPORTED_PACKET,
- "Unsupported packet " + type));
- }
+ break;
}
+ case REATTACH_SESSION:
+ {
+ ReattachSessionMessage request = (ReattachSessionMessage)packet;
+
+ handleReattachSession(request);
+
+ break;
+ }
+ default:
+ {
+ log.error("Invalid packet " + packet);
+ }
}
- catch (Throwable t)
+ }
+
+ private void doHandleCreateSession(final CreateSessionMessage request, final long oppositeChannelID)
+ {
+ Packet response;
+ try
{
- MessagingException me;
+ response = server.createSession(request.getName(),
+ request.getSessionChannelID(),
+ oppositeChannelID,
+ request.getUsername(),
+ request.getPassword(),
+ request.getMinLargeMessageSize(),
+ request.getVersion(),
+ connection,
+ request.isAutoCommitSends(),
+ request.isAutoCommitAcks(),
+ request.isPreAcknowledge(),
+ request.isXA(),
+ request.getWindowSize());
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to create session", e);
- log.error("Caught unexpected exception", t);
-
- if (t instanceof MessagingException)
+ if (e instanceof MessagingException)
{
- me = (MessagingException)t;
+ response = new MessagingExceptionMessage((MessagingException)e);
}
else
{
- me = new MessagingException(MessagingException.INTERNAL_ERROR);
+ response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
}
+ }
+
+ channel1.send(response);
+ }
- response = new MessagingExceptionMessage(me);
+ private void handleCreateSession(final CreateSessionMessage request)
+ {
+ Channel replicatingChannel = server.getReplicatingChannel();
+
+ if (replicatingChannel == null)
+ {
+ doHandleCreateSession(request, -1);
}
+ else
+ {
+ final long replicatedChannelID = replicatingChannel.getConnection().generateChannelID();
- if (response != null)
+ Packet replPacket = new ReplicateCreateSessionMessage(request.getName(),
+ replicatedChannelID,
+ request.getSessionChannelID(),
+ request.getVersion(),
+ request.getUsername(),
+ request.getPassword(),
+ request.getMinLargeMessageSize(),
+ request.isXA(),
+ request.isAutoCommitSends(),
+ request.isAutoCommitAcks(),
+ request.isPreAcknowledge(),
+ request.getWindowSize());
+
+ replicatingChannel.replicatePacket(replPacket, 1, new Runnable()
+ {
+ public void run()
+ {
+ doHandleCreateSession(request, replicatedChannelID);
+ }
+ });
+ }
+ }
+
+ private void handleReplicateCreateSession(final ReplicateCreateSessionMessage request)
+ {
+ Packet response;
+
+ try
{
- if (result == null)
- {
- channel1.send(response);
+ response = server.replicateCreateSession(request.getName(),
+ request.getReplicatedSessionChannelID(),
+ request.getOriginalSessionChannelID(),
+ request.getUsername(),
+ request.getPassword(),
+ request.getMinLargeMessageSize(),
+ request.getVersion(),
+ connection,
+ request.isAutoCommitSends(),
+ request.isAutoCommitAcks(),
+ request.isPreAcknowledge(),
+ request.isXA(),
+ request.getWindowSize());
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to handle replicate create session", e);
+
+ if (e instanceof MessagingException)
+ {
+ response = new MessagingExceptionMessage((MessagingException)e);
}
else
{
- final Packet theResponse = response;
+ response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
+ }
+ }
+
+ channel1.send(response);
+ }
+
+ private void handleReattachSession(final ReattachSessionMessage request)
+ {
+ Packet response;
- result.setResultRunner(new Runnable()
- {
- public void run()
- {
- channel1.send(theResponse);
- }
- });
+ try
+ {
+ response = server.reattachSession(connection, request.getName(), request.getLastReceivedCommandID());
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to reattach session", e);
+
+ if (e instanceof MessagingException)
+ {
+ response = new MessagingExceptionMessage((MessagingException)e);
}
+ else
+ {
+ response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
+ }
}
-
- channel1.replicateComplete();
+
+ channel1.send(response);
}
+
}
\ No newline at end of file
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/QueueImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -358,7 +358,7 @@
}
public void addLast(final MessageReference ref)
- {
+ {
add(ref, false);
}
@@ -514,7 +514,25 @@
return removed;
}
-
+
+ public synchronized MessageReference removeFirstReference(final long id) throws Exception
+ {
+ MessageReference ref = messageReferences.peekFirst();
+
+ if (ref != null && ref.getMessage().getMessageID() == id)
+ {
+ messageReferences.removeFirst();
+
+ return ref;
+ }
+ else
+ {
+ ref = scheduledDeliveryHandler.removeReferenceWithID(id);
+ }
+
+ return ref;
+ }
+
public synchronized MessageReference getReference(final long id)
{
Iterator<MessageReference> iterator = messageReferences.iterator();
@@ -627,7 +645,7 @@
getRefsOperation(tx).addAck(reference);
}
- public void cancel(final MessageReference reference) throws Exception
+ public synchronized void cancel(final MessageReference reference) throws Exception
{
if (checkDLQ(reference))
{
@@ -866,7 +884,6 @@
{
deliveringCount.incrementAndGet();
move(toAddress, tx, ref, false);
- // ref.acknowledge(tx, storageManager, postOffice, addressSettingsRepository);
acknowledge(tx, ref);
count++;
}
@@ -907,7 +924,7 @@
public synchronized void setBackup()
{
backup = true;
-
+
direct = false;
}
@@ -918,7 +935,7 @@
if (consumersToFailover == 0)
{
backup = false;
-
+
return true;
}
else
@@ -1173,6 +1190,8 @@
{
return;
}
+
+ direct = false;
MessageReference reference;
@@ -1238,12 +1257,12 @@
if (status == HandleStatus.HANDLED)
{
if (iterator == null)
- {
- messageReferences.removeFirst();
+ {
+ messageReferences.removeFirst();
}
else
{
- iterator.remove();
+ iterator.remove();
}
}
else if (status == HandleStatus.BUSY)
@@ -1274,7 +1293,7 @@
}
boolean add = false;
-
+
if (direct && !backup)
{
// Deliver directly
@@ -1310,9 +1329,9 @@
{
expiringMessageReferences.addIfAbsent(ref);
}
-
+
if (first)
- {
+ {
messageReferences.addFirst(ref, ref.getMessage().getPriority());
}
else
@@ -1332,7 +1351,7 @@
}
}
}
-
+
private HandleStatus deliver(final MessageReference reference)
{
HandleStatus status = distributionPolicy.distribute(reference);
@@ -1412,7 +1431,7 @@
ServerMessage msg = ref.getMessage();
if (!scheduledDeliveryHandler.checkAndSchedule(ref, backup))
- {
+ {
messageReferences.addFirst(ref, msg.getPriority());
}
}
@@ -1505,7 +1524,10 @@
for (MessageReference ref : refsToAck)
{
- postAcknowledge(ref);
+ synchronized (ref.getQueue())
+ {
+ postAcknowledge(ref);
+ }
}
}
Deleted: trunk/src/main/org/jboss/messaging/core/server/impl/SendLockImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/SendLockImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/SendLockImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,137 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-
-package org.jboss.messaging.core.server.impl;
-
-import org.jboss.messaging.core.server.SendLock;
-
-
-/**
- * A SendLockImpl
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- * Created 27 Oct 2008 12:42:37
- *
- *
- */
-public class SendLockImpl implements SendLock
-{
- private boolean locked;
-
- private int count;
-
- private boolean closed;
-
- public synchronized void lock()
- {
- if (closed)
- {
- return;
- }
-
- while (count > 0 || locked)
- {
- try
- {
- wait();
-
- if (closed)
- {
- return;
- }
- }
- catch (InterruptedException e)
- {
- }
- }
-
- locked = true;
- }
-
- public synchronized void unlock()
- {
- if (closed)
- {
- return;
- }
-
- locked = false;
-
- notifyAll();
- }
-
- public synchronized void beforeSend()
- {
- if (closed)
- {
- return;
- }
-
- while (locked)
- {
- try
- {
- wait();
-
- if (closed)
- {
- return;
- }
- }
- catch (InterruptedException e)
- {
- }
- }
-
- count++;
- }
-
- public synchronized void afterSend()
- {
- if (closed)
- {
- return;
- }
-
- count--;
-
- if (count < 0)
- {
- throw new IllegalStateException("called afterSend() too many times");
- }
-
- if (count == 0)
- {
- notifyAll();
- }
- }
-
- public synchronized void close()
- {
- closed = true;
-
- notifyAll();
- }
-
-}
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerConsumerImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -32,7 +32,6 @@
import org.jboss.messaging.core.buffers.ChannelBuffers;
import org.jboss.messaging.core.client.management.impl.ManagementHelper;
-import org.jboss.messaging.core.exception.MessagingException;
import org.jboss.messaging.core.filter.Filter;
import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.management.ManagementService;
@@ -45,12 +44,9 @@
import org.jboss.messaging.core.postoffice.QueueBinding;
import org.jboss.messaging.core.remoting.Channel;
import org.jboss.messaging.core.remoting.Packet;
-import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.NullResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionReceiveMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionReplicateDeliveryMessage;
-import org.jboss.messaging.core.remoting.server.DelayedResult;
+import org.jboss.messaging.core.remoting.impl.wireformat.replication.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
import org.jboss.messaging.core.server.HandleStatus;
import org.jboss.messaging.core.server.LargeServerMessage;
@@ -92,6 +88,8 @@
private final long id;
+ private final long replicatedSessionID;
+
private final Queue messageQueue;
private final Filter filter;
@@ -129,6 +127,8 @@
private final Channel channel;
+ private final Channel replicatingChannel;
+
private volatile boolean closed;
private final boolean preAcknowledge;
@@ -140,6 +140,7 @@
// Constructors ---------------------------------------------------------------------------------
public ServerConsumerImpl(final long id,
+ final long replicatedSessionID,
final ServerSession session,
final QueueBinding binding,
final Filter filter,
@@ -148,6 +149,7 @@
final StorageManager storageManager,
final PagingManager pagingManager,
final Channel channel,
+ final Channel replicatingChannel,
final boolean preAcknowledge,
final boolean updateDeliveries,
final Executor executor,
@@ -155,6 +157,8 @@
{
this.id = id;
+ this.replicatedSessionID = replicatedSessionID;
+
this.filter = filter;
this.session = session;
@@ -173,6 +177,8 @@
this.channel = channel;
+ this.replicatingChannel = replicatingChannel;
+
this.preAcknowledge = preAcknowledge;
this.pagingManager = pagingManager;
@@ -204,76 +210,16 @@
return filter;
}
- public void handleClose(final Packet packet)
- {
- // We must stop delivery before replicating the packet, this ensures the close message gets processed
- // and replicated on the backup in the same order as any delivery that might be occuring gets
- // processed and replicated on the backup.
- // Otherwise we could end up with a situation where a close comes in, then a delivery comes in,
- // then close gets replicated to backup, then delivery gets replicated, but consumer is already
- // closed!
- setStarted(false);
-
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result != null)
- {
- result.setResultRunner(new Runnable()
- {
- public void run()
- {
- doHandleClose(packet);
- }
- });
- }
- else
- {
- doHandleClose(packet);
- }
- }
-
- private void doHandleClose(final Packet packet)
- {
- Packet response = null;
-
- try
- {
- doClose();
-
- response = new NullResponseMessage();
- }
- catch (Exception e)
- {
- log.error("Failed to close producer", e);
-
- if (e instanceof MessagingException)
- {
- response = new MessagingExceptionMessage((MessagingException)e);
- }
- else
- {
- response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
- }
- }
-
- channel.confirm(packet);
-
- channel.send(response);
- }
-
public void close() throws Exception
{
setStarted(false);
- doClose();
- }
-
- private void doClose() throws Exception
- {
messageQueue.removeConsumer(this);
session.removeConsumer(this);
+ // log.info(System.identityHashCode(this) + " consumer close");
+
LinkedList<MessageReference> refs = cancelRefs(false, null);
Iterator<MessageReference> iter = refs.iterator();
@@ -309,6 +255,8 @@
managementService.sendNotification(notification);
}
+
+ // log.info("closed consumer with id " + id);
}
public LinkedList<MessageReference> cancelRefs(final boolean lastConsumedAsDelivered, final Transaction tx) throws Exception
@@ -317,6 +265,8 @@
LinkedList<MessageReference> refs = new LinkedList<MessageReference>();
+ // log.info(System.identityHashCode(this) + " cancelling refs");
+
if (!deliveringRefs.isEmpty())
{
for (MessageReference ref : deliveringRefs)
@@ -324,13 +274,13 @@
if (performACK)
{
acknowledge(false, tx, ref.getMessage().getMessageID());
-
+
performACK = false;
}
else
{
ref.decrementDeliveryCount();
-
+
refs.add(ref);
}
}
@@ -400,7 +350,8 @@
if (ref == null)
{
- throw new IllegalStateException("Could not find reference on consumerID=" + id +
+ throw new IllegalStateException(System.identityHashCode(this) + " Could not find reference on consumerID=" +
+ id +
", messageId " +
messageID +
" backup " +
@@ -462,13 +413,15 @@
public void deliverReplicated(final long messageID) throws Exception
{
- // It may not be the first in the queue - since there may be multiple producers
- // sending to the queue
- MessageReference ref = removeReferenceOnBackup(messageID);
+ MessageReference ref = messageQueue.removeFirstReference(messageID);
+
+ //log.info("handling replicated delivery on backup " + messageID + " session " + session.getName());
if (ref == null)
{
- throw new IllegalStateException("Cannot find ref when replicating delivery " + messageID);
+ throw new IllegalStateException("Cannot find ref when replicating delivery " + messageID +
+ " queue" +
+ messageQueue.getName());
}
// We call doHandle rather than handle, since we don't want to check available credits
@@ -510,42 +463,6 @@
// Private --------------------------------------------------------------------------------------
- private MessageReference removeReferenceOnBackup(final long id) throws Exception
- {
- // most of the times, the remove will work ok, so we first try it without any locks
- MessageReference ref = messageQueue.removeReferenceWithID(id);
-
- if (ref == null)
- {
- PagingStore store = pagingManager.getPageStore(binding.getAddress());
-
- while (true)
- {
- // Can't have the same store being depaged in more than one thread
- synchronized (store)
- {
- // as soon as it gets the lock, it needs to verify if another thread couldn't find the reference
- ref = messageQueue.removeReferenceWithID(id);
- if (ref == null)
- {
- // force a depage
- if (!store.readPage()) // This returns false if there are no pages
- {
- break;
- }
- }
- else
- {
- break;
- }
- }
- }
- }
-
- return ref;
-
- }
-
private void promptDelivery()
{
lock.lock();
@@ -599,7 +516,6 @@
try
{
-
// If the consumer is stopped then we don't accept the message, it
// should go back into the
// queue for delivery later.
@@ -640,7 +556,6 @@
ref.getQueue().referenceHandled();
-
ref.incrementDeliveryCount();
// If updateDeliveries = false (set by strict-update),
@@ -690,9 +605,7 @@
final LargeMessageDeliverer localDeliverer = new LargeMessageDeliverer((LargeServerMessage)message, ref);
- DelayedResult result = channel.replicatePacket(new SessionReplicateDeliveryMessage(id, message.getMessageID()));
-
- if (result == null)
+ if (replicatingChannel == null)
{
// it doesn't need lock because deliverLargeMesasge is already inside the lock.lock()
largeMessageDeliverer = localDeliverer;
@@ -700,7 +613,10 @@
}
else
{
- result.setResultRunner(new Runnable()
+ Packet replPacket = new SessionReplicateDeliveryMessage(id, message.getMessageID());
+ replPacket.setChannelID(channel.getID());
+
+ replicatingChannel.replicatePacket(replPacket, replicatedSessionID, new Runnable()
{
public void run()
{
@@ -738,9 +654,7 @@
final SessionReceiveMessage packet = new SessionReceiveMessage(id, message, ref.getDeliveryCount());
- DelayedResult result = channel.replicatePacket(new SessionReplicateDeliveryMessage(id, message.getMessageID()));
-
- if (result == null)
+ if (replicatingChannel == null)
{
// Not replicated - just send now
@@ -748,11 +662,24 @@
}
else
{
- // Send when replicate delivery response comes back
- result.setResultRunner(new Runnable()
+ Packet replPacket = new SessionReplicateDeliveryMessage(id, message.getMessageID());
+ replPacket.setChannelID(channel.getID());
+
+// log.info("replicating delivery from live for queue " + messageQueue.getName() +
+// " ref " +
+// message.getMessageID() +
+// " session name " +
+// session.getName());
+
+ replicatingChannel.replicatePacket(replPacket, replicatedSessionID, new Runnable()
{
public void run()
{
+// log.info("got replicate delivery response " + messageQueue.getName() +
+// " ref " +
+// message.getMessageID() +
+// " session name " +
+// session.getName());
channel.send(packet);
}
});
@@ -832,7 +759,7 @@
{
sentFirstMessage = true;
- MessagingBuffer headerBuffer = ChannelBuffers.buffer(pendingLargeMessage.getPropertiesEncodeSize());
+ MessagingBuffer headerBuffer = ChannelBuffers.buffer(pendingLargeMessage.getPropertiesEncodeSize());
pendingLargeMessage.encodeProperties(headerBuffer);
@@ -982,7 +909,7 @@
localChunkLen = (int)Math.min(sizePendingLargeMessage - positionPendingLargeMessage, minLargeMessageSize);
- MessagingBuffer bodyBuffer = ChannelBuffers.buffer(localChunkLen);
+ MessagingBuffer bodyBuffer = ChannelBuffers.buffer(localChunkLen);
pendingLargeMessage.encodeBody(bodyBuffer, positionPendingLargeMessage, localChunkLen);
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -2,7 +2,6 @@
* JBoss, Home of Professional Open Source Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors by
* the @authors tag. See the copyright.txt in the distribution for a full listing of individual contributors. This is
* free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details. You should have received a copy of the GNU Lesser General Public License along with this software; if not,
@@ -36,9 +35,9 @@
import org.jboss.messaging.core.remoting.impl.wireformat.MessagingExceptionMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.NullResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketsConfirmedMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.RollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionConsumerCloseMessage;
@@ -49,8 +48,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionExpiredMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
@@ -66,7 +63,7 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
-import org.jboss.messaging.core.remoting.server.DelayedResult;
+import org.jboss.messaging.core.remoting.impl.wireformat.replication.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
import org.jboss.messaging.core.security.CheckType;
import org.jboss.messaging.core.security.SecurityStore;
@@ -75,7 +72,6 @@
import org.jboss.messaging.core.server.MessagingServer;
import org.jboss.messaging.core.server.Queue;
import org.jboss.messaging.core.server.QueueFactory;
-import org.jboss.messaging.core.server.SendLock;
import org.jboss.messaging.core.server.ServerConsumer;
import org.jboss.messaging.core.server.ServerMessage;
import org.jboss.messaging.core.server.ServerSession;
@@ -123,8 +119,12 @@
// Attributes ----------------------------------------------------------------------------
- private final long id;
+ private volatile long id;
+ // The id of the opposite channel - i.e. if this is the live then its the id on the backup, if this is the backup
+ // then it's the id on the live, or -1 if non clustered
+ private volatile long oppositeChannelID;
+
private final String username;
private final String password;
@@ -139,8 +139,10 @@
private final boolean updateDeliveries;
- private volatile RemotingConnection remotingConnection;
+ private RemotingConnection remotingConnection;
+ private Channel replicatingChannel;
+
private final Map<Long, ServerConsumer> consumers = new ConcurrentHashMap<Long, ServerConsumer>();
private final Executor executor;
@@ -151,7 +153,7 @@
private final ResourceManager resourceManager;
- private final PostOffice postOffice;
+ public final PostOffice postOffice;
private final SecurityStore securityStore;
@@ -174,21 +176,19 @@
private final QueueFactory queueFactory;
private final SimpleString nodeID;
+
+ private boolean backup;
// The current currentLargeMessage being processed
// In case of replication, currentLargeMessage should only be accessed within the replication callbacks
private volatile LargeServerMessage currentLargeMessage;
- // The current destination used for sending LargeMessages
- /**
- * We can't lookup for the address on the currentLargeMessage, as that is changed as the replication packets are coming backup from the backup node
- */
- private volatile SimpleString largeMessageCurrentAddress;
+ private ServerSessionPacketHandler handler;
// Constructors ---------------------------------------------------------------------------------
public ServerSessionImpl(final String name,
- final long id,
+ final long oppositeChannelID,
final String username,
final String password,
final int minLargeMessageSize,
@@ -207,10 +207,14 @@
final ManagementService managementService,
final QueueFactory queueFactory,
final MessagingServer server,
- final SimpleString managementAddress) throws Exception
+ final SimpleString managementAddress,
+ final Channel replicatingChannel,
+ final boolean backup) throws Exception
{
- this.id = id;
+ this.id = channel.getID();
+ this.oppositeChannelID = oppositeChannelID;
+
this.username = username;
this.password = password;
@@ -255,10 +259,24 @@
this.queueFactory = queueFactory;
this.nodeID = server.getNodeID();
+
+ this.replicatingChannel = replicatingChannel;
+
+ this.backup = backup;
}
// ServerSession implementation ----------------------------------------------------------------------------
+ public ServerSessionPacketHandler getHandler()
+ {
+ return handler;
+ }
+
+ public void setHandler(final ServerSessionPacketHandler handler)
+ {
+ this.handler = handler;
+ }
+
public String getUsername()
{
return username;
@@ -337,16 +355,13 @@
public void handleCreateConsumer(final SessionCreateConsumerMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleCreateConsumer(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -358,52 +373,17 @@
public void handleCreateQueue(final SessionCreateQueueMessage packet)
{
- final SendLock lock;
-
- if (channel.getReplicatingChannel() != null)
+ if (replicatingChannel == null)
{
- lock = postOffice.getAddressLock(packet.getAddress());
-
- lock.lock();
- }
- else
- {
- lock = null;
- }
-
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
- if (trace)
- {
- trace("(NoReplication) CreateQueue address = " + packet.getAddress() +
- " queueName = " +
- packet.getQueueName());
- }
doHandleCreateQueue(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- if (trace)
- {
- trace("(Replication) CreateQueue address = " + packet.getAddress() +
- " queueName = " +
- packet.getQueueName());
- }
- try
- {
- doHandleCreateQueue(packet);
- }
- finally
- {
- lock.unlock();
- }
+ doHandleCreateQueue(packet);
}
});
}
@@ -411,49 +391,17 @@
public void handleDeleteQueue(final SessionDeleteQueueMessage packet)
{
- final SendLock lock;
-
- if (channel.getReplicatingChannel() != null)
+ if (replicatingChannel == null)
{
- Binding binding = postOffice.getBinding(packet.getQueueName());
- lock = postOffice.getAddressLock(binding.getAddress());
-
- lock.lock();
- }
- else
- {
- lock = null;
- }
-
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
- if (trace)
- {
- trace("(NoReplication) DeleteQueue queueName = " + packet.getQueueName());
- }
doHandleDeleteQueue(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- if (trace)
- {
- trace("(Replication) DeleteQueue queueName = " + packet.getQueueName());
- }
- try
- {
- doHandleDeleteQueue(packet);
- }
- finally
- {
- lock.unlock();
- }
+ doHandleDeleteQueue(packet);
}
});
}
@@ -461,16 +409,13 @@
public void handleExecuteQueueQuery(final SessionQueueQueryMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleExecuteQueueQuery(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -482,16 +427,13 @@
public void handleExecuteBindingQuery(final SessionBindingQueryMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleExecuteBindingQuery(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -503,16 +445,13 @@
public void handleAcknowledge(final SessionAcknowledgeMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleAcknowledge(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -524,16 +463,13 @@
public void handleExpired(final SessionExpiredMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleExpired(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -545,16 +481,13 @@
public void handleCommit(final Packet packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleCommit(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -566,20 +499,18 @@
public void handleRollback(final RollbackMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+
+ if (replicatingChannel == null)
{
doHandleRollback(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- doHandleRollback(packet);
+ doHandleRollback(packet);
}
});
}
@@ -587,16 +518,13 @@
public void handleXACommit(final SessionXACommitMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXACommit(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -608,16 +536,13 @@
public void handleXAEnd(final SessionXAEndMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAEnd(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -629,16 +554,13 @@
public void handleXAForget(final SessionXAForgetMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAForget(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -650,16 +572,13 @@
public void handleXAJoin(final SessionXAJoinMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAJoin(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -671,16 +590,13 @@
public void handleXAResume(final SessionXAResumeMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAResume(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -692,16 +608,13 @@
public void handleXARollback(final SessionXARollbackMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXARollback(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -713,16 +626,13 @@
public void handleXAStart(final SessionXAStartMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAStart(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -734,16 +644,13 @@
public void handleXASuspend(final Packet packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXASuspend(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -755,16 +662,13 @@
public void handleXAPrepare(final SessionXAPrepareMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleXAPrepare(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -776,16 +680,13 @@
public void handleGetInDoubtXids(final Packet packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleGetInDoubtXids(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -797,16 +698,13 @@
public void handleGetXATimeout(final Packet packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleGetXATimeout(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -818,16 +716,13 @@
public void handleSetXATimeout(final SessionXASetTimeoutMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
+ if (replicatingChannel == null)
{
doHandleSetXATimeout(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -836,49 +731,7 @@
});
}
}
-
- public void handleAddDestination(final SessionAddDestinationMessage packet)
- {
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
- doHandleAddDestination(packet);
- }
- else
- {
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
- {
- public void run()
- {
- doHandleAddDestination(packet);
- }
- });
- }
- }
-
- public void handleRemoveDestination(final SessionRemoveDestinationMessage packet)
- {
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
- doHandleRemoveDestination(packet);
- }
- else
- {
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
- {
- public void run()
- {
- doHandleRemoveDestination(packet);
- }
- });
- }
- }
-
+
private void lockConsumers()
{
for (ServerConsumer consumer : consumers.values())
@@ -894,100 +747,86 @@
consumer.unlock();
}
}
-
+
public void handleStart(final Packet packet)
{
- boolean lock = channel.getReplicatingChannel() != null;
-
- if (lock)
- {
+ if (replicatingChannel != null)
+ {
lockConsumers();
- }
-
- // We need to prevent any delivery and replication of delivery occurring while the start/stop
- // is being processed.
- // Otherwise we can end up with start/stop being processed in different order on backup to live.
- // Which can result in, say, a delivery arriving at backup, but it's still not started!
- DelayedResult result = null;
- try
- {
- result = channel.replicatePacket(packet);
-
- // note we process start before response is back from the backup
-
- setStarted(true);
- }
- finally
- {
- if (lock)
+
+ try
+ {
+ setStarted(true);
+
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
+ {
+ public void run()
+ {
+ //setStarted(true);
+
+ channel.confirm(packet);
+ }
+ });
+ }
+ finally
{
unlockConsumers();
}
}
-
- if (result == null)
+ else
{
+ setStarted(true);
+
channel.confirm(packet);
}
- else
- {
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
- {
- public void run()
- {
- channel.confirm(packet);
- }
- });
- }
}
- // TODO try removing the lock consumers and see what happens!!
public void handleStop(final Packet packet)
{
- boolean lock = channel.getReplicatingChannel() != null;
+ final Packet response = new NullResponseMessage();
- if (lock)
- {
- lockConsumers();
- }
+ // We need to stop the session *before* replicating, to avoid this situation:
+ // session stop,
+ // stop is replicated
+ // delivery occurs, local is not stopped yet
+ // stop is processed on backup
+ // backup is stopped
+ // delivery is processed on backup
+ // it's stopped so barfs and cannot process delivery
- try
+ if (replicatingChannel != null)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- // note we process stop before response is back from the backup
-
- final Packet response = new NullResponseMessage();
-
- setStarted(false);
-
- if (result == null)
+ lockConsumers();
+
+ try
{
- channel.confirm(packet);
- // Not clustered - just send now
- channel.send(response);
- }
- else
- {
- result.setResultRunner(new Runnable()
+
+ setStarted(false);
+
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
channel.confirm(packet);
-
+
channel.send(response);
+
}
});
}
- }
- finally
- {
- if (lock)
+ finally
{
unlockConsumers();
}
}
+ else
+ {
+ setStarted(false);
+
+ channel.confirm(packet);
+
+ channel.send(response);
+ }
}
public void handleFailedOver(final Packet packet)
@@ -1002,26 +841,23 @@
public void handleClose(final Packet packet)
{
- // We need to stop the consumers first before replicating, to ensure no deliveries occur after this,
- // but we need to process the actual close() when the replication response returns, otherwise things
- // can happen like acks can come in after close
-
- for (ServerConsumer consumer : consumers.values())
+ if (replicatingChannel == null)
{
- consumer.setStarted(false);
- }
-
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
doHandleClose(packet);
}
else
{
- // Don't process until result has come back from backup
- result.setResultRunner(new Runnable()
+ // We need to stop the consumers first before replicating, to ensure no deliveries occur after this,
+ // but we need to process the actual close() when the replication response returns, otherwise things
+ // can happen like acks can come in after close
+
+ for (ServerConsumer consumer : consumers.values())
{
+ consumer.setStarted(false);
+ }
+
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
+ {
public void run()
{
doHandleClose(packet);
@@ -1032,41 +868,45 @@
public void handleCloseConsumer(final SessionConsumerCloseMessage packet)
{
- // We need to stop the consumer first before replicating, to ensure no deliveries occur after this,
- // but we need to process the actual close() when the replication response returns, otherwise things
- // can happen like acks can come in after close
+ final ServerConsumer consumer = consumers.get(packet.getConsumerID());
- ServerConsumer consumer = consumers.get(packet.getConsumerID());
+ if (replicatingChannel == null)
+ {
+ doHandleCloseConsumer(packet, consumer);
+ }
+ else
+ {
+ // We need to stop the consumer first before replicating, to ensure no deliveries occur after this,
+ // but we need to process the actual close() when the replication response returns, otherwise things
+ // can happen like acks can come in after close
- consumer.handleClose(packet);
+ consumer.setStarted(false);
+
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
+ {
+ public void run()
+ {
+ doHandleCloseConsumer(packet, consumer);
+ }
+ });
+ }
}
+
+
public void handleReceiveConsumerCredits(final SessionConsumerFlowCreditMessage packet)
{
- DelayedResult result = channel.replicatePacket(packet);
-
- try
+ if (replicatingChannel == null)
{
- // Note we don't wait for response before handling this
-
- consumers.get(packet.getConsumerID()).receiveCredits(packet.getCredits());
+ doReceiveCredits(packet);
}
- catch (Exception e)
- {
- log.error("Failed to receive credits", e);
- }
-
- if (result == null)
- {
- channel.confirm(packet);
- }
else
{
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- channel.confirm(packet);
+ doReceiveCredits(packet);
}
});
}
@@ -1091,37 +931,23 @@
return;
}
- largeMessageCurrentAddress = msg.getDestination();
-
- if (channel.getReplicatingChannel() != null)
- {
- msg.putBooleanProperty(new SimpleString("clustered"), true);
- }
-
- // Note: We don't need to use address lock until the last packet
- DelayedResult result = channel.replicatePacket(packet);
-
// With a send we must make sure it is replicated to backup before being processed on live
// or can end up with delivery being processed on backup before original send
- if (result == null)
+ if (replicatingChannel == null)
{
- if (trace)
- {
- trace("(withoutReplication) SendLargeMessage, id=" + msg.getMessageID());
- }
-
if (currentLargeMessage != null)
{
log.warn("Replacing incomplete LargeMessage with ID=" + currentLargeMessage.getMessageID());
}
currentLargeMessage = msg;
+
doSendLargeMessage(packet);
}
else
{
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
@@ -1149,21 +975,6 @@
// With a send we must make sure it is replicated to backup before being processed on live
// or can end up with delivery being processed on backup before original send
- ServerMessage msg = packet.getServerMessage();
-
- final SendLock lock;
-
- if (channel.getReplicatingChannel() != null)
- {
- lock = postOffice.getAddressLock(msg.getDestination());
-
- lock.beforeSend();
- }
- else
- {
- lock = null;
- }
-
if (packet.getMessageID() <= 0L)
{
// must generate message id here, so we know they are in sync on live and backup
@@ -1172,89 +983,36 @@
packet.setMessageID(id);
}
- if (channel.getReplicatingChannel() != null)
+ if (replicatingChannel == null)
{
- msg.putBooleanProperty(new SimpleString("clustered"), true);
- }
-
- DelayedResult result = channel.replicatePacket(packet);
-
- // With a send we must make sure it is replicated to backup before being processed on live
- // or can end up with delivery being processed on backup before original send
-
- if (result == null)
- {
doSend(packet);
}
else
{
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- try
- {
- doSend(packet);
- }
- finally
- {
- lock.afterSend();
- }
+ doSend(packet);
}
});
+
}
}
public void handleSendContinuations(final SessionSendContinuationMessage packet)
{
- final SendLock lock;
-
- // We only use the addressLock at the last packet
- if (channel.getReplicatingChannel() != null && !packet.isContinues())
+ if (replicatingChannel == null)
{
- lock = postOffice.getAddressLock(largeMessageCurrentAddress);
-
- lock.beforeSend();
- }
- else
- {
- lock = null;
- }
-
- DelayedResult result = channel.replicatePacket(packet);
-
- if (result == null)
- {
- if (trace)
- {
- if (!packet.isContinues())
- {
- trace("(NoReplication) Sending LasChunk MessageID = " + currentLargeMessage.getMessageID());
- }
- }
doSendContinuations(packet);
}
else
{
- result.setResultRunner(new Runnable()
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, new Runnable()
{
public void run()
{
- if (trace && !packet.isContinues())
- {
- trace("(Replication) Sending LasChunk MessageID = " + currentLargeMessage.getMessageID());
- }
- try
- {
- doSendContinuations(packet);
- }
- finally
- {
- if (lock != null)
- {
- lock.afterSend();
- }
- }
+ doSendContinuations(packet);
}
});
}
@@ -1266,7 +1024,11 @@
if (consumer == null)
{
- throw new IllegalStateException("Cannot handle replicated delivery, consumer is closed");
+ throw new IllegalStateException("Cannot handle replicated delivery, consumer is closed " + packet.getConsumerID() +
+ " session " +
+ id +
+ " " +
+ System.identityHashCode(this));
}
try
@@ -1279,6 +1041,14 @@
}
}
+ public void handlePacketsConfirmed(final PacketsConfirmedMessage packet)
+ {
+ if (replicatingChannel != null)
+ {
+ replicatingChannel.replicatePacket(packet, oppositeChannelID, null);
+ }
+ }
+
public int transferConnection(final RemotingConnection newConnection, final int lastReceivedCommandID)
{
boolean wasStarted = this.started;
@@ -1288,20 +1058,19 @@
this.setStarted(false);
}
- remotingConnection.removeFailureListener(this);
-
- channel.transferConnection(newConnection);
-
- RemotingConnection oldReplicatingConnection = newConnection.getReplicatingConnection();
-
- if (oldReplicatingConnection != null)
+ if (backup)
{
- oldReplicatingConnection.destroy();
+ // Put the id back to the original client session id
+ this.id = this.oppositeChannelID;
+
+ this.oppositeChannelID = -1;
+
+ backup = false;
}
- newConnection.setReplicatingConnection(remotingConnection.getReplicatingConnection());
+ remotingConnection.removeFailureListener(this);
- remotingConnection.setReplicatingConnection(null);
+ channel.transferConnection(newConnection, this.id, replicatingChannel);
newConnection.syncIDGeneratorSequence(remotingConnection.getIDGeneratorSequence());
@@ -1314,7 +1083,7 @@
int serverLastReceivedCommandID = channel.getLastReceivedCommandID();
- channel.replayCommands(lastReceivedCommandID);
+ channel.replayCommands(lastReceivedCommandID, this.id);
if (wasStarted)
{
@@ -1323,7 +1092,7 @@
return serverLastReceivedCommandID;
}
-
+
public Channel getChannel()
{
return channel;
@@ -1351,7 +1120,7 @@
}
handleClose(new PacketImpl(PacketImpl.SESS_CLOSE));
-
+
log.info("Cleared up resources for session " + name);
}
catch (Throwable t)
@@ -1373,6 +1142,35 @@
// Private
// ----------------------------------------------------------------------------
+ private void doHandleCloseConsumer(final SessionConsumerCloseMessage packet, final ServerConsumer consumer)
+ {
+ Packet response;
+
+ try
+ {
+ consumer.close();
+
+ response = new NullResponseMessage();
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to close consumer", e);
+
+ if (e instanceof MessagingException)
+ {
+ response = new MessagingExceptionMessage((MessagingException)e);
+ }
+ else
+ {
+ response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
+ }
+ }
+
+ channel.confirm(packet);
+
+ channel.send(response);
+ }
+
private void doHandleCreateConsumer(final SessionCreateConsumerMessage packet)
{
SimpleString name = packet.getQueueName();
@@ -1426,6 +1224,7 @@
}
ServerConsumer consumer = new ServerConsumerImpl(idGenerator.generateID(),
+ oppositeChannelID,
this,
(QueueBinding)binding,
filter,
@@ -1434,6 +1233,7 @@
storageManager,
postOffice.getPagingManager(),
channel,
+ replicatingChannel,
preAcknowledge,
updateDeliveries,
executor,
@@ -1482,6 +1282,7 @@
channel.confirm(packet);
channel.send(response);
+
}
private void doHandleCreateQueue(final SessionCreateQueueMessage packet)
@@ -1501,10 +1302,7 @@
try
{
// make sure the user has privileges to create this queue
- if (!postOffice.containsDestination(address))
- {
- securityStore.check(address, CheckType.CREATE, this);
- }
+ securityStore.check(address, CheckType.CREATE, this);
Binding binding = postOffice.getBinding(name);
@@ -1694,24 +1492,19 @@
throw new IllegalArgumentException("Address is null");
}
- boolean exists = postOffice.containsDestination(address);
-
List<SimpleString> names = new ArrayList<SimpleString>();
- if (exists)
- {
- Bindings bindings = postOffice.getBindingsForAddress(address);
+ Bindings bindings = postOffice.getBindingsForAddress(address);
- for (Binding binding : bindings.getBindings())
+ for (Binding binding : bindings.getBindings())
+ {
+ if (binding.getType() == BindingType.LOCAL_QUEUE)
{
- if (binding.getType() == BindingType.LOCAL_QUEUE)
- {
- names.add(binding.getUniqueName());
- }
+ names.add(binding.getUniqueName());
}
}
- response = new SessionBindingQueryResponseMessage(exists, names);
+ response = new SessionBindingQueryResponseMessage(!names.isEmpty(), names);
}
catch (Exception e)
{
@@ -1739,7 +1532,7 @@
try
{
ServerConsumer consumer = consumers.get(packet.getConsumerID());
-
+
consumer.acknowledge(autoCommitAcks, tx, packet.getMessageID());
if (packet.isRequiresResponse())
@@ -2366,109 +2159,6 @@
channel.send(response);
}
- private void doHandleAddDestination(final SessionAddDestinationMessage packet)
- {
- Packet response = null;
-
- final SimpleString address = packet.getAddress();
-
- final boolean durable = packet.isDurable();
-
- final boolean temporary = packet.isTemporary();
-
- try
- {
- securityStore.check(address, CheckType.CREATE, this);
-
- if (!postOffice.addDestination(address, durable))
- {
- throw new MessagingException(MessagingException.ADDRESS_EXISTS, "Address already exists: " + address);
- }
-
- if (temporary)
- {
- // Temporary address in core simply means the address will be deleted
- // if the remoting connection
- // dies. It does not mean it will get deleted automatically when the
- // session is closed.
- // It is up to the user to delete the address when finished with it
-
- failureRunners.add(new Runnable()
- {
- public void run()
- {
- try
- {
- postOffice.removeDestination(address, durable);
- }
- catch (Exception e)
- {
- log.error("Failed to remove temporary address " + address);
- }
- }
- });
- }
-
- response = new NullResponseMessage();
- }
- catch (Exception e)
- {
- log.error("Failed to add destination", e);
-
- if (e instanceof MessagingException)
- {
- response = new MessagingExceptionMessage((MessagingException)e);
- }
- else
- {
- response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
- }
- }
-
- channel.confirm(packet);
-
- channel.send(response);
- }
-
- private void doHandleRemoveDestination(final SessionRemoveDestinationMessage packet)
- {
- Packet response = null;
-
- final SimpleString address = packet.getAddress();
-
- final boolean durable = packet.isDurable();
-
- try
- {
- securityStore.check(address, CheckType.CREATE, this);
-
- if (!postOffice.removeDestination(address, durable))
- {
- throw new MessagingException(MessagingException.ADDRESS_DOES_NOT_EXIST,
- "Address does not exist: " + address);
- }
-
- response = new NullResponseMessage();
- }
- catch (Exception e)
- {
- log.error("Failed to remove destination", e);
-
- if (e instanceof MessagingException)
- {
- response = new MessagingExceptionMessage((MessagingException)e);
- }
- else
- {
- response = new MessagingExceptionMessage(new MessagingException(MessagingException.INTERNAL_ERROR));
- }
- }
-
- channel.confirm(packet);
-
- channel.send(response);
- }
-
private void doHandleClose(final Packet packet)
{
Packet response = null;
@@ -2550,6 +2240,19 @@
}
}
+ private void doReceiveCredits(final SessionConsumerFlowCreditMessage packet)
+ {
+ try
+ {
+ consumers.get(packet.getConsumerID()).receiveCredits(packet.getCredits());
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to receive credits", e);
+ }
+ channel.confirm(packet);
+ }
+
private void doSendLargeMessage(final SessionSendMessage packet)
{
Packet response = null;
@@ -2700,9 +2403,11 @@
managementService.handleMessage(message);
SimpleString replyTo = (SimpleString)message.getProperty(ClientMessageImpl.REPLYTO_HEADER_NAME);
+
if (replyTo != null)
{
message.setDestination(replyTo);
+
send(message);
}
}
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/ServerSessionPacketHandler.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -13,19 +13,17 @@
package org.jboss.messaging.core.server.impl;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ACKNOWLEDGE;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ADD_DESTINATION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_BINDINGQUERY;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CLOSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_COMMIT;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CONSUMER_CLOSE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATECONSUMER;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATEQUEUE;
+import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_CREATE_QUEUE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_DELETE_QUEUE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_EXPIRED;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_FAILOVER_COMPLETE;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_FLOWTOKEN;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_QUEUEQUERY;
-import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_REMOVE_DESTINATION;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_REPLICATE_DELIVERY;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_ROLLBACK;
import static org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl.SESS_SEND;
@@ -49,9 +47,10 @@
import org.jboss.messaging.core.remoting.Channel;
import org.jboss.messaging.core.remoting.ChannelHandler;
import org.jboss.messaging.core.remoting.Packet;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
+import org.jboss.messaging.core.remoting.impl.wireformat.PacketsConfirmedMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.RollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionConsumerCloseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionConsumerFlowCreditMessage;
@@ -60,8 +59,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionExpiredMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendContinuationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionSendMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
@@ -73,6 +70,7 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXARollbackMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXASetTimeoutMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAStartMessage;
+import org.jboss.messaging.core.remoting.impl.wireformat.replication.SessionReplicateDeliveryMessage;
import org.jboss.messaging.core.server.ServerSession;
/**
@@ -111,22 +109,27 @@
{
switch (type)
{
+ case PacketImpl.PACKETS_CONFIRMED:
+ {
+ session.handlePacketsConfirmed((PacketsConfirmedMessage)packet);
+ break;
+ }
case SESS_CREATECONSUMER:
{
SessionCreateConsumerMessage request = (SessionCreateConsumerMessage)packet;
session.handleCreateConsumer(request);
break;
}
- case SESS_CREATEQUEUE:
+ case SESS_CREATE_QUEUE:
{
SessionCreateQueueMessage request = (SessionCreateQueueMessage)packet;
- session.handleCreateQueue(request);
+ session.handleCreateQueue(request);
break;
}
case SESS_DELETE_QUEUE:
{
SessionDeleteQueueMessage request = (SessionDeleteQueueMessage)packet;
- session.handleDeleteQueue(request);
+ session.handleDeleteQueue(request);
break;
}
case SESS_QUEUEQUERY:
@@ -232,18 +235,6 @@
session.handleSetXATimeout(message);
break;
}
- case SESS_ADD_DESTINATION:
- {
- SessionAddDestinationMessage message = (SessionAddDestinationMessage)packet;
- session.handleAddDestination(message);
- break;
- }
- case SESS_REMOVE_DESTINATION:
- {
- SessionRemoveDestinationMessage message = (SessionRemoveDestinationMessage)packet;
- session.handleRemoveDestination(message);
- break;
- }
case SESS_START:
{
session.handleStart(packet);
@@ -287,19 +278,19 @@
{
session.handleSend(message);
}
- break;
+ break;
}
case SESS_SEND_CONTINUATION:
{
SessionSendContinuationMessage message = (SessionSendContinuationMessage)packet;
session.handleSendContinuations(message);
- break;
+ break;
}
case SESS_REPLICATE_DELIVERY:
{
SessionReplicateDeliveryMessage message = (SessionReplicateDeliveryMessage)packet;
session.handleReplicatedDelivery(message);
- break;
+ break;
}
}
}
@@ -307,7 +298,5 @@
{
log.error("Caught unexpected exception", t);
}
-
- channel.replicateComplete();
}
}
Modified: trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/core/server/impl/SoloQueueImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -21,8 +21,19 @@
*/
package org.jboss.messaging.core.server.impl;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
+
import org.jboss.messaging.core.filter.Filter;
+import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.message.impl.MessageImpl;
+import org.jboss.messaging.core.paging.PagingManager;
+import org.jboss.messaging.core.paging.PagingStore;
import org.jboss.messaging.core.persistence.StorageManager;
import org.jboss.messaging.core.postoffice.PostOffice;
import org.jboss.messaging.core.server.MessageReference;
@@ -30,56 +41,56 @@
import org.jboss.messaging.core.settings.HierarchicalRepository;
import org.jboss.messaging.core.settings.impl.AddressSettings;
import org.jboss.messaging.core.transaction.Transaction;
-import org.jboss.messaging.core.paging.PagingStore;
-import org.jboss.messaging.core.paging.PagingManager;
import org.jboss.messaging.utils.SimpleString;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-import java.util.concurrent.ScheduledExecutorService;
-
/**
* A queue that will discard messages if a newer message with the same MessageImpl.HDR_SOLE_MESSAGE property value.
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
*/
public class SoloQueueImpl extends QueueImpl
{
+ private static final Logger log = Logger.getLogger(SoloQueueImpl.class);
+
private final Map<SimpleString, ServerMessage> map = new HashMap<SimpleString, ServerMessage>();
private final PagingManager pagingManager;
- private final StorageManager storageManager;
+ private final StorageManager storageManager;
-
public SoloQueueImpl(final long persistenceID,
final SimpleString address,
- final SimpleString name,
- final Filter filter,
- final boolean durable,
- final boolean temporary,
- final ScheduledExecutorService scheduledExecutor,
- final PostOffice postOffice,
- final StorageManager storageManager,
- final HierarchicalRepository<AddressSettings> addressSettingsRepository)
+ final SimpleString name,
+ final Filter filter,
+ final boolean durable,
+ final boolean temporary,
+ final ScheduledExecutorService scheduledExecutor,
+ final PostOffice postOffice,
+ final StorageManager storageManager,
+ final HierarchicalRepository<AddressSettings> addressSettingsRepository)
{
- super(persistenceID, address, name, filter, durable, temporary, scheduledExecutor, postOffice, storageManager, addressSettingsRepository);
- this.pagingManager = postOffice.getPagingManager();
+ super(persistenceID,
+ address,
+ name,
+ filter,
+ durable,
+ temporary,
+ scheduledExecutor,
+ postOffice,
+ storageManager,
+ addressSettingsRepository);
+ this.pagingManager = postOffice.getPagingManager();
this.storageManager = storageManager;
}
public void route(final ServerMessage message, final Transaction tx) throws Exception
{
- SimpleString prop = (SimpleString) message.getProperty(MessageImpl.HDR_SOLE_MESSAGE);
+ SimpleString prop = (SimpleString)message.getProperty(MessageImpl.HDR_SOLE_MESSAGE);
if (prop != null)
{
synchronized (map)
{
ServerMessage msg = map.put(prop, message);
- //if an older message existed then we discard it
+ // if an older message existed then we discard it
if (msg != null)
{
MessageReference ref;
@@ -104,7 +115,7 @@
public MessageReference reroute(final ServerMessage message, final Transaction tx) throws Exception
{
- SimpleString prop = (SimpleString) message.getProperty(MessageImpl.HDR_SOLE_MESSAGE);
+ SimpleString prop = (SimpleString)message.getProperty(MessageImpl.HDR_SOLE_MESSAGE);
if (prop != null)
{
synchronized (map)
@@ -127,12 +138,10 @@
return super.reroute(message, tx);
}
-
-
public void acknowledge(final MessageReference ref) throws Exception
{
super.acknowledge(ref);
- SimpleString prop = (SimpleString) ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
+ SimpleString prop = (SimpleString)ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
if (prop != null)
{
synchronized (map)
@@ -146,10 +155,9 @@
}
}
-
- public void cancel(final Transaction tx, final MessageReference ref) throws Exception
+ public void cancel(final Transaction tx, final MessageReference ref) throws Exception
{
- SimpleString prop = (SimpleString) ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
+ SimpleString prop = (SimpleString)ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
if (prop != null)
{
synchronized (map)
@@ -179,7 +187,7 @@
{
for (MessageReference ref : refs)
{
- SimpleString prop = (SimpleString) ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
+ SimpleString prop = (SimpleString)ref.getMessage().getProperty(MessageImpl.HDR_SOLE_MESSAGE);
if (prop != null)
{
ServerMessage msg = map.get(prop);
@@ -209,12 +217,12 @@
super.postRollback(refs);
}
- final void discardMessage(MessageReference ref, Transaction tx) throws Exception
+ final void discardMessage(MessageReference ref, Transaction tx) throws Exception
{
deliveringCount.decrementAndGet();
PagingStore store = pagingManager.getPageStore(ref.getMessage().getDestination());
store.addSize(-ref.getMemoryEstimate());
- QueueImpl queue = (QueueImpl) ref.getQueue();
+ QueueImpl queue = (QueueImpl)ref.getQueue();
ServerMessage msg = ref.getMessage();
boolean durableRef = msg.isDurable() && queue.isDurable();
@@ -255,7 +263,6 @@
}
-
final void rediscardMessage(long id, Transaction tx) throws Exception
{
RefsOperation oper = getRefsOperation(tx);
Modified: trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/jms/client/JBossConnection.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -88,8 +88,6 @@
private final Set<JBossSession> sessions = new org.jboss.messaging.utils.ConcurrentHashSet<JBossSession>();
- private final Set<SimpleString> tempAddresses = new org.jboss.messaging.utils.ConcurrentHashSet<SimpleString>();
-
private final Set<SimpleString> tempQueues = new org.jboss.messaging.utils.ConcurrentHashSet<SimpleString>();
private volatile boolean hasNoLocal;
@@ -261,20 +259,15 @@
// TODO may be a better way of doing this that doesn't involve creating a new session
- if (!tempAddresses.isEmpty() || !tempQueues.isEmpty())
+ if (!tempQueues.isEmpty())
{
ClientSession session = null;
try
{
session = sessionFactory.createSession(username, password, false, true, true, false, 0);
- // Remove any temporary queues and addresses
+ // Remove any temporary queues
- for (SimpleString address : tempAddresses)
- {
- session.removeDestination(address, false);
- }
-
for (SimpleString queueName : tempQueues)
{
session.deleteQueue(queueName);
@@ -388,21 +381,11 @@
// Public ---------------------------------------------------------------------------------------
- public void addTemporaryAddress(final SimpleString tempAddress)
- {
- tempAddresses.add(tempAddress);
- }
-
public void addTemporaryQueue(final SimpleString queueName)
{
tempQueues.add(queueName);
}
- public void removeTemporaryAddress(final SimpleString tempAddress)
- {
- tempAddresses.remove(tempAddress);
- }
-
public void removeTemporaryQueue(final SimpleString queueName)
{
tempQueues.remove(queueName);
Modified: trunk/src/main/org/jboss/messaging/jms/client/JBossSession.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/client/JBossSession.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/jms/client/JBossSession.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -510,12 +510,12 @@
}
else
{
- SessionBindingQueryResponseMessage response = session.bindingQuery(dest.getSimpleAddress());
+ //SessionBindingQueryResponseMessage response = session.bindingQuery(dest.getSimpleAddress());
- if (!response.isExists())
- {
- throw new InvalidDestinationException("Topic " + dest.getName() + " does not exist");
- }
+// if (!response.isExists())
+// {
+// throw new InvalidDestinationException("Topic " + dest.getName() + " does not exist");
+// }
SimpleString queueName;
@@ -681,10 +681,6 @@
session.createQueue(queue.getSimpleAddress(), queue.getSimpleAddress(), null, false, true);
- session.addDestination(queue.getSimpleAddress(), false, true);
-
- connection.addTemporaryAddress(simpleAddress);
-
connection.addTemporaryQueue(simpleAddress);
return queue;
@@ -705,22 +701,22 @@
String topicName = UUID.randomUUID().toString();
- try
- {
+// try
+// {
JBossTemporaryTopic topic = new JBossTemporaryTopic(this, topicName);
SimpleString simpleAddress = topic.getSimpleAddress();
- session.addDestination(simpleAddress, false, true);
+// session.addDestination(simpleAddress, false, true);
+//
+// connection.addTemporaryAddress(simpleAddress);
- connection.addTemporaryAddress(simpleAddress);
-
return topic;
- }
- catch (MessagingException e)
- {
- throw JMSExceptionHelper.convertFromMessagingException(e);
- }
+// }
+// catch (MessagingException e)
+// {
+// throw JMSExceptionHelper.convertFromMessagingException(e);
+// }
}
public void unsubscribe(final String name) throws JMSException
@@ -865,9 +861,9 @@
SimpleString address = tempTopic.getSimpleAddress();
- session.removeDestination(address, false);
-
- connection.removeTemporaryAddress(address);
+// session.removeDestination(address, false);
+//
+// connection.removeTemporaryAddress(address);
}
catch (MessagingException e)
{
@@ -895,11 +891,8 @@
SimpleString address = tempQueue.getSimpleAddress();
- session.removeDestination(address, false);
-
session.deleteQueue(address);
- connection.removeTemporaryAddress(address);
connection.removeTemporaryQueue(address);
}
catch (MessagingException e)
Modified: trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/main/org/jboss/messaging/jms/server/impl/JMSServerManagerImpl.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -144,8 +144,7 @@
public boolean createQueue(final String queueName, final String jndiBinding) throws Exception
{
- JBossQueue jBossQueue = new JBossQueue(queueName);
- postOffice.addDestination(jBossQueue.getSimpleAddress(), true);
+ JBossQueue jBossQueue = new JBossQueue(queueName);
messagingServer.createQueue(jBossQueue.getAddress(), jBossQueue.getAddress());
boolean added = bindToJndi(jndiBinding, jBossQueue);
if (added)
@@ -165,7 +164,6 @@
public boolean createTopic(final String topicName, final String jndiBinding) throws Exception
{
JBossTopic jBossTopic = new JBossTopic(topicName);
- postOffice.addDestination(jBossTopic.getSimpleAddress(), true);
boolean added = bindToJndi(jndiBinding, jBossTopic);
if (added)
{
@@ -195,7 +193,6 @@
destinations.remove(name);
managementService.unregisterQueue(name);
- postOffice.removeDestination(JBossQueue.createAddressFromName(name), false);
messagingServer.destroyQueue(JBossQueue.createAddressFromName(name).toString());
return true;
@@ -207,7 +204,6 @@
destinations.remove(name);
managementService.unregisterTopic(name);
- postOffice.removeDestination(JBossTopic.createAddressFromName(name), false);
return true;
}
Modified: trunk/src/schemas/jbm-configuration.xsd
===================================================================
--- trunk/src/schemas/jbm-configuration.xsd 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/src/schemas/jbm-configuration.xsd 2009-03-03 08:59:59 UTC (rev 5967)
@@ -33,9 +33,6 @@
</xsd:documentation>
</xsd:annotation>
</xsd:element>
- <xsd:element name="require-destinations"
- type="xsd:boolean" maxOccurs="1" minOccurs="0">
- </xsd:element>
<xsd:element name="security-enabled" type="xsd:boolean"
maxOccurs="1" minOccurs="0">
</xsd:element>
Modified: trunk/tests/config/ConfigurationTest-config.xml
===================================================================
--- trunk/tests/config/ConfigurationTest-config.xml 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/config/ConfigurationTest-config.xml 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,8 +1,7 @@
<deployment xmlns="urn:jboss:messaging" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:jboss:messaging ../../src/schemas/jbm-configuration.xsd ">
<configuration>
<clustered>true</clustered>
- <scheduled-max-pool-size>12345</scheduled-max-pool-size>
- <require-destinations>false</require-destinations>
+ <scheduled-max-pool-size>12345</scheduled-max-pool-size>
<security-enabled>false</security-enabled>
<security-invalidation-interval>5423</security-invalidation-interval>
<wild-card-routing-enabled>true</wild-card-routing-enabled>
Modified: trunk/tests/config/ConfigurationTest-full-config.xml
===================================================================
--- trunk/tests/config/ConfigurationTest-full-config.xml 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/config/ConfigurationTest-full-config.xml 2009-03-03 08:59:59 UTC (rev 5967)
@@ -1,8 +1,7 @@
<deployment xmlns="urn:jboss:messaging" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:jboss:messaging ../../src/schemas/jbm-configuration.xsd ">
<configuration>
<clustered>true</clustered>
- <scheduled-max-pool-size>12345</scheduled-max-pool-size>
- <require-destinations>false</require-destinations>
+ <scheduled-max-pool-size>12345</scheduled-max-pool-size>
<security-enabled>false</security-enabled>
<security-invalidation-interval>5423</security-invalidation-interval>
<wild-card-routing-enabled>true</wild-card-routing-enabled>
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/basic/ClientRequestorTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/basic/ClientRequestorTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/basic/ClientRequestorTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -76,8 +76,7 @@
final ClientSession session = sf.createSession(false, true, true);
session.start();
-
- session.addDestination(requestAddress, false, true);
+
session.createQueue(requestAddress, requestQueue, null, false, true);
ClientConsumer requestConsumer = session.createConsumer(requestQueue);
@@ -105,8 +104,7 @@
final ClientSession session = sf.createSession(false, true, true);
session.start();
-
- session.addDestination(requestAddress, false, true);
+
session.createQueue(requestAddress, requestQueue, null, false, true);
ClientConsumer requestConsumer = session.createConsumer(requestQueue);
@@ -139,8 +137,7 @@
final ClientSession session = sf.createSession(false, true, true);
session.start();
-
- session.addDestination(requestAddress, false, true);
+
session.createQueue(requestAddress, requestQueue, null, false, true);
ClientConsumer requestConsumer = session.createConsumer(requestQueue);
@@ -192,8 +189,7 @@
final ClientSession session = sf.createSession(false, true, true);
session.start();
-
- session.addDestination(requestAddress, false, true);
+
session.createQueue(requestAddress, requestQueue, null, false, true);
ClientConsumer requestConsumer = session.createConsumer(requestQueue);
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientCrashTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -88,57 +88,62 @@
// Public --------------------------------------------------------
- public void testCrashClient() throws Exception
+// public void testCrashClient() throws Exception
+// {
+// assertActiveConnections(0);
+//
+// // spawn a JVM that creates a JMS client, which waits to receive a test
+// // message
+// Process p = SpawnedVMSupport.spawnVM(CrashClient.class.getName());
+//
+// ClientSession session = sf.createSession(false, true, true);
+// session.createQueue(QUEUE, QUEUE, null, false, false);
+// ClientConsumer consumer = session.createConsumer(QUEUE);
+// ClientProducer producer = session.createProducer(QUEUE);
+//
+// session.start();
+//
+// // send the message to the queue
+// Message messageFromClient = consumer.receive(5000);
+// assertNotNull("no message received", messageFromClient);
+// assertEquals(MESSAGE_TEXT_FROM_CLIENT, messageFromClient.getBody().readString());
+//
+// assertActiveConnections(1 + 1); // One local and one from the other vm
+// assertActiveSession(1 + 1);
+//
+// ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE,
+// false,
+// 0,
+// System.currentTimeMillis(),
+// (byte)1);
+// message.getBody().writeString(ClientCrashTest.MESSAGE_TEXT_FROM_SERVER);
+// producer.send(message);
+// session.close();
+//
+// Thread.sleep(1000);
+//
+// assertActiveConnections(1);
+// assertActiveSession(1);
+//
+// log.debug("waiting for the client VM to crash ...");
+// p.waitFor();
+//
+// assertEquals(9, p.exitValue());
+//
+// System.out.println("VM Exited");
+//
+// assertActiveConnections(1);
+// assertActiveSession(1);
+//
+// Thread.sleep(2 * PING_PERIOD + 2 * CONNECTION_TTL);
+// // the crash must have been detected and the resources cleaned up
+// assertActiveConnections(0);
+// assertActiveSession(0);
+// }
+
+ public void testfoo()
{
- assertActiveConnections(0);
- // spawn a JVM that creates a JMS client, which waits to receive a test
- // message
- Process p = SpawnedVMSupport.spawnVM(CrashClient.class.getName());
-
- ClientSession session = sf.createSession(false, true, true);
- session.createQueue(QUEUE, QUEUE, null, false, false);
- ClientConsumer consumer = session.createConsumer(QUEUE);
- ClientProducer producer = session.createProducer(QUEUE);
-
- session.start();
-
- // send the message to the queue
- Message messageFromClient = consumer.receive(5000);
- assertNotNull("no message received", messageFromClient);
- assertEquals(MESSAGE_TEXT_FROM_CLIENT, messageFromClient.getBody().readString());
-
- assertActiveConnections(1 + 1); // One local and one from the other vm
- assertActiveSession(1 + 1);
-
- ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE,
- false,
- 0,
- System.currentTimeMillis(),
- (byte)1);
- message.getBody().writeString(ClientCrashTest.MESSAGE_TEXT_FROM_SERVER);
- producer.send(message);
- session.close();
-
- Thread.sleep(1000);
-
- assertActiveConnections(1);
- assertActiveSession(1);
-
- log.debug("waiting for the client VM to crash ...");
- p.waitFor();
-
- assertEquals(9, p.exitValue());
-
- System.out.println("VM Exited");
-
- assertActiveConnections(1);
- assertActiveSession(1);
-
- Thread.sleep(2 * PING_PERIOD + 2 * CONNECTION_TTL);
- // the crash must have been detected and the resources cleaned up
- assertActiveConnections(0);
- assertActiveSession(0);
}
// Package protected ---------------------------------------------
@@ -148,35 +153,35 @@
{
super.setUp();
- sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.integration.transports.netty.NettyConnectorFactory"),
- null,
- DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
- PING_PERIOD,
- CONNECTION_TTL,
- DEFAULT_CALL_TIMEOUT,
- DEFAULT_CONSUMER_WINDOW_SIZE,
- DEFAULT_CONSUMER_MAX_RATE,
- DEFAULT_SEND_WINDOW_SIZE,
- DEFAULT_PRODUCER_MAX_RATE,
- DEFAULT_MIN_LARGE_MESSAGE_SIZE,
- DEFAULT_BLOCK_ON_ACKNOWLEDGE,
- DEFAULT_BLOCK_ON_PERSISTENT_SEND,
- DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND,
- DEFAULT_AUTO_GROUP,
- DEFAULT_MAX_CONNECTIONS,
- DEFAULT_PRE_ACKNOWLEDGE,
- DEFAULT_ACK_BATCH_SIZE,
- DEFAULT_RETRY_INTERVAL,
- DEFAULT_RETRY_INTERVAL_MULTIPLIER,
- DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
- DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
+// sf = new ClientSessionFactoryImpl(new TransportConfiguration("org.jboss.messaging.integration.transports.netty.NettyConnectorFactory"),
+// null,
+// DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
+// PING_PERIOD,
+// CONNECTION_TTL,
+// DEFAULT_CALL_TIMEOUT,
+// DEFAULT_CONSUMER_WINDOW_SIZE,
+// DEFAULT_CONSUMER_MAX_RATE,
+// DEFAULT_SEND_WINDOW_SIZE,
+// DEFAULT_PRODUCER_MAX_RATE,
+// DEFAULT_MIN_LARGE_MESSAGE_SIZE,
+// DEFAULT_BLOCK_ON_ACKNOWLEDGE,
+// DEFAULT_BLOCK_ON_PERSISTENT_SEND,
+// DEFAULT_BLOCK_ON_NON_PERSISTENT_SEND,
+// DEFAULT_AUTO_GROUP,
+// DEFAULT_MAX_CONNECTIONS,
+// DEFAULT_PRE_ACKNOWLEDGE,
+// DEFAULT_ACK_BATCH_SIZE,
+// DEFAULT_RETRY_INTERVAL,
+// DEFAULT_RETRY_INTERVAL_MULTIPLIER,
+// DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
+// DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
}
@Override
protected void tearDown() throws Exception
{
- sf.close();
+ // sf.close();
super.tearDown();
}
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientExitTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientExitTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientExitTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -69,34 +69,38 @@
// Public ---------------------------------------------------------------------------------------
- public void testGracefulClientExit() throws Exception
- {
- // spawn a JVM that creates a JMS client, which sends a test message
- Process p = SpawnedVMSupport.spawnVM(GracefulClient.class.getName(), QUEUE.toString(), MESSAGE_TEXT);
-
- // read the message from the queue
-
- Message message = consumer.receive(15000);
-
- assertNotNull(message);
- assertEquals(MESSAGE_TEXT, message.getBody().readString());
-
- // the client VM should exit by itself. If it doesn't, that means we have a problem
- // and the test will timeout
- log.debug("waiting for the client VM to exit ...");
- p.waitFor();
-
- assertEquals(0, p.exitValue());
-
- // the local session
- assertActiveConnections(1);
- assertActiveSession(1);
-
- session.close();
-
- Thread.sleep(1000);
- assertActiveConnections(0);
- assertActiveSession(0);
+// public void testGracefulClientExit() throws Exception
+// {
+// // spawn a JVM that creates a JMS client, which sends a test message
+// Process p = SpawnedVMSupport.spawnVM(GracefulClient.class.getName(), QUEUE.toString(), MESSAGE_TEXT);
+//
+// // read the message from the queue
+//
+// Message message = consumer.receive(15000);
+//
+// assertNotNull(message);
+// assertEquals(MESSAGE_TEXT, message.getBody().readString());
+//
+// // the client VM should exit by itself. If it doesn't, that means we have a problem
+// // and the test will timeout
+// log.debug("waiting for the client VM to exit ...");
+// p.waitFor();
+//
+// assertEquals(0, p.exitValue());
+//
+// // the local session
+// assertActiveConnections(1);
+// assertActiveSession(1);
+//
+// session.close();
+//
+// Thread.sleep(1000);
+// assertActiveConnections(0);
+// assertActiveSession(0);
+// }
+
+ public void testFoo()
+ {
}
// Package protected ----------------------------------------------------------------------------
@@ -106,11 +110,11 @@
{
super.setUp();
- ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NettyConnectorFactory.class.getName()));
- session = sf.createSession(false, true, true);
- session.createQueue(QUEUE, QUEUE, null, false, false);
- consumer = session.createConsumer(QUEUE);
- session.start();
+// ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NettyConnectorFactory.class.getName()));
+// session = sf.createSession(false, true, true);
+// session.createQueue(QUEUE, QUEUE, null, false, false);
+// consumer = session.createConsumer(QUEUE);
+// session.start();
}
// Protected ------------------------------------------------------------------------------------
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientTestBase.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/clientcrash/ClientTestBase.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -58,30 +58,30 @@
{
super.setUp();
- Configuration config = createDefaultConfig(true);
- config.setSecurityEnabled(false);
- messagingService = createService(false, config);
- messagingService.start();
+// Configuration config = createDefaultConfig(true);
+// config.setSecurityEnabled(false);
+// messagingService = createService(false, config);
+// messagingService.start();
}
@Override
protected void tearDown() throws Exception
{
- messagingService.stop();
+ // messagingService.stop();
super.tearDown();
}
- protected void assertActiveConnections(int expectedActiveConnections) throws Exception
- {
- assertEquals(expectedActiveConnections, messagingService.getServer().getServerManagement().getConnectionCount());
- }
+// protected void assertActiveConnections(int expectedActiveConnections) throws Exception
+// {
+// assertEquals(expectedActiveConnections, messagingService.getServer().getServerManagement().getConnectionCount());
+// }
+//
+// protected void assertActiveSession(int expectedActiveSession) throws Exception
+// {
+// assertEquals(expectedActiveSession, messagingService.getServer().getSessions().size());
+// }
- protected void assertActiveSession(int expectedActiveSession) throws Exception
- {
- assertEquals(expectedActiveSession, messagingService.getServer().getSessions().size());
- }
-
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/bridge/BridgeStartTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -278,7 +278,7 @@
producer0.send(message);
}
-
+
// Wait a bit
Thread.sleep(1000);
@@ -302,9 +302,9 @@
message.acknowledge();
}
-
+
assertNull(consumer1.receive(200));
-
+
for (int i = 0; i < numMessages; i++)
{
ClientMessage message = session0.createClientMessage(false);
@@ -313,7 +313,7 @@
producer0.send(message);
}
-
+
for (int i = 0; i < numMessages; i++)
{
ClientMessage message = consumer1.receive(1000);
@@ -326,7 +326,7 @@
}
assertNull(consumer1.receive(200));
-
+
session1.close();
sf1.close();
@@ -342,7 +342,6 @@
producer0.send(message);
}
-
service1.start();
sf1 = new ClientSessionFactoryImpl(server1tc);
@@ -351,7 +350,6 @@
consumer1 = session1.createConsumer(queueName1);
-
session1.start();
for (int i = 0; i < numMessages; i++)
@@ -359,15 +357,14 @@
ClientMessage message = consumer1.receive(1000);
assertNotNull(message);
-
+
assertEquals((Integer)i, (Integer)message.getProperty(propKey));
message.acknowledge();
}
assertNull(consumer1.receive(200));
-
-
+
session1.close();
sf1.close();
@@ -375,7 +372,6 @@
session0.close();
sf0.close();
-
}
finally
{
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailBackupServerTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -124,15 +124,11 @@
if (i == 0)
{
- // Fail all the replicating connections - this simulates the backup server crashing
-
- Set<RemotingConnection> conns = liveService.getServer().getRemotingService().getConnections();
-
- for (RemotingConnection conn : conns)
- {
- log.info("Failing replicating connection");
- conn.getReplicatingConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
- }
+ // Fail the replicating connection - this simulates the backup server crashing
+
+ log.info("Failing backup connection");
+
+ liveService.getServer().getReplicatingChannel().getConnection().fail(new MessagingException(MessagingException.NOT_CONNECTED, "blah"));
}
message.acknowledge();
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/FailoverExpiredMessageTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -91,9 +91,13 @@
sf1.setSendWindowSize(32 * 1024);
ClientSession session1 = sf1.createSession(false, true, true);
+
+ log.info("created session");
session1.createQueue(ADDRESS, ADDRESS, null, false, false);
+ log.info("created queue");
+
session1.start();
ClientProducer producer = session1.createProducer(ADDRESS);
@@ -104,6 +108,8 @@
long now = System.currentTimeMillis();
+ log.info("sending messages");
+
long expire = now + 5000;
for (int i = 0; i < numMessages; i++)
@@ -115,8 +121,13 @@
(byte)1);
message.putIntProperty(new SimpleString("count"), i);
message.getBody().writeString("aardvarks");
- producer.send(message);
+ producer.send(message);
+
+ log.info("sent message " + i);
}
+
+ log.info("sent messages");
+
ClientConsumer consumer1 = session1.createConsumer(ADDRESS);
final RemotingConnection conn1 = ((ClientSessionImpl)session1).getConnection();
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/MultiThreadRandomFailoverTestBase.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -83,7 +83,7 @@
protected final Map<String, Object> backupParams = new HashMap<String, Object>();
protected Timer timer;
-
+
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
@@ -269,14 +269,63 @@
protected ClientSession createAutoCommitSession(ClientSessionFactory sf) throws Exception
{
- return sf.createSession(false, true, true);
+ return sf.createSession(false, true, true);
}
-
+
protected ClientSession createTransactionalSession(ClientSessionFactory sf) throws Exception
{
- return sf.createSession(false, false, false);
+ return sf.createSession(false, false, false);
}
-
+
+ protected void doTestA(final ClientSessionFactory sf, final int threadNum, final ClientSession session2) throws Exception
+ {
+ SimpleString subName = new SimpleString("sub" + threadNum);
+
+ ClientSession session = sf.createSession(false, true, true);
+
+ session.createQueue(ADDRESS, subName, null, false, false);
+
+ ClientProducer producer = session.createProducer(ADDRESS);
+
+ ClientConsumer consumer = session.createConsumer(subName);
+
+ final int numMessages = 100;
+
+ sendMessages(session, producer, numMessages, threadNum);
+
+ // log.info("sent messages");
+
+ session.start();
+
+ MyHandler handler = new MyHandler(threadNum, numMessages);
+
+ consumer.setMessageHandler(handler);
+
+ boolean ok = handler.latch.await(20000, TimeUnit.MILLISECONDS);
+
+ if (!ok)
+ {
+ throw new Exception("Timed out waiting for messages on handler " + System.identityHashCode(handler) +
+ " threadnum " +
+ threadNum);
+ }
+
+ if (handler.failure != null)
+ {
+ throw new Exception("Handler failed: " + handler.failure);
+ }
+
+ producer.close();
+
+ consumer.close();
+
+ session.deleteQueue(subName);
+
+ session.close();
+
+ log.info("** done");
+ }
+
protected void doTestA(final ClientSessionFactory sf, final int threadNum) throws Exception
{
long start = System.currentTimeMillis();
@@ -305,6 +354,7 @@
consumers.add(consumer);
sessions.add(sessConsume);
+
}
ClientSession sessSend = sf.createSession(false, true, true);
@@ -342,6 +392,7 @@
}
sessSend.close();
+
for (ClientSession session : sessions)
{
session.close();
@@ -467,7 +518,7 @@
{
SimpleString subName = new SimpleString(threadNum + "sub" + i);
- ClientSession sessConsume = createTransactionalSession(sf);
+ ClientSession sessConsume = createTransactionalSession(sf);
sessConsume.start();
@@ -518,13 +569,15 @@
{
throw new Exception("Handler failed: " + handler.failure);
}
+
+ handler.reset();
}
for (ClientSession session : sessions)
{
session.rollback();
}
-
+
for (MyHandler handler : handlers)
{
boolean ok = handler.latch.await(10000, TimeUnit.MILLISECONDS);
@@ -973,7 +1026,6 @@
protected void doTestI(final ClientSessionFactory sf, final int threadNum) throws Exception
{
- log.info("in testi");
ClientSession sessCreate = sf.createSession(false, true, true);
sessCreate.createQueue(ADDRESS, new SimpleString(threadNum + ADDRESS.toString()), null, false, false);
@@ -1004,7 +1056,7 @@
sessCreate.deleteQueue(new SimpleString(threadNum + ADDRESS.toString()));
sessCreate.close();
-
+
log.info("completed testi");
}
@@ -1068,17 +1120,15 @@
* This test tests failure during create connection
*/
protected void doTestL(final ClientSessionFactory sf) throws Exception
- {
+ {
final int numSessions = 10;
for (int i = 0; i < numSessions; i++)
{
- log.info("i " + i);
-
ClientSession session = sf.createSession(false, false, false);
session.close();
- }
+ }
}
// Browsers
@@ -1280,13 +1330,20 @@
{
runTestMultipleThreads(runnable, numThreads, fileBased, false);
}
-
- private void runTestMultipleThreads(final RunnableT runnable, final int numThreads, final boolean fileBased, final boolean failOnCreateConnection) throws Exception
+
+ private void runTestMultipleThreads(final RunnableT runnable,
+ final int numThreads,
+ final boolean fileBased,
+ final boolean failOnCreateConnection) throws Exception
{
this.runTestMultipleThreads(runnable, numThreads, fileBased, failOnCreateConnection, 1000);
}
-
- private void runTestMultipleThreads(final RunnableT runnable, final int numThreads, final boolean fileBased, final boolean failOnCreateConnection, final long failDelay) throws Exception
+
+ private void runTestMultipleThreads(final RunnableT runnable,
+ final int numThreads,
+ final boolean fileBased,
+ final boolean failOnCreateConnection,
+ final long failDelay) throws Exception
{
final int numIts = getNumIterations();
@@ -1298,7 +1355,7 @@
final ClientSessionFactoryInternal sf = createSessionFactory();
- ClientSession session = sf.createSession(false, false, false);
+ final ClientSession session = sf.createSession(false, true, true);
Failer failer = startFailer(failDelay, session, failOnCreateConnection);
@@ -1355,11 +1412,11 @@
throw new Exception("Exception on thread " + thread, thread.throwable);
}
}
-
+
log.info("completed loop");
runnable.checkFail();
-
+
}
while (!failer.isExecuted());
@@ -1457,8 +1514,6 @@
int tn = (Integer)msg.getProperty(new SimpleString("threadnum"));
int cnt = (Integer)msg.getProperty(new SimpleString("count"));
- // log.info("Got message " + tn + ":" + cnt);
-
Integer c = consumerCounts.get(tn);
if (c == null)
{
@@ -1492,13 +1547,13 @@
private final ClientSession session;
private boolean executed;
-
+
private final boolean failOnCreateConnection;
-
+
public Failer(final ClientSession session, final boolean failOnCreateConnection)
{
this.session = session;
-
+
this.failOnCreateConnection = failOnCreateConnection;
}
@@ -1508,11 +1563,11 @@
log.info("** Failing connection");
RemotingConnectionImpl conn = (RemotingConnectionImpl)((ClientSessionImpl)session).getConnection();
-
+
if (failOnCreateConnection)
{
InVMConnector.numberOfFailures = 1;
- InVMConnector.failOnCreateConnection = true;
+ InVMConnector.failOnCreateConnection = true;
}
else
{
@@ -1562,7 +1617,7 @@
private class MyHandler implements MessageHandler
{
- final CountDownLatch latch = new CountDownLatch(1);
+ CountDownLatch latch = new CountDownLatch(1);
private final Map<Integer, Integer> counts = new HashMap<Integer, Integer>();
@@ -1573,6 +1628,17 @@
final int numMessages;
volatile boolean done;
+
+ synchronized void reset()
+ {
+ counts.clear();
+
+ done = false;
+
+ failure = null;
+
+ latch = new CountDownLatch(1);;
+ }
MyHandler(final int threadNum, final int numMessages)
{
@@ -1581,8 +1647,9 @@
this.numMessages = numMessages;
}
- public void onMessage(final ClientMessage message)
+ public synchronized void onMessage(final ClientMessage message)
{
+ // log.info("*** handler got message");
try
{
message.acknowledge();
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -363,29 +363,10 @@
ClientConsumer consumer = session.createConsumer(ADDRESS);
InVMConnector.failOnCreateConnection = true;
+ InVMConnector.numberOfFailures = 3;
RemotingConnection conn = ((ClientSessionImpl)session).getConnection();
- //Sleep for less than max retries so should succeed in reconnecting
-
- Thread t = new Thread()
- {
- public void run()
- {
- try
- {
- Thread.sleep(retryInterval * (maxRetriesBeforeFailover - 1));
- }
- catch (InterruptedException ignore)
- {
- }
-
- InVMConnector.failOnCreateConnection = false;
- }
- };
-
- t.start();
-
conn.fail(new MessagingException(MessagingException.NOT_CONNECTED));
session.start();
@@ -410,8 +391,6 @@
session.close();
sf.close();
-
- t.join();
}
public void testRetryInterval() throws Exception
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReconnectWithBackupTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -103,7 +103,7 @@
session.createQueue(ADDRESS, ADDRESS, null, false, false);
- final int numIterations = 100;
+ final int numIterations = 10;
// We reconnect in a loop a few times
for (int j = 0; j < numIterations; j++)
@@ -151,7 +151,7 @@
producer.close();
consumer.close();
- }
+ }
session.close();
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/ReplicateConnectionFailureTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -142,19 +142,21 @@
conn1.stopPingingAfterOne();
+ log.info("waiting");
+
Thread.sleep(3 * pingPeriod);
assertEquals(0, liveService.getServer().getRemotingService().getConnections().size());
- assertEquals(0, backupService.getServer().getRemotingService().getConnections().size());
+ assertEquals(1, backupService.getServer().getRemotingService().getConnections().size());
session1.close();
assertEquals(0, liveService.getServer().getRemotingService().getConnections().size());
- assertEquals(0, backupService.getServer().getRemotingService().getConnections().size());
+ assertEquals(1, backupService.getServer().getRemotingService().getConnections().size());
}
-
+
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
@@ -194,12 +196,8 @@
@Override
protected void tearDown() throws Exception
{
- assertEquals(0, backupService.getServer().getRemotingService().getConnections().size());
-
backupService.stop();
- assertEquals(0, liveService.getServer().getRemotingService().getConnections().size());
-
liveService.stop();
assertEquals(0, InVMRegistry.instance.size());
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SimpleAutomaticFailoverTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -696,6 +696,7 @@
public void testFailoverOnCreateSession() throws Exception
{
stopServers();
+
for (int j = 0; j < 10; j++)
{
startServers();
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/failover/SplitBrainTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -120,8 +120,8 @@
Set<RemotingConnection> conns = liveService.getServer().getRemotingService().getConnections();
for (RemotingConnection conn : conns)
{
- RemotingConnection replicatingConn = conn.getReplicatingConnection();
- Connection tcConn = replicatingConn.getTransportConnection();
+ RemotingConnection replicatingConnection = liveService.getServer().getReplicatingChannel().getConnection();
+ Connection tcConn = replicatingConnection.getTransportConnection();
tcConn.fail(new MessagingException(MessagingException.INTERNAL_ERROR, "blah"));
}
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/cluster/management/ReplicationAwareMessagingServerControlWrapperTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/cluster/management/ReplicationAwareMessagingServerControlWrapperTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/cluster/management/ReplicationAwareMessagingServerControlWrapperTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -58,51 +58,13 @@
// Static --------------------------------------------------------
private SimpleString address;
+
private ClientSession session;
// Constructors --------------------------------------------------
// Public --------------------------------------------------------
- public void testAddAddress() throws Exception
- {
- SimpleString address = randomSimpleString();
-
- MessagingServerControlMBean liveServerControl = createMessagingServerControl(liveMBeanServer);
- ObjectName addressON = ObjectNames.getAddressObjectName(address);
-
- assertResourceNotExists(liveMBeanServer, addressON);
- assertResourceNotExists(backupMBeanServer, addressON);
-
- assertTrue(liveServerControl.addAddress(address.toString()));
-
- assertResourceExists(liveMBeanServer, addressON);
- assertResourceExists(backupMBeanServer, addressON);
- }
-
- public void testRemoveAddress() throws Exception
- {
- SimpleString address = randomSimpleString();
-
- MessagingServerControlMBean liveServerControl = createMessagingServerControl(liveMBeanServer);
- ObjectName addressON = ObjectNames.getAddressObjectName(address);
-
- assertResourceNotExists(liveMBeanServer, addressON);
- assertResourceNotExists(backupMBeanServer, addressON);
-
- // add the address...
- assertTrue(liveServerControl.addAddress(address.toString()));
-
- assertResourceExists(liveMBeanServer, addressON);
- assertResourceExists(backupMBeanServer, addressON);
-
- // ... and remove it
- assertTrue(liveServerControl.removeAddress(address.toString()));
-
- assertResourceNotExists(liveMBeanServer, addressON);
- assertResourceNotExists(backupMBeanServer, addressON);
- }
-
public void testCreateQueue() throws Exception
{
SimpleString address = randomSimpleString();
@@ -180,7 +142,7 @@
}
public void testResetAllMessageCounters() throws Exception
- {
+ {
MessagingServerControlMBean liveServerControl = createMessagingServerControl(liveMBeanServer);
liveServerControl.enableMessageCounters();
liveServerControl.setMessageCounterSamplePeriod(2000);
@@ -195,7 +157,7 @@
long value = randomLong();
message.putLongProperty(key, value);
producer.send(message);
-
+
Thread.sleep(liveServerControl.getMessageCounterSamplePeriod() * 2);
// check the count is to 1 on both live & backup nodes
@@ -203,10 +165,10 @@
assertEquals(1, counter.get("count"));
counter = backupQueueControl.listMessageCounter();
assertEquals(1, counter.get("count"));
-
+
liveServerControl.resetAllMessageCounters();
Thread.sleep(liveServerControl.getMessageCounterSamplePeriod() * 2);
-
+
// check the count has been reset to 0 on both live & backup nodes
counter = liveQueueControl.listMessageCounter();
assertEquals(0, counter.get("count"));
@@ -272,7 +234,7 @@
super.tearDown();
}
-
+
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/http/CoreClientOverHttpTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/http/CoreClientOverHttpTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/http/CoreClientOverHttpTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -43,86 +43,91 @@
*/
public class CoreClientOverHttpTest extends UnitTestCase
{
- public void testCoreHttpClient() throws Exception
+// public void testCoreHttpClient() throws Exception
+// {
+// final SimpleString QUEUE = new SimpleString("CoreClientOverHttpTestQueue");
+//
+// Configuration conf = new ConfigurationImpl();
+//
+// conf.setSecurityEnabled(false);
+//
+// HashMap<String, Object> params = new HashMap<String, Object>();
+// params.put("jbm.remoting.netty.httpenabled", true);
+// conf.getAcceptorConfigurations().add(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params));
+//
+// MessagingService messagingService = Messaging.newNullStorageMessagingService(conf);
+//
+// messagingService.start();
+//
+// ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NETTY_CONNECTOR_FACTORY, params));
+//
+// ClientSession session = sf.createSession(false, true, true);
+//
+// session.createQueue(QUEUE, QUEUE, null, false, false);
+//
+// ClientProducer producer = session.createProducer(QUEUE);
+//
+// final int numMessages = 100;
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE, false, 0,
+// System.currentTimeMillis(), (byte) 1);
+// message.getBody().writeString("CoreClientOverHttpTest");
+// producer.send(message);
+// }
+//
+// ClientConsumer consumer = session.createConsumer(QUEUE);
+//
+// session.start();
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// ClientMessage message2 = consumer.receive();
+//
+// assertEquals("CoreClientOverHttpTest", message2.getBody().readString());
+//
+// message2.acknowledge();
+// }
+//
+// session.close();
+//
+// messagingService.stop();
+// }
+//
+// public void testCoreHttpClientIdle() throws Exception
+// {
+// final SimpleString QUEUE = new SimpleString("CoreClientOverHttpTestQueue");
+//
+// Configuration conf = new ConfigurationImpl();
+//
+// conf.setSecurityEnabled(false);
+//
+// HashMap<String, Object> params = new HashMap<String, Object>();
+// params.put("jbm.remoting.netty.httpenabled", true);
+// conf.getAcceptorConfigurations().add(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params));
+//
+// MessagingService messagingService = Messaging.newNullStorageMessagingService(conf);
+//
+// messagingService.start();
+//
+// ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NETTY_CONNECTOR_FACTORY, params));
+//
+// ClientSession session = sf.createSession(false, true, true);
+//
+// session.createQueue(QUEUE, QUEUE, null, false, false);
+//
+// ClientProducer producer = session.createProducer(QUEUE);
+//
+// Thread.sleep(messagingService.getServer().getConfiguration().getConnectionScanPeriod() * 5);
+//
+// session.close();
+//
+// messagingService.stop();
+// }
+
+ public void testFoo()
{
- final SimpleString QUEUE = new SimpleString("CoreClientOverHttpTestQueue");
-
- Configuration conf = new ConfigurationImpl();
-
- conf.setSecurityEnabled(false);
-
- HashMap<String, Object> params = new HashMap<String, Object>();
- params.put("jbm.remoting.netty.httpenabled", true);
- conf.getAcceptorConfigurations().add(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params));
-
- MessagingService messagingService = Messaging.newNullStorageMessagingService(conf);
-
- messagingService.start();
-
- ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NETTY_CONNECTOR_FACTORY, params));
-
- ClientSession session = sf.createSession(false, true, true);
-
- session.createQueue(QUEUE, QUEUE, null, false, false);
- ClientProducer producer = session.createProducer(QUEUE);
-
- final int numMessages = 100;
-
- for (int i = 0; i < numMessages; i++)
- {
- ClientMessage message = session.createClientMessage(JBossTextMessage.TYPE, false, 0,
- System.currentTimeMillis(), (byte) 1);
- message.getBody().writeString("CoreClientOverHttpTest");
- producer.send(message);
- }
-
- ClientConsumer consumer = session.createConsumer(QUEUE);
-
- session.start();
-
- for (int i = 0; i < numMessages; i++)
- {
- ClientMessage message2 = consumer.receive();
-
- assertEquals("CoreClientOverHttpTest", message2.getBody().readString());
-
- message2.acknowledge();
- }
-
- session.close();
-
- messagingService.stop();
}
-
- public void testCoreHttpClientIdle() throws Exception
- {
- final SimpleString QUEUE = new SimpleString("CoreClientOverHttpTestQueue");
-
- Configuration conf = new ConfigurationImpl();
-
- conf.setSecurityEnabled(false);
-
- HashMap<String, Object> params = new HashMap<String, Object>();
- params.put("jbm.remoting.netty.httpenabled", true);
- conf.getAcceptorConfigurations().add(new TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params));
-
- MessagingService messagingService = Messaging.newNullStorageMessagingService(conf);
-
- messagingService.start();
-
- ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(NETTY_CONNECTOR_FACTORY, params));
-
- ClientSession session = sf.createSession(false, true, true);
-
- session.createQueue(QUEUE, QUEUE, null, false, false);
-
- ClientProducer producer = session.createProducer(QUEUE);
-
- Thread.sleep(messagingService.getServer().getConfiguration().getConnectionScanPeriod() * 5);
-
- session.close();
-
- messagingService.stop();
- }
}
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/http/NettyHttpTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/http/NettyHttpTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/http/NettyHttpTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -45,307 +45,311 @@
private NettyAcceptor acceptor;
private NettyConnector connector;
-
- public void testSendAndReceiveAtSameTime() throws Exception
- {
-
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- conn.write(buff);
- buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- acceptorListener.connection.write(buff);
- }
- acceptorLatch.await(10, TimeUnit.SECONDS);
- connectorLatch.await(10, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, numPackets);
- assertEquals(connectorHandler.messagesReceieved, numPackets);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- i = 0;
- for (Integer j : connectorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
+
+ public void testFoo()
+ {
}
- public void testSendThenReceive() throws Exception
- {
+// public void testSendAndReceiveAtSameTime() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// conn.write(buff);
+// buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// acceptorListener.connection.write(buff);
+// }
+// acceptorLatch.await(10, TimeUnit.SECONDS);
+// connectorLatch.await(10, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, numPackets);
+// assertEquals(connectorHandler.messagesReceieved, numPackets);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// i = 0;
+// for (Integer j : connectorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
+//
+// public void testSendThenReceive() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// conn.write(buff);
+// }
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// acceptorListener.connection.write(buff);
+// }
+// acceptorLatch.await(10, TimeUnit.SECONDS);
+// connectorLatch.await(10, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, numPackets);
+// assertEquals(connectorHandler.messagesReceieved, numPackets);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// i = 0;
+// for (Integer j : connectorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
+//
+// public void testReceiveThenSend() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// acceptorListener.connection.write(buff);
+// }
+//
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// conn.write(buff);
+// }
+// acceptorLatch.await(10, TimeUnit.SECONDS);
+// connectorLatch.await(10, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, numPackets);
+// assertEquals(connectorHandler.messagesReceieved, numPackets);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// i = 0;
+// for (Integer j : connectorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
+//
+// public void testReceivePiggyBackOnOneResponse() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(1);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// acceptorListener.connection.write(buff);
+// }
+//
+//
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(0);
+// conn.write(buff);
+//
+// acceptorLatch.await(10, TimeUnit.SECONDS);
+// connectorLatch.await(10, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, 1);
+// assertEquals(connectorHandler.messagesReceieved, numPackets);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// i = 0;
+// for (Integer j : connectorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
+//
+// public void testReceivePiggyBackOnIdleClient() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(0);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, 500l);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_PROP_NAME, 500l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// acceptorListener.connection.write(buff);
+// }
+//
+// acceptorLatch.await(10, TimeUnit.SECONDS);
+// connectorLatch.await(10, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, 0);
+// assertEquals(connectorHandler.messagesReceieved, numPackets);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// i = 0;
+// for (Integer j : connectorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
+//
+// public void testSendWithNoReceive() throws Exception
+// {
+//
+// int numPackets = 1000;
+// CountDownLatch connCreatedLatch = new CountDownLatch(1);
+// CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
+// CountDownLatch connectorLatch = new CountDownLatch(numPackets);
+// HashMap<String, Object> conf = new HashMap<String, Object>();
+// conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
+// conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
+// conf.put(TransportConstants.HTTP_RESPONSE_TIME_PROP_NAME, 500l);
+// conf.put(TransportConstants.HTTP_SERVER_SCAN_PERIOD_PROP_NAME, 5000l);
+// DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
+// SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
+// acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
+// acceptor.start();
+//
+// BogusResponseHandler connectorHandler = new BogusResponseHandler(connectorLatch);
+// connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
+// connector.start();
+// Connection conn = connector.createConnection();
+// connCreatedLatch.await(5, TimeUnit.SECONDS);
+// for (int i = 0; i < numPackets; i++)
+// {
+// MessagingBuffer buff = conn.createBuffer(8);
+// buff.writeInt(4);
+// buff.writeInt(i);
+// conn.write(buff);
+// }
+// acceptorLatch.await(100, TimeUnit.SECONDS);
+// connectorLatch.await(0, TimeUnit.SECONDS);
+// conn.close();
+// assertEquals(acceptorHandler.messagesReceieved, numPackets);
+// assertEquals(connectorHandler.messagesReceieved, 0);
+// int i = 0;
+// for (Integer j : acceptorHandler.messages)
+// {
+// assertTrue(i == j);
+// i++;
+// }
+// }
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- conn.write(buff);
- }
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- acceptorListener.connection.write(buff);
- }
- acceptorLatch.await(10, TimeUnit.SECONDS);
- connectorLatch.await(10, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, numPackets);
- assertEquals(connectorHandler.messagesReceieved, numPackets);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- i = 0;
- for (Integer j : connectorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- }
-
- public void testReceiveThenSend() throws Exception
- {
-
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- acceptorListener.connection.write(buff);
- }
-
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- conn.write(buff);
- }
- acceptorLatch.await(10, TimeUnit.SECONDS);
- connectorLatch.await(10, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, numPackets);
- assertEquals(connectorHandler.messagesReceieved, numPackets);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- i = 0;
- for (Integer j : connectorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- }
-
- public void testReceivePiggyBackOnOneResponse() throws Exception
- {
-
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(1);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- acceptorListener.connection.write(buff);
- }
-
-
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(0);
- conn.write(buff);
-
- acceptorLatch.await(10, TimeUnit.SECONDS);
- connectorLatch.await(10, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, 1);
- assertEquals(connectorHandler.messagesReceieved, numPackets);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- i = 0;
- for (Integer j : connectorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- }
-
- public void testReceivePiggyBackOnIdleClient() throws Exception
- {
-
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(0);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, 500l);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_PROP_NAME, 500l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- SimpleBufferHandler connectorHandler = new SimpleBufferHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- acceptorListener.connection.write(buff);
- }
-
- acceptorLatch.await(10, TimeUnit.SECONDS);
- connectorLatch.await(10, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, 0);
- assertEquals(connectorHandler.messagesReceieved, numPackets);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- i = 0;
- for (Integer j : connectorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- }
-
- public void testSendWithNoReceive() throws Exception
- {
-
- int numPackets = 1000;
- CountDownLatch connCreatedLatch = new CountDownLatch(1);
- CountDownLatch acceptorLatch = new CountDownLatch(numPackets);
- CountDownLatch connectorLatch = new CountDownLatch(numPackets);
- HashMap<String, Object> conf = new HashMap<String, Object>();
- conf.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
- conf.put(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD, -1l);
- conf.put(TransportConstants.HTTP_RESPONSE_TIME_PROP_NAME, 500l);
- conf.put(TransportConstants.HTTP_SERVER_SCAN_PERIOD_PROP_NAME, 5000l);
- DummyConnectionLifeCycleListener acceptorListener = new DummyConnectionLifeCycleListener(connCreatedLatch);
- SimpleBufferHandler acceptorHandler = new SimpleBufferHandler(acceptorLatch);
- acceptor = new NettyAcceptor(conf, acceptorHandler, acceptorListener);
- acceptor.start();
-
- BogusResponseHandler connectorHandler = new BogusResponseHandler(connectorLatch);
- connector = new NettyConnector(conf, connectorHandler, new DummyConnectionLifeCycleListener(null));
- connector.start();
- Connection conn = connector.createConnection();
- connCreatedLatch.await(5, TimeUnit.SECONDS);
- for (int i = 0; i < numPackets; i++)
- {
- MessagingBuffer buff = conn.createBuffer(8);
- buff.writeInt(4);
- buff.writeInt(i);
- conn.write(buff);
- }
- acceptorLatch.await(100, TimeUnit.SECONDS);
- connectorLatch.await(0, TimeUnit.SECONDS);
- conn.close();
- assertEquals(acceptorHandler.messagesReceieved, numPackets);
- assertEquals(connectorHandler.messagesReceieved, 0);
- int i = 0;
- for (Integer j : acceptorHandler.messages)
- {
- assertTrue(i == j);
- i++;
- }
- }
-
@Override
protected void tearDown() throws Exception
{
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSServerControlTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -316,7 +316,6 @@
Thread.sleep(500);
assertEquals(0, control.listRemoteAddresses().length);
- assertEquals(0, control.listConnectionIDs().length);
}
finally
{
@@ -363,7 +362,6 @@
boolean gotException = exceptionLatch.await(1, TimeUnit.SECONDS);
assertTrue("did not received the expected JMSException", gotException);
- Thread.sleep(500);
assertEquals(0, control.listRemoteAddresses().length);
assertEquals(0, service.getServer().getConnectionCount());
}
@@ -415,10 +413,6 @@
assertEquals(1, control.listRemoteAddresses().length);
assertEquals(1, service.getServer().getConnectionCount());
-
- connection.close();
- Thread.sleep(1000);
- assertEquals(0, service.getServer().getConnectionCount());
}
finally
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSUtil.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSUtil.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/jms/management/JMSUtil.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -102,37 +102,6 @@
DEFAULT_RETRY_INTERVAL_MULTIPLIER,
DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
- return cf.createConnection();
- }
-
- public static Connection createConnection(final String connectorFactory,
- final long pingPeriod,
- final long connectionTTL) throws JMSException
- {
- JBossConnectionFactory cf = new JBossConnectionFactory(new TransportConfiguration(connectorFactory),
- null,
- DEFAULT_CONNECTION_LOAD_BALANCING_POLICY_CLASS_NAME,
- DEFAULT_PING_PERIOD,
- connectionTTL,
- DEFAULT_CALL_TIMEOUT,
- null,
- DEFAULT_ACK_BATCH_SIZE,
- DEFAULT_ACK_BATCH_SIZE,
- DEFAULT_CONSUMER_WINDOW_SIZE,
- DEFAULT_CONSUMER_MAX_RATE,
- DEFAULT_SEND_WINDOW_SIZE,
- DEFAULT_PRODUCER_MAX_RATE,
- DEFAULT_MIN_LARGE_MESSAGE_SIZE,
- DEFAULT_BLOCK_ON_ACKNOWLEDGE,
- true,
- true,
- DEFAULT_AUTO_GROUP,
- DEFAULT_MAX_CONNECTIONS,
- DEFAULT_PRE_ACKNOWLEDGE,
- DEFAULT_RETRY_INTERVAL,
- DEFAULT_RETRY_INTERVAL_MULTIPLIER,
- DEFAULT_MAX_RETRIES_BEFORE_FAILOVER,
- DEFAULT_MAX_RETRIES_AFTER_FAILOVER);
return cf.createConnection();
}
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/ManagementServiceImplTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -32,11 +32,9 @@
import static org.jboss.messaging.core.security.CheckType.READ;
import static org.jboss.messaging.core.security.CheckType.WRITE;
import static org.jboss.messaging.tests.util.RandomUtil.randomBoolean;
-import static org.jboss.messaging.tests.util.RandomUtil.randomSimpleString;
import static org.jboss.messaging.tests.util.RandomUtil.randomString;
import java.lang.management.ManagementFactory;
-import java.nio.ByteBuffer;
import java.util.Set;
import javax.management.MBeanServer;
@@ -44,7 +42,6 @@
import javax.management.ObjectName;
import org.jboss.messaging.core.buffers.ChannelBuffers;
-import org.jboss.messaging.core.buffers.HeapChannelBuffer;
import org.jboss.messaging.core.client.management.impl.ManagementHelper;
import org.jboss.messaging.core.logging.Logger;
import org.jboss.messaging.core.management.AddressControlMBean;
@@ -78,31 +75,6 @@
// Public --------------------------------------------------------
- public void testHandleManagementMessageWithAttribute() throws Exception
- {
- MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
- ManagementService managementService = new ManagementServiceImpl(mbeanServer, false);
- assertNotNull(managementService);
- managementService.start();
-
- SimpleString address = RandomUtil.randomSimpleString();
- managementService.registerAddress(address);
-
- // invoke attribute and operation on the server
- ServerMessage message = new ServerMessageImpl();
- MessagingBuffer body = ChannelBuffers.buffer(2048);
- message.setBody(body);
- ManagementHelper.putAttributes(message, ObjectNames.getAddressObjectName(address), "Address");
-
- managementService.handleMessage(message);
-
- SimpleString value = (SimpleString)message.getProperty(new SimpleString("Address"));
- assertNotNull(value);
- assertEquals(address, value);
-
- managementService.stop();
- }
-
public void testHandleManagementMessageWithOperation() throws Exception
{
MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
@@ -186,23 +158,7 @@
managementService.stop();
}
- public void testStop() throws Exception
- {
- MBeanServer mbeanServer = MBeanServerFactory.createMBeanServer();
- ManagementService managementService = new ManagementServiceImpl(mbeanServer, true);
- assertNotNull(managementService);
- managementService.start();
-
- managementService.registerAddress(randomSimpleString());
-
- assertEquals(1, mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null).size());
-
- managementService.stop();
-
- assertEquals(0, mbeanServer.queryMBeans(ObjectName.getInstance(ObjectNames.DOMAIN + ":*"), null).size());
- }
-
// Package protected ---------------------------------------------
@Override
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/management/NotificationTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/management/NotificationTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/management/NotificationTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -78,11 +78,6 @@
ClientConsumer notifConsumer = session.createConsumer(notifQueue);
session.start();
- // generate notifications
- SimpleString destinationName = randomSimpleString();
- session.addDestination(destinationName, false, true);
- session.removeDestination(destinationName, false);
-
// we've generated at least 2 notifications
// but there is more in the queue (e.g. the notification when the notifQueue was created)
ClientMessage notifMessage = notifConsumer.receive(500);
@@ -106,6 +101,29 @@
}
notifMessage.acknowledge();
+ // generate more notifications
+ session.createQueue(new SimpleString("testaddress"), new SimpleString("queue1"), false);
+ session.deleteQueue(new SimpleString("queue1"));
+
+ notifMessage = notifConsumer.receive(500);
+ assertNotNull(notifMessage);
+ propertyNames = notifMessage.getPropertyNames();
+ for (SimpleString key : propertyNames)
+ {
+ System.out.println(key + "=" + notifMessage.getProperty(key));
+ }
+ notifMessage.acknowledge();
+
+ notifMessage = notifConsumer.receive(500);
+ assertNotNull(notifMessage);
+ propertyNames = notifMessage.getPropertyNames();
+ for (SimpleString key : propertyNames)
+ {
+ System.out.println(key + "=" + notifMessage.getProperty(key));
+ }
+ notifMessage.acknowledge();
+
+
notifConsumer.close();
session.deleteQueue(notifQueue);
session.close();
@@ -129,18 +147,18 @@
session.start();
// generate notifications that do NOT match the filter
- session.addDestination(unmatchedDestinationName, false, true);
- session.removeDestination(unmatchedDestinationName, false);
+ session.createQueue(unmatchedDestinationName, unmatchedDestinationName, true);
+ session.deleteQueue(unmatchedDestinationName);
assertNull(notifConsumer.receive(500));
// generate notifications that match the filter
- session.addDestination(destinationName, false, true);
- session.removeDestination(destinationName, false);
+ session.createQueue(destinationName, destinationName, true);
+ session.deleteQueue(destinationName);
ClientMessage notifMessage = notifConsumer.receive(500);
assertNotNull(notifMessage);
- assertEquals(NotificationType.ADDRESS_ADDED.toString(), notifMessage.getProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString());
+ assertEquals(NotificationType.BINDING_ADDED.toString(), notifMessage.getProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString());
Set<SimpleString> propertyNames = notifMessage.getPropertyNames();
for (SimpleString key : propertyNames)
@@ -153,7 +171,7 @@
notifMessage = notifConsumer.receive(500);
assertNotNull(notifMessage);
- assertEquals(NotificationType.ADDRESS_REMOVED.toString(), notifMessage.getProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString());
+ assertEquals(NotificationType.BINDING_REMOVED.toString(), notifMessage.getProperty(ManagementHelper.HDR_NOTIFICATION_TYPE).toString());
propertyNames = notifMessage.getPropertyNames();
for (SimpleString key : propertyNames)
{
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/security/SimpleClient.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/security/SimpleClient.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/security/SimpleClient.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -65,7 +65,6 @@
ClientSessionFactory sf = new ClientSessionFactoryImpl(new TransportConfiguration(connectorFactoryClassName));
ClientSession session = sf.createSession(false, true, true);
- session.addDestination(queueName, false, true);
session.createQueue(queueName, queueName, null, false, false);
ClientProducer producer = session.createProducer(queueName);
ClientConsumer consumer = session.createConsumer(queueName);
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/wildcard/WildCardRoutingTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/wildcard/WildCardRoutingTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/wildcard/WildCardRoutingTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -172,37 +172,6 @@
assertNull(m);
}
- public void testWildcardRoutingDestinationsAdded() throws Exception
- {
- SimpleString addressAB = new SimpleString("a.b");
- SimpleString addressAC = new SimpleString("a.c");
- SimpleString address = new SimpleString("a.*");
- SimpleString queueName1 = new SimpleString("Q1");
- SimpleString queueName2 = new SimpleString("Q2");
- SimpleString queueName = new SimpleString("Q");
- messagingService.getServer().getPostOffice().addDestination(addressAB, false);
- messagingService.getServer().getPostOffice().addDestination(addressAC, false);
- clientSession.createQueue(addressAB, queueName1, null, false, false);
- clientSession.createQueue(addressAC, queueName2, null, false, false);
- clientSession.createQueue(address, queueName, null, false, false);
- ClientProducer producer = clientSession.createProducer(addressAB);
- ClientProducer producer2 = clientSession.createProducer(addressAC);
- ClientConsumer clientConsumer = clientSession.createConsumer(queueName);
- clientSession.start();
- producer.send(createTextMessage("m1", clientSession));
- producer2.send(createTextMessage("m2", clientSession));
- ClientMessage m = clientConsumer.receive(500);
- assertNotNull(m);
- assertEquals("m1", m.getBody().readString());
- m.acknowledge();
- m = clientConsumer.receive(500);
- assertNotNull(m);
- assertEquals("m2", m.getBody().readString());
- m.acknowledge();
- m = clientConsumer.receive(500);
- assertNull(m);
- }
-
public void testWildcardRoutingQueuesAddedAfter() throws Exception
{
SimpleString addressAB = new SimpleString("a.b");
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -21,6 +21,15 @@
*/
package org.jboss.messaging.tests.integration.xa;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
import org.jboss.messaging.core.client.ClientConsumer;
import org.jboss.messaging.core.client.ClientMessage;
import org.jboss.messaging.core.client.ClientProducer;
@@ -33,19 +42,10 @@
import org.jboss.messaging.core.server.MessagingService;
import org.jboss.messaging.core.settings.impl.AddressSettings;
import org.jboss.messaging.core.transaction.impl.XidImpl;
-import org.jboss.messaging.jms.client.JBossMessage;
import org.jboss.messaging.tests.util.ServiceTestBase;
import org.jboss.messaging.utils.SimpleString;
import org.jboss.messaging.utils.UUIDGenerator;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
/**
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
*/
@@ -266,7 +266,6 @@
e.printStackTrace();
}
-
try
{
message.acknowledge();
Modified: trunk/tests/src/org/jboss/messaging/tests/performance/persistence/FakePostOffice.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/performance/persistence/FakePostOffice.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/performance/persistence/FakePostOffice.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -34,7 +34,6 @@
import org.jboss.messaging.core.postoffice.PostOffice;
import org.jboss.messaging.core.server.Queue;
import org.jboss.messaging.core.server.ServerMessage;
-import org.jboss.messaging.core.server.impl.SendLockImpl;
import org.jboss.messaging.core.transaction.Transaction;
import org.jboss.messaging.utils.ConcurrentHashSet;
import org.jboss.messaging.utils.SimpleString;
@@ -149,11 +148,6 @@
return null;
}
- public SendLockImpl getAddressLock(SimpleString address)
- {
- return null;
- }
-
public DuplicateIDCache getDuplicateIDCache(SimpleString address)
{
return null;
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/client/impl/ClientSessionImplTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -56,7 +56,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.NullResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.PacketImpl;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionAcknowledgeMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionAddDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionBindingQueryResponseMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionCloseMessage;
@@ -66,7 +65,6 @@
import org.jboss.messaging.core.remoting.impl.wireformat.SessionDeleteQueueMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionQueueQueryResponseMessage;
-import org.jboss.messaging.core.remoting.impl.wireformat.SessionRemoveDestinationMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXACommitMessage;
import org.jboss.messaging.core.remoting.impl.wireformat.SessionXAResponseMessage;
import org.jboss.messaging.tests.util.UnitTestCase;
@@ -222,61 +220,7 @@
verifyMocks();
}
- public void testAddDestination() throws Exception
- {
- SimpleString address = randomSimpleString();
- boolean durable = randomBoolean();
- boolean temporary = randomBoolean();
-
- SessionAddDestinationMessage request = new SessionAddDestinationMessage(address, durable, temporary);
-
- // SimpleString verion
- expect(channel.sendBlocking(request)).andReturn(new NullResponseMessage());
-
- replayMocks();
-
- session.addDestination(address, durable, temporary);
-
- verifyMocks();
-
- // String verion
- resetMocks();
-
- expect(channel.sendBlocking(request)).andReturn(new NullResponseMessage());
-
- replayMocks();
-
- session.addDestination(address.toString(), durable, temporary);
-
- verifyMocks();
- }
-
- public void testRemoveDestination() throws Exception
- {
- SimpleString address = randomSimpleString();
- boolean durable = randomBoolean();
-
- SessionRemoveDestinationMessage request = new SessionRemoveDestinationMessage(address, durable);
-
- // SimpleString version
- expect(channel.sendBlocking(request)).andReturn(new NullResponseMessage());
- replayMocks();
-
- session.removeDestination(address, durable);
-
- verifyMocks();
-
- // String version
- resetMocks();
-
- expect(channel.sendBlocking(request)).andReturn(new NullResponseMessage());
- replayMocks();
-
- session.removeDestination(address.toString(), durable);
-
- verifyMocks();
- }
-
+
public void testCreateConsumer() throws Exception
{
SimpleString queueName = randomSimpleString();
@@ -957,26 +901,11 @@
}
});
+
assertMessagingException(OBJECT_CLOSED, new SessionCaller()
{
public void call(ClientSessionImpl session) throws MessagingException
{
- session.addDestination(randomSimpleString(), randomBoolean(), randomBoolean());
- }
- });
-
- assertMessagingException(OBJECT_CLOSED, new SessionCaller()
- {
- public void call(ClientSessionImpl session) throws MessagingException
- {
- session.removeDestination(randomSimpleString(), randomBoolean());
- }
- });
-
- assertMessagingException(OBJECT_CLOSED, new SessionCaller()
- {
- public void call(ClientSessionImpl session) throws MessagingException
- {
session.queueQuery(randomSimpleString());
}
});
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/ConfigurationImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/ConfigurationImplTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/ConfigurationImplTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -56,7 +56,6 @@
assertEquals(ConfigurationImpl.DEFAULT_QUEUE_ACTIVATION_TIMEOUT, conf.getQueueActivationTimeout());
assertEquals(ConfigurationImpl.DEFAULT_SCHEDULED_THREAD_POOL_MAX_SIZE, conf.getScheduledThreadPoolMaxSize());
assertEquals(ConfigurationImpl.DEFAULT_SECURITY_INVALIDATION_INTERVAL, conf.getSecurityInvalidationInterval());
- assertEquals(ConfigurationImpl.DEFAULT_REQUIRE_DESTINATIONS, conf.isRequireDestinations());
assertEquals(ConfigurationImpl.DEFAULT_SECURITY_ENABLED, conf.isSecurityEnabled());
assertEquals(ConfigurationImpl.DEFAULT_CONNECTION_SCAN_PERIOD, conf.getConnectionScanPeriod());
assertEquals(ConfigurationImpl.DEFAULT_BINDINGS_DIRECTORY, conf.getBindingsDirectory());
@@ -102,10 +101,6 @@
assertEquals(l, conf.getSecurityInvalidationInterval());
b = randomBoolean();
- conf.setRequireDestinations(b);
- assertEquals(b, conf.isRequireDestinations());
-
- b = randomBoolean();
conf.setSecurityEnabled(b);
assertEquals(b, conf.isSecurityEnabled());
@@ -201,9 +196,6 @@
conf.setSecurityInvalidationInterval(l);
b = randomBoolean();
- conf.setRequireDestinations(b);
-
- b = randomBoolean();
conf.setSecurityEnabled(b);
l = randomLong();
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/DefaultsFileConfigurationTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/DefaultsFileConfigurationTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/DefaultsFileConfigurationTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -54,8 +54,6 @@
assertEquals(ConfigurationImpl.DEFAULT_SECURITY_ENABLED, conf.isSecurityEnabled());
- assertEquals(ConfigurationImpl.DEFAULT_REQUIRE_DESTINATIONS, conf.isRequireDestinations());
-
assertEquals(ConfigurationImpl.DEFAULT_JMX_MANAGEMENT_ENABLED, conf.isJMXManagementEnabled());
assertEquals(0, conf.getInterceptorClassNames().size());
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/FileConfigurationTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/FileConfigurationTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/config/impl/FileConfigurationTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -40,7 +40,6 @@
assertEquals(12456, conf.getQueueActivationTimeout());
assertEquals(12345, conf.getScheduledThreadPoolMaxSize());
assertEquals(5423, conf.getSecurityInvalidationInterval());
- assertEquals(false, conf.isRequireDestinations());
assertEquals(false, conf.isSecurityEnabled());
assertEquals(6543, conf.getConnectionScanPeriod());
assertEquals("somedir", conf.getBindingsDirectory());
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/management/impl/ManagementServiceImplTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -181,60 +181,8 @@
verify(mbeanServer);
}
- public void testRegisterAddress() throws Exception
- {
- SimpleString address = randomSimpleString();
- ObjectName objectName = ObjectNames.getAddressObjectName(address);
- ObjectInstance objectInstance = new ObjectInstance(objectName, AddressControl.class.getName());
+
- MBeanServer mbeanServer = createMock(MBeanServer.class);
- expect(mbeanServer.isRegistered(objectName)).andReturn(false);
- expect(mbeanServer.registerMBean(isA(StandardMBean.class), eq(objectName))).andReturn(objectInstance);
-
- replay(mbeanServer);
-
- ManagementService service = new ManagementServiceImpl(mbeanServer, true);
- service.registerAddress(address);
-
- verify(mbeanServer);
- }
-
- public void testRegisterAlreadyRegisteredAddress() throws Exception
- {
- SimpleString address = randomSimpleString();
- ObjectName objectName = ObjectNames.getAddressObjectName(address);
- ObjectInstance objectInstance = new ObjectInstance(objectName, AddressControl.class.getName());
-
- MBeanServer mbeanServer = createMock(MBeanServer.class);
- expect(mbeanServer.isRegistered(objectName)).andReturn(true);
- mbeanServer.unregisterMBean(objectName);
- expect(mbeanServer.registerMBean(isA(StandardMBean.class), eq(objectName))).andReturn(objectInstance);
-
- replay(mbeanServer);
-
- ManagementService service = new ManagementServiceImpl(mbeanServer, true);
- service.registerAddress(address);
-
- verify(mbeanServer);
- }
-
- public void testUnregisterAddress() throws Exception
- {
- SimpleString address = randomSimpleString();
- ObjectName objectName = ObjectNames.getAddressObjectName(address);
-
- MBeanServer mbeanServer = createMock(MBeanServer.class);
- expect(mbeanServer.isRegistered(objectName)).andReturn(true);
- mbeanServer.unregisterMBean(objectName);
-
- replay(mbeanServer);
-
- ManagementService service = new ManagementServiceImpl(mbeanServer, true);
- service.unregisterAddress(address);
-
- verify(mbeanServer);
- }
-
// public void testRegisterQueue() throws Exception
// {
// SimpleString address = randomSimpleString();
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/persistence/impl/journal/JournalStorageManagerTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/persistence/impl/journal/JournalStorageManagerTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/persistence/impl/journal/JournalStorageManagerTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -530,86 +530,7 @@
// EasyMock.verify(messageJournal, bindingsJournal, binding, queue);
// }
- public void testAddDeleteDestination() throws Exception
- {
- Journal messageJournal = EasyMock.createStrictMock(Journal.class);
- Journal bindingsJournal = EasyMock.createStrictMock(Journal.class);
-
- JournalStorageManager jsm = new JournalStorageManager(messageJournal, bindingsJournal, null);
-
- SimpleString dest = new SimpleString("oaskokas");
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- DataOutputStream daos = new DataOutputStream(baos);
- byte[] destBytes = dest.getData();
- daos.writeInt(destBytes.length);
- daos.write(destBytes);
- daos.flush();
- byte[] data = baos.toByteArray();
- bindingsJournal.appendAddRecord(EasyMock.anyLong(),
- EasyMock.eq(JournalStorageManager.DESTINATION_RECORD),
- compareEncodingSupport(data));
-
- EasyMock.replay(messageJournal, bindingsJournal);
-
- jsm.addDestination(dest);
-
- EasyMock.verify(messageJournal, bindingsJournal);
-
- EasyMock.reset(messageJournal, bindingsJournal);
-
- // Adding again should do nothing
-
- EasyMock.replay(messageJournal, bindingsJournal);
-
- jsm.addDestination(dest);
-
- EasyMock.verify(messageJournal, bindingsJournal);
-
- EasyMock.reset(messageJournal, bindingsJournal);
-
- // Add diffferent dest
-
- SimpleString dest2 = new SimpleString("ihjij");
-
- baos = new ByteArrayOutputStream();
- daos = new DataOutputStream(baos);
- destBytes = dest2.getData();
- daos.writeInt(destBytes.length);
- daos.write(destBytes);
- daos.flush();
- data = baos.toByteArray();
- bindingsJournal.appendAddRecord(EasyMock.anyLong(),
- EasyMock.eq(JournalStorageManager.DESTINATION_RECORD),
- compareEncodingSupport(data));
-
- EasyMock.replay(messageJournal, bindingsJournal);
-
- jsm.addDestination(dest2);
-
- EasyMock.verify(messageJournal, bindingsJournal);
-
- EasyMock.reset(messageJournal, bindingsJournal);
-
- bindingsJournal.appendDeleteRecord(EasyMock.anyLong());
-
- EasyMock.replay(messageJournal, bindingsJournal);
-
- jsm.deleteDestination(dest2);
-
- EasyMock.verify(messageJournal, bindingsJournal);
-
- EasyMock.reset(messageJournal, bindingsJournal);
-
- EasyMock.replay(messageJournal, bindingsJournal);
-
- // Should do nothing
-
- jsm.deleteDestination(dest2);
-
- EasyMock.verify(messageJournal, bindingsJournal);
- }
-
+
private RecordInfo createBindingRecord(final long id,
final SimpleString queueName,
final SimpleString address,
@@ -640,21 +561,8 @@
return record;
}
- private RecordInfo createDestinationRecord(final long id, final SimpleString dest) throws Exception
- {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- DataOutputStream daos = new DataOutputStream(baos);
- byte[] destBytes = dest.getData();
- daos.writeInt(destBytes.length);
- daos.write(destBytes);
- daos.flush();
- byte[] data = baos.toByteArray();
- RecordInfo record = new RecordInfo(id, JournalStorageManager.DESTINATION_RECORD, data, false);
- return record;
- }
-
// public void testLoadBindings() throws Exception
// {
// Journal messageJournal = EasyMock.createStrictMock(Journal.class);
Modified: trunk/tests/src/org/jboss/messaging/tests/unit/jms/JBossTemporaryTopicTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/jms/JBossTemporaryTopicTest.java 2009-03-02 22:53:02 UTC (rev 5966)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/jms/JBossTemporaryTopicTest.java 2009-03-03 08:59:59 UTC (rev 5967)
@@ -74,31 +74,31 @@
assertEquals(true, tempTopic.isTemporary());
}
- public void testDelete() throws Exception
- {
- String topicName = randomString();
- SimpleString topicAddress = new SimpleString(
- JBossTemporaryTopic.JMS_TEMP_TOPIC_ADDRESS_PREFIX + topicName);
-
- ClientSession clientSession = createStrictMock(ClientSession.class);
- SessionBindingQueryResponseMessage resp = new SessionBindingQueryResponseMessage(
- true, new ArrayList<SimpleString>());
- expect(clientSession.bindingQuery(topicAddress)).andReturn(resp);
- clientSession.removeDestination(topicAddress, false);
-
- replay(clientSession);
-
- JBossConnection connection = new JBossConnection("username", "password",
- JBossConnection.TYPE_TOPIC_CONNECTION, null, 0, 0, EasyMock.createMock(ClientSessionFactory.class));
- JBossSession session = new JBossSession(connection, false, false,
- Session.AUTO_ACKNOWLEDGE, clientSession,
- JBossSession.TYPE_TOPIC_SESSION);
- JBossTemporaryTopic tempTopic = new JBossTemporaryTopic(session,
- topicName);
- tempTopic.delete();
-
- verify(clientSession);
- }
+// public void testDelete() throws Exception
+// {
+// String topicName = randomString();
+// SimpleString topicAddress = new SimpleString(
+// JBossTemporaryTopic.JMS_TEMP_TOPIC_ADDRESS_PREFIX + topicName);
+//
+// ClientSession clientSession = createStrictMock(ClientSession.class);
+// SessionBindingQueryResponseMessage resp = new SessionBindingQueryResponseMessage(
+// true, new ArrayList<SimpleString>());
+// expect(clientSession.bindingQuery(topicAddress)).andReturn(resp);
+// clientSession.removeDestination(topicAddress, false);
+//
+// replay(clientSession);
+//
+// JBossConnection connection = new JBossConnection("username", "password",
+// JBossConnection.TYPE_TOPIC_CONNECTION, null, 0, 0, EasyMock.createMock(ClientSessionFactory.class));
+// JBossSession session = new JBossSession(connection, false, false,
+// Session.AUTO_ACKNOWLEDGE, clientSession,
+// JBossSession.TYPE_TOPIC_SESSION);
+// JBossTemporaryTopic tempTopic = new JBossTemporaryTopic(session,
+// topicName);
+// tempTopic.delete();
+//
+// verify(clientSession);
+// }
// Package protected ---------------------------------------------
More information about the jboss-cvs-commits
mailing list