[jboss-cvs] JBoss Messaging SVN: r2816 - in trunk: src/main/org/jboss/messaging/core/impl/postoffice and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jun 28 17:51:10 EDT 2007
Author: timfox
Date: 2007-06-28 17:51:09 -0400 (Thu, 28 Jun 2007)
New Revision: 2816
Modified:
trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java
Log:
Fixed http://jira.jboss.com/jira/browse/JBMESSAGING-1001, fixed sql issue in hsql config and uncommented remoting test
Modified: trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java 2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java 2007-06-28 21:51:09 UTC (rev 2816)
@@ -898,30 +898,37 @@
{
try
{
- // We add the references to the state
+ // We add the references to the state (or schedule them if appropriate)
boolean promptDelivery = false;
for(Iterator i = refsToAdd.iterator(); i.hasNext(); )
{
MessageReference ref = (MessageReference)i.next();
-
- if (trace) { log.trace(this + ": adding " + ref + " to non-recoverable state"); }
-
- try
+
+ if (checkAndSchedule(ref))
{
- synchronized (lock)
- {
- addReferenceInMemory(ref);
- }
+ if (trace) { log.trace(this + ": scheduled " + ref); }
}
- catch (Throwable t)
- {
- throw new TransactionException("Failed to add reference", t);
+ else
+ {
+ if (trace) { log.trace(this + ": adding " + ref + " to non-recoverable state"); }
+
+ try
+ {
+ synchronized (lock)
+ {
+ addReferenceInMemory(ref);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new TransactionException("Failed to add reference", t);
+ }
+
+ //Only need to prompt delivery if refs were added
+ promptDelivery = true;
}
-
- //Only need to prompt delivery if refs were added
- promptDelivery = true;
}
// Remove deliveries
Modified: trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java 2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java 2007-06-28 21:51:09 UTC (rev 2816)
@@ -1024,7 +1024,7 @@
"CHANNEL_ID, " +
"CLUSTERED, " +
"ALL_NODES) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?)");
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
map.put("DELETE_BINDING",
"DELETE FROM JBM_POSTOFFICE WHERE POSTOFFICE_NAME=? AND NODE_ID=? AND QUEUE_NAME=?");
Modified: trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java 2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/tests/src/org/jboss/test/messaging/jms/ScheduledDeliveryTest.java 2007-06-28 21:51:09 UTC (rev 2816)
@@ -69,144 +69,16 @@
// Public --------------------------------------------------------
- public void testScheduledDelivery() throws Exception
+ public void testScheduledDeliveryTX() throws Exception
{
- Connection conn = null;
-
- try
- {
- conn = cf.createConnection();
-
- Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
- MessageProducer prod = sess.createProducer(queue);
-
- MessageConsumer cons = sess.createConsumer(queue);
-
- conn.start();
-
- //Send one scheduled
-
- long now = System.currentTimeMillis();
-
- TextMessage tm1 = sess.createTextMessage("testScheduled1");
- tm1.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 7000);
- prod.send(tm1);
-
- //First send some non scheduled messages
-
- TextMessage tm2 = sess.createTextMessage("testScheduled2");
- prod.send(tm2);
-
- TextMessage tm3 = sess.createTextMessage("testScheduled3");
- prod.send(tm3);
-
- TextMessage tm4 = sess.createTextMessage("testScheduled4");
- prod.send(tm4);
-
-
- //Now send some more scheduled messages
-
- TextMessage tm5 = sess.createTextMessage("testScheduled5");
- tm5.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 5000);
- prod.send(tm5);
-
- TextMessage tm6 = sess.createTextMessage("testScheduled6");
- tm6.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 4000);
- prod.send(tm6);
+ scheduledDelivery(true);
+ }
- TextMessage tm7 = sess.createTextMessage("testScheduled7");
- tm7.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 3000);
- prod.send(tm7);
-
- TextMessage tm8 = sess.createTextMessage("testScheduled8");
- tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 6000);
- prod.send(tm8);
-
- //And one scheduled with a -ve number
-
- TextMessage tm9 = sess.createTextMessage("testScheduled9");
- tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, -3);
- prod.send(tm9);
-
- //First the non scheduled messages should be received
-
- TextMessage rm1 = (TextMessage)cons.receive(250);
- assertNotNull(rm1);
- assertEquals(tm2.getText(), rm1.getText());
-
- TextMessage rm2 = (TextMessage)cons.receive(250);
- assertNotNull(rm2);
- assertEquals(tm3.getText(), rm2.getText());
-
- TextMessage rm3 = (TextMessage)cons.receive(250);
- assertNotNull(rm3);
- assertEquals(tm4.getText(), rm3.getText());
-
- //Now the one with a scheduled with a -ve number
- TextMessage rm5 = (TextMessage)cons.receive(250);
- assertNotNull(rm5);
- assertEquals(tm9.getText(), rm5.getText());
-
- //Now the scheduled
- TextMessage rm6 = (TextMessage)cons.receive(3250);
- assertNotNull(rm6);
- assertEquals(tm7.getText(), rm6.getText());
-
- long now2 = System.currentTimeMillis();
-
- assertTrue(now2 - now >= 3000);
-
-
- TextMessage rm7 = (TextMessage)cons.receive(1250);
- assertNotNull(rm7);
- assertEquals(tm6.getText(), rm7.getText());
-
- now2 = System.currentTimeMillis();
-
- assertTrue(now2 - now >= 4000);
-
-
- TextMessage rm8 = (TextMessage)cons.receive(1250);
- assertNotNull(rm8);
- assertEquals(tm5.getText(), rm8.getText());
-
- now2 = System.currentTimeMillis();
-
- assertTrue(now2 - now >= 5000);
-
-
- TextMessage rm9 = (TextMessage)cons.receive(1250);
- assertNotNull(rm9);
- assertEquals(tm8.getText(), rm9.getText());
-
- now2 = System.currentTimeMillis();
-
- assertTrue(now2 - now >= 6000);
-
-
- TextMessage rm10 = (TextMessage)cons.receive(1250);
- assertNotNull(rm10);
- assertEquals(tm1.getText(), rm10.getText());
-
- now2 = System.currentTimeMillis();
-
- assertTrue(now2 - now >= 7000);
-
- Message m = cons.receive(1000);
-
- assertNull(m);
- }
- finally
- {
- if (conn != null)
- {
- conn.close();
- }
- }
+ public void testScheduledDeliveryNoTX() throws Exception
+ {
+ scheduledDelivery(false);
}
-
public void testScheduledDeliveryWithRestart() throws Exception
{
Connection conn = null;
@@ -590,7 +462,154 @@
}
// Private -------------------------------------------------------
+
+ private void scheduledDelivery(boolean tx) throws Exception
+ {
+ Connection conn = null;
+
+ try
+ {
+ conn = cf.createConnection();
+
+ Session sess = conn.createSession(tx, tx ? Session.SESSION_TRANSACTED : Session.AUTO_ACKNOWLEDGE);
+
+ MessageProducer prod = sess.createProducer(queue);
+
+ MessageConsumer cons = sess.createConsumer(queue);
+
+ conn.start();
+
+ //Send one scheduled
+
+ long now = System.currentTimeMillis();
+
+ TextMessage tm1 = sess.createTextMessage("testScheduled1");
+ tm1.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 7000);
+ prod.send(tm1);
+
+ //First send some non scheduled messages
+
+ TextMessage tm2 = sess.createTextMessage("testScheduled2");
+ prod.send(tm2);
+ TextMessage tm3 = sess.createTextMessage("testScheduled3");
+ prod.send(tm3);
+
+ TextMessage tm4 = sess.createTextMessage("testScheduled4");
+ prod.send(tm4);
+
+
+ //Now send some more scheduled messages
+
+ TextMessage tm5 = sess.createTextMessage("testScheduled5");
+ tm5.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 5000);
+ prod.send(tm5);
+
+ TextMessage tm6 = sess.createTextMessage("testScheduled6");
+ tm6.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 4000);
+ prod.send(tm6);
+
+ TextMessage tm7 = sess.createTextMessage("testScheduled7");
+ tm7.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 3000);
+ prod.send(tm7);
+
+ TextMessage tm8 = sess.createTextMessage("testScheduled8");
+ tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, now + 6000);
+ prod.send(tm8);
+
+ //And one scheduled with a -ve number
+
+ TextMessage tm9 = sess.createTextMessage("testScheduled9");
+ tm8.setLongProperty(JBossMessage.JMS_JBOSS_SCHEDULED_DELIVERY_PROP_NAME, -3);
+ prod.send(tm9);
+
+ if (tx)
+ {
+ sess.commit();
+ }
+
+ //First the non scheduled messages should be received
+
+ TextMessage rm1 = (TextMessage)cons.receive(250);
+ assertNotNull(rm1);
+ assertEquals(tm2.getText(), rm1.getText());
+
+ TextMessage rm2 = (TextMessage)cons.receive(250);
+ assertNotNull(rm2);
+ assertEquals(tm3.getText(), rm2.getText());
+
+ TextMessage rm3 = (TextMessage)cons.receive(250);
+ assertNotNull(rm3);
+ assertEquals(tm4.getText(), rm3.getText());
+
+ //Now the one with a scheduled with a -ve number
+ TextMessage rm5 = (TextMessage)cons.receive(250);
+ assertNotNull(rm5);
+ assertEquals(tm9.getText(), rm5.getText());
+
+ //Now the scheduled
+ TextMessage rm6 = (TextMessage)cons.receive(3250);
+ assertNotNull(rm6);
+ assertEquals(tm7.getText(), rm6.getText());
+
+ long now2 = System.currentTimeMillis();
+
+ assertTrue(now2 - now >= 3000);
+
+
+ TextMessage rm7 = (TextMessage)cons.receive(1250);
+ assertNotNull(rm7);
+ assertEquals(tm6.getText(), rm7.getText());
+
+ now2 = System.currentTimeMillis();
+
+ assertTrue(now2 - now >= 4000);
+
+
+ TextMessage rm8 = (TextMessage)cons.receive(1250);
+ assertNotNull(rm8);
+ assertEquals(tm5.getText(), rm8.getText());
+
+ now2 = System.currentTimeMillis();
+
+ assertTrue(now2 - now >= 5000);
+
+
+ TextMessage rm9 = (TextMessage)cons.receive(1250);
+ assertNotNull(rm9);
+ assertEquals(tm8.getText(), rm9.getText());
+
+ now2 = System.currentTimeMillis();
+
+ assertTrue(now2 - now >= 6000);
+
+
+ TextMessage rm10 = (TextMessage)cons.receive(1250);
+ assertNotNull(rm10);
+ assertEquals(tm1.getText(), rm10.getText());
+
+ now2 = System.currentTimeMillis();
+
+ assertTrue(now2 - now >= 7000);
+
+ Message m = cons.receive(1000);
+
+ assertNull(m);
+
+ if (tx)
+ {
+ sess.commit();
+ }
+ }
+ finally
+ {
+ if (conn != null)
+ {
+ conn.close();
+ }
+ }
+ }
+
// Inner classes -------------------------------------------------
}
Modified: trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java 2007-06-28 20:11:38 UTC (rev 2815)
+++ trunk/tests/src/org/jboss/test/thirdparty/remoting/RemotingTest.java 2007-06-28 21:51:09 UTC (rev 2816)
@@ -153,52 +153,52 @@
/**
* TODO: Commented out until fixed. See http://jira.jboss.org/jira/browse/JBMESSAGING-287
*/
-// public void testConnectionListener() throws Throwable
-// {
-// // Start a server
-//
-// Connector serverConnector = new Connector();
-//
-// InvokerLocator serverLocator = new InvokerLocator("socket://localhost:9099");
-//
-// serverConnector.setInvokerLocator(serverLocator.getLocatorURI());
-//
-// serverConnector.create();
-//
-// SimpleServerInvocationHandler invocationHandler = new SimpleServerInvocationHandler();
-//
-// serverConnector.addInvocationHandler("JMS", invocationHandler);
-//
-// serverConnector.setLeasePeriod(1000);
-//
-// serverConnector.addConnectionListener(new SimpleConnectionListener());
-//
-// serverConnector.start();
-//
-// try
-// {
-// Client client = new Client(serverLocator);
-//
-// client.connect();
-//
-// Thread.sleep(5000);
-//
-// client.disconnect();
-//
-// // Connection Listener should now be called
-//
-// Thread.sleep(5000);
-//
-// assertTrue(connListenerCalled);
-// }
-// finally
-// {
-// serverConnector.stop();
-// serverConnector.destroy();
-// }
-//
-// }
+ public void testConnectionListener() throws Throwable
+ {
+ // Start a server
+ Connector serverConnector = new Connector();
+
+ InvokerLocator serverLocator = new InvokerLocator("socket://localhost:9099");
+
+ serverConnector.setInvokerLocator(serverLocator.getLocatorURI());
+
+ serverConnector.create();
+
+ SimpleServerInvocationHandler invocationHandler = new SimpleServerInvocationHandler();
+
+ serverConnector.addInvocationHandler("JMS", invocationHandler);
+
+ serverConnector.setLeasePeriod(1000);
+
+ serverConnector.addConnectionListener(new SimpleConnectionListener());
+
+ serverConnector.start();
+
+ try
+ {
+ Client client = new Client(serverLocator);
+
+ client.connect();
+
+ Thread.sleep(5000);
+
+ client.disconnect();
+
+ // Connection Listener should now be called
+
+ Thread.sleep(5000);
+
+ assertTrue(connListenerCalled);
+ }
+ finally
+ {
+ serverConnector.stop();
+ serverConnector.destroy();
+ }
+
+ }
+
/**
* JIRA issue: http://jira.jboss.org/jira/browse/JBMESSAGING-371
*/
More information about the jboss-cvs-commits
mailing list