[jboss-cvs] JBoss Messaging SVN: r3020 - in trunk: src/etc/server/default/deploy and 15 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 21 11:46:39 EDT 2007


Author: timfox
Date: 2007-08-21 11:46:38 -0400 (Tue, 21 Aug 2007)
New Revision: 3020

Removed:
   trunk/src/main/org/jboss/messaging/core/impl/message/MessageHolder.java
   trunk/tests/src/org/jboss/test/messaging/core/MessageStoreTestBase.java
   trunk/tests/src/org/jboss/test/messaging/core/SimpleMessageStoreTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/ReferencingTest.java
Modified:
   trunk/.classpath
   trunk/build-messaging.xml
   trunk/src/etc/server/default/deploy/db2-persistence-service.xml
   trunk/src/etc/server/default/deploy/mssql-persistence-service.xml
   trunk/src/etc/server/default/deploy/mysql-persistence-service.xml
   trunk/src/etc/server/default/deploy/oracle-persistence-service.xml
   trunk/src/etc/server/default/deploy/postgresql-persistence-service.xml
   trunk/src/etc/server/default/deploy/sybase-persistence-service.xml
   trunk/src/main/org/jboss/jms/server/ServerPeer.java
   trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
   trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
   trunk/src/main/org/jboss/messaging/core/contract/Message.java
   trunk/src/main/org/jboss/messaging/core/contract/MessageReference.java
   trunk/src/main/org/jboss/messaging/core/contract/MessageStore.java
   trunk/src/main/org/jboss/messaging/core/contract/PersistenceManager.java
   trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
   trunk/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java
   trunk/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java
   trunk/src/main/org/jboss/messaging/core/impl/clusterconnection/ClusterConnectionManager.java
   trunk/src/main/org/jboss/messaging/core/impl/message/MessageFactory.java
   trunk/src/main/org/jboss/messaging/core/impl/message/MessageSupport.java
   trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageReference.java
   trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageStore.java
   trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
   trunk/src/main/org/jboss/messaging/core/impl/tx/TransactionRepository.java
   trunk/tests/build.xml
   trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java
   trunk/tests/src/org/jboss/test/messaging/core/JDBCPersistenceManagerTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_2PCTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_NTTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_TTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_NTTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_TTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java
   trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/JMSTestCase.java
   trunk/tests/src/org/jboss/test/messaging/jms/MessageCleanupTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/server/destination/QueueManagementTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/server/destination/TopicManagementTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/server/destination/base/DestinationManagementTestBase.java
Log:
http://jira.jboss.com/jira/browse/JBMESSAGING-629 plus some pm simplification


Modified: trunk/.classpath
===================================================================
--- trunk/.classpath	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/.classpath	2007-08-21 15:46:38 UTC (rev 3020)
@@ -27,7 +27,6 @@
 	<classpathentry kind="lib" path="thirdparty/hsqldb/lib/hsqldb.jar"/>
 	<classpathentry kind="lib" path="thirdparty/apache-logging/lib/commons-logging.jar"/>
 	<classpathentry kind="lib" path="thirdparty/jboss/serialization/lib/jboss-serialization.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="lib" path="thirdparty/sun-javacc/lib/javacc.jar"/>
 	<classpathentry kind="lib" path="thirdparty/apache-xerces/lib/xercesImpl.jar"/>
 	<classpathentry kind="lib" path="thirdparty/dom4j/lib/dom4j.jar"/>
@@ -61,5 +60,6 @@
 	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-jca.jar"/>
 	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-local-jdbc.jar"/>
 	<classpathentry kind="lib" path="thirdparty/jbossas/core-libs/lib/jboss-xml-binding.jar"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Modified: trunk/build-messaging.xml
===================================================================
--- trunk/build-messaging.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/build-messaging.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -120,7 +120,7 @@
    &libraries;
 
    <!--
-       This module is based on Java 1.4
+       This module is based on Java 1.5
    -->
 
    <property name="javac.target" value="1.5"/>

Modified: trunk/src/etc/server/default/deploy/db2-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/db2-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/db2-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -37,7 +37,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT NOT NULL, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY SMALLINT, HEADERS BLOB, PAYLOAD BLOB, CHANNEL_COUNT INTEGER, TYPE SMALLINT, PRIMARY KEY (MESSAGE_ID))
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT NOT NULL, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY SMALLINT, HEADERS BLOB, PAYLOAD BLOB, TYPE SMALLINT, PRIMARY KEY (MESSAGE_ID))
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER NOT NULL, TRANSACTION_ID BIGINT NOT NULL, BRANCH_QUAL BLOB(254), FORMAT_ID INTEGER, GLOBAL_TXID BLOB(254), PRIMARY KEY (TRANSACTION_ID))
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255) NOT NULL, NEXT_ID BIGINT, PRIMARY KEY(NAME))
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -57,10 +57,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ? FOR UPDATE
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)

Modified: trunk/src/etc/server/default/deploy/mssql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/mssql-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/mssql-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -40,7 +40,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, HEADERS IMAGE, PAYLOAD IMAGE, CHANNEL_COUNT INT, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID))
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, HEADERS IMAGE, PAYLOAD IMAGE, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID))
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL VARBINARY(254), FORMAT_ID INT, GLOBAL_TXID VARBINARY(254), PRIMARY KEY (TRANSACTION_ID))
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME))
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -60,10 +60,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)  
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG WITH (HOLDLOCK, ROWLOCK) WHERE MESSAGE_ID = ?
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
@@ -141,51 +140,101 @@
       <attribute name="ChannelPartitionName">${jboss.partition.name:DefaultPartition}-JMS</attribute>
       -->
       
-      <!-- JGroups stack configuration for the data channel - used when casting messages across the cluster -->
-                  
+      <!-- JGroups stack configuration for the data channel - used for sending data across the cluster -->               
+      
       <attribute name="DataChannelConfig">
          <config>
-            <UDP mcast_recv_buf_size="500000" down_thread="false" ip_mcast="true" mcast_send_buf_size="32000"
-           mcast_port="45567" ucast_recv_buf_size="500000" use_incoming_packet_handler="false"
-           mcast_addr="228.8.8.8" use_outgoing_packet_handler="true" loopback="true" ucast_send_buf_size="32000" ip_ttl="32" />
-            <AUTOCONF down_thread="false" up_thread="false"/>
+            <UDP
+               mcast_addr="228.8.8.8"
+               mcast_port="45567"
+               tos="8"
+               ucast_recv_buf_size="20000000"
+               ucast_send_buf_size="640000"
+               mcast_recv_buf_size="25000000"
+               mcast_send_buf_size="640000"
+               loopback="false"
+               discard_incompatible_packets="true"
+               max_bundle_size="64000"
+               max_bundle_timeout="30"
+               use_incoming_packet_handler="true"
+               use_outgoing_packet_handler="false"
+               ip_ttl="2"
+               down_thread="false" up_thread="false"
+               enable_bundling="false"/>
             <PING timeout="2000" down_thread="false" num_initial_members="3" up_thread="false"/>
-            <MERGE2 max_interval="10000" down_thread="false" min_interval="5000" up_thread="false"/>
+            <MERGE2 max_interval="100000" down_thread="false" min_interval="20000" up_thread="false"/>
             <FD_SOCK down_thread="false" up_thread="false"/>
-            <FD timeout="20000" max_tries="3" down_thread="false" up_thread="false" shun="true"/>
+            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
             <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
-            <pbcast.NAKACK max_xmit_size="8192" down_thread="false" use_mcast_xmit="true" gc_lag="50" up_thread="false"
-                         retransmit_timeout="100,200,600,1200,2400,4800"/>
-            <UNICAST timeout="1200,2400,3600" down_thread="false" up_thread="false"/>
-            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="20000" down_thread="false" max_bytes="0" up_thread="false"/>
-            <FRAG frag_size="8192" down_thread="false" up_thread="false"/>
-            <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" />
-            <pbcast.GMS print_local_addr="true" join_timeout="3000" down_thread="false" join_retry_timeout="2000" up_thread="false" shun="true"/>
+            <pbcast.NAKACK
+               max_xmit_size="60000"
+               use_mcast_xmit="false"
+               gc_lag="0"
+               retransmit_timeout="300,600,1200,2400,4800"
+               down_thread="false" up_thread="false"
+               discard_delivered_msgs="true"/>
+            <UNICAST timeout="300,600,1200,2400,3600"
+                     down_thread="false" up_thread="false"/>
+            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
+                           down_thread="false" up_thread="false"
+                           max_bytes="400000"/>
+            <pbcast.GMS print_local_addr="true" join_timeout="3000" use_flush="true" flush_timeout="3000"
+                        down_thread="false" up_thread="false"
+                        join_retry_timeout="2000" shun="false"
+                        view_bundling="true"
+                        view_ack_collection_timeout="5000"/>
+            <FC max_credits="2000000" down_thread="false" up_thread="false"
+                min_threshold="0.10"/>
+            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>      
          </config>
       </attribute>
       
-      <!-- JGroups stack configuration to use for the control channel - used for bind/unbind requests amongst others -->           
-      
+      <!-- JGroups stack configuration to use for the control channel - used for control messages -->         
+       
       <attribute name="ControlChannelConfig">
          <config>
-            <UDP mcast_recv_buf_size="500000" down_thread="false" ip_mcast="true" mcast_send_buf_size="32000"
-           mcast_port="45568" ucast_recv_buf_size="500000" use_incoming_packet_handler="false"
-           mcast_addr="228.8.8.8" use_outgoing_packet_handler="true" loopback="true" ucast_send_buf_size="32000" ip_ttl="32" />
-            <AUTOCONF down_thread="false" up_thread="false"/>
-            <PING timeout="2000" down_thread="false" num_initial_members="3" up_thread="false"/>
-            <MERGE2 max_interval="10000" down_thread="false" min_interval="5000" up_thread="false"/>
+            <UDP
+                 mcast_addr="228.8.8.8"
+                 mcast_port="45568"
+                 tos="8"
+                 ucast_recv_buf_size="20000000"
+                 ucast_send_buf_size="640000"
+                 mcast_recv_buf_size="25000000"
+                 mcast_send_buf_size="640000"
+                 loopback="false"
+                 discard_incompatible_packets="true"
+                 max_bundle_size="64000"
+                 max_bundle_timeout="30"
+                 use_incoming_packet_handler="true"
+                 use_outgoing_packet_handler="false"
+                 ip_ttl="2"
+                 down_thread="false" up_thread="false"
+                 enable_bundling="false"/>
+            <PING timeout="2000"
+                  down_thread="false" up_thread="false" num_initial_members="3"/>
+            <MERGE2 max_interval="100000"
+                    down_thread="false" up_thread="false" min_interval="20000"/>
             <FD_SOCK down_thread="false" up_thread="false"/>
-            <FD timeout="20000" max_tries="3" down_thread="false" up_thread="false" shun="true"/>
+            <FD timeout="10000" max_tries="5" down_thread="false" up_thread="false" shun="true"/>
             <VERIFY_SUSPECT timeout="1500" down_thread="false" up_thread="false"/>
-            <pbcast.NAKACK max_xmit_size="8192" down_thread="false" use_mcast_xmit="true" gc_lag="50" up_thread="false"
-                         retransmit_timeout="100,200,600,1200,2400,4800"/>
-            <UNICAST timeout="1200,2400,3600" down_thread="false" up_thread="false"/>
-            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="20000" down_thread="false" max_bytes="0" up_thread="false"/>
-            <FRAG frag_size="8192" down_thread="false" up_thread="false"/>
-            <VIEW_SYNC avg_send_interval="60000" down_thread="false" up_thread="false" />
-            <pbcast.GMS print_local_addr="true" join_timeout="3000" down_thread="false" join_retry_timeout="2000" up_thread="false" shun="true"/>
-            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false"/>
-         </config>
+            <pbcast.NAKACK max_xmit_size="60000"
+                           use_mcast_xmit="false" gc_lag="0"
+                           retransmit_timeout="300,600,1200,2400,4800"
+                           down_thread="false" up_thread="false"
+                           discard_delivered_msgs="true"/>
+            <UNICAST timeout="300,600,1200,2400,3600"
+                     down_thread="false" up_thread="false"/>
+            <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
+                           down_thread="false" up_thread="false"
+                           max_bytes="400000"/>
+            <pbcast.GMS print_local_addr="true" join_timeout="3000" use_flush="true" flush_timeout="3000"
+                        down_thread="false" up_thread="false"
+                        join_retry_timeout="2000" shun="false"
+                        view_bundling="true"/>
+            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>
+            <pbcast.STATE_TRANSFER down_thread="false" up_thread="false" use_flush="true" flush_timeout="3000"/>
+            <pbcast.FLUSH down_thread="false" up_thread="false" timeout="20000" auto_flush_conf="false"/>
+        </config>
       </attribute>
    </mbean>
    

Modified: trunk/src/etc/server/default/deploy/mysql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/mysql-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/mysql-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -40,7 +40,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, HEADERS MEDIUMBLOB, PAYLOAD LONGBLOB, CHANNEL_COUNT INTEGER, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID)) ENGINE = INNODB
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, HEADERS MEDIUMBLOB, PAYLOAD LONGBLOB, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID)) ENGINE = INNODB
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL VARBINARY(254), FORMAT_ID INTEGER, GLOBAL_TXID VARBINARY(254), PRIMARY KEY (TRANSACTION_ID)) ENGINE = INNODB
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME)) ENGINE = INNODB
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -60,10 +60,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ? FOR UPDATE
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)
@@ -179,14 +178,14 @@
             <pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
                            down_thread="false" up_thread="false"
                            max_bytes="400000"/>
-            <pbcast.GMS print_local_addr="true" join_timeout="3000" use_flush="true" flush_timeout="3000"
+            <pbcast.GMS print_local_addr="true" join_timeout="3000"
                         down_thread="false" up_thread="false"
                         join_retry_timeout="2000" shun="false"
                         view_bundling="true"
                         view_ack_collection_timeout="5000"/>
             <FC max_credits="2000000" down_thread="false" up_thread="false"
                 min_threshold="0.10"/>
-            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>      
+            <FRAG2 frag_size="60000" down_thread="false" up_thread="false"/>   
          </config>
       </attribute>
       

Modified: trunk/src/etc/server/default/deploy/oracle-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/oracle-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/oracle-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -40,7 +40,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID INTEGER, RELIABLE CHAR(1), EXPIRATION INTEGER, TIMESTAMP INTEGER, PRIORITY INTEGER, HEADERS BLOB, PAYLOAD BLOB, CHANNEL_COUNT INTEGER, TYPE INTEGER, PRIMARY KEY (MESSAGE_ID))
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID INTEGER, RELIABLE CHAR(1), EXPIRATION INTEGER, TIMESTAMP INTEGER, PRIORITY INTEGER, HEADERS BLOB, PAYLOAD BLOB, TYPE INTEGER, PRIMARY KEY (MESSAGE_ID))
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID INTEGER, BRANCH_QUAL RAW(254), FORMAT_ID INTEGER, GLOBAL_TXID RAW(254), PRIMARY KEY (TRANSACTION_ID))
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR2(255), NEXT_ID INTEGER, PRIMARY KEY(NAME))
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -60,10 +60,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)  
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ? FOR UPDATE
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)

Modified: trunk/src/etc/server/default/deploy/postgresql-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/postgresql-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/postgresql-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -40,7 +40,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY SMALLINT, HEADERS BYTEA, PAYLOAD BYTEA, CHANNEL_COUNT INTEGER, TYPE SMALLINT, PRIMARY KEY (MESSAGE_ID))
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY SMALLINT, HEADERS BYTEA, PAYLOAD BYTEA, TYPE SMALLINT, PRIMARY KEY (MESSAGE_ID))
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID BIGINT, BRANCH_QUAL BYTEA, FORMAT_ID INTEGER, GLOBAL_TXID BYTEA, PRIMARY KEY (TRANSACTION_ID))
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID BIGINT, PRIMARY KEY(NAME))
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -60,10 +60,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)   
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ? FOR UPDATE
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)

Modified: trunk/src/etc/server/default/deploy/sybase-persistence-service.xml
===================================================================
--- trunk/src/etc/server/default/deploy/sybase-persistence-service.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/etc/server/default/deploy/sybase-persistence-service.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -45,7 +45,7 @@
    CREATE_IDX_MESSAGE_REF_PAGE_ORD=CREATE INDEX JBM_MSG_REF_PAGE_ORD ON JBM_MSG_REF (PAGE_ORD)
    CREATE_IDX_MESSAGE_REF_MESSAGE_ID=CREATE INDEX JBM_MSG_REF_MESSAGE_ID ON JBM_MSG_REF (MESSAGE_ID)
    CREATE_IDX_MESSAGE_REF_SCHED_DELIVERY=CREATE INDEX JBM_MSG_REF_SCHED_DELIVERY ON JBM_MSG_REF (SCHED_DELIVERY)
-   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID DECIMAL(19, 0), RELIABLE CHAR(1), EXPIRATION DECIMAL(19, 0), TIMESTAMP DECIMAL(19, 0), PRIORITY TINYINT, HEADERS IMAGE NULL, PAYLOAD IMAGE NULL, CHANNEL_COUNT INTEGER, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID))
+   CREATE_MESSAGE=CREATE TABLE JBM_MSG (MESSAGE_ID DECIMAL(19, 0), RELIABLE CHAR(1), EXPIRATION DECIMAL(19, 0), TIMESTAMP DECIMAL(19, 0), PRIORITY TINYINT, HEADERS IMAGE NULL, PAYLOAD IMAGE NULL, TYPE TINYINT, PRIMARY KEY (MESSAGE_ID))
    CREATE_TRANSACTION=CREATE TABLE JBM_TX (NODE_ID INTEGER, TRANSACTION_ID DECIMAL(19, 0), BRANCH_QUAL VARBINARY(254) NULL, FORMAT_ID INTEGER NULL, GLOBAL_TXID VARBINARY(254) NULL, PRIMARY KEY (TRANSACTION_ID))
    CREATE_COUNTER=CREATE TABLE JBM_COUNTER (NAME VARCHAR(255), NEXT_ID DECIMAL(19, 0), PRIMARY KEY(NAME))
    INSERT_MESSAGE_REF=INSERT INTO JBM_MSG_REF (CHANNEL_ID, MESSAGE_ID, TRANSACTION_ID, STATE, ORD, PAGE_ORD, DELIVERY_COUNT, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
@@ -65,10 +65,9 @@
    UPDATE_DELIVERY_COUNT=UPDATE JBM_MSG_REF SET DELIVERY_COUNT = ? WHERE CHANNEL_ID = ? AND MESSAGE_ID = ?
    UPDATE_CHANNEL_ID=UPDATE JBM_MSG_REF SET CHANNEL_ID = ? WHERE CHANNEL_ID = ?
    LOAD_MESSAGES=SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE FROM JBM_MSG
-   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
-   INC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?
-   DEC_CHANNEL_COUNT=UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?
-   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT=0
+   INSERT_MESSAGE=INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
+   DELETE_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=?
+   DELETE_PAGED_MESSAGE=DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)   
    MESSAGE_ID_COLUMN=MESSAGE_ID
    MESSAGE_EXISTS=SELECT MESSAGE_ID FROM JBM_MSG HOLDLOCK WHERE MESSAGE_ID = ?
    INSERT_TRANSACTION=INSERT INTO JBM_TX (NODE_ID, TRANSACTION_ID, BRANCH_QUAL, FORMAT_ID, GLOBAL_TXID) VALUES(?, ?, ?, ?, ?)

Modified: trunk/src/main/org/jboss/jms/server/ServerPeer.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/ServerPeer.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/jms/server/ServerPeer.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1487,7 +1487,20 @@
       {
          return false;
       }
-                  
+      
+      JMSCondition condition = new JMSCondition(isQueue, name);  
+      
+      Collection queues = postOffice.getQueuesForCondition(condition, true);
+      
+      Iterator iter = queues.iterator();
+      
+      while (iter.hasNext())            
+      {
+         Queue queue = (Queue)iter.next();
+         
+         queue.removeAllReferences();
+      }
+                       
       //undeploy the mbean
       if (!undeployDestination(isQueue, name))
       {
@@ -1496,16 +1509,18 @@
             
       //Unbind the destination's queues
       
-      JMSCondition condition = new JMSCondition(isQueue, name);  
+      log.info("Destroying destination " + name);
       
-      Collection queues = postOffice.getQueuesForCondition(condition, true);
-      
-      Iterator iter = queues.iterator();
-      
+      log.info("Got queues " + queues.size());
+
       while (iter.hasNext())            
       {
          Queue queue = (Queue)iter.next();
          
+         log.info("Queue is " + queue);
+         
+         queue.removeAllReferences();
+         
          //Durable subs need to be removed on all nodes
          boolean all = !isQueue && queue.isRecoverable();
          

Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerConnectionEndpoint.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -669,58 +669,46 @@
       // handling is complete. Each channel then takes copies of the reference if they decide to
       // maintain it internally
       
-      MessageReference ref = null; 
+      MessageReference ref = msg.createReference();
       
-      try
-      {         
-         ref = ms.reference(msg);
-         
-         long schedDeliveryTime = msg.getScheduledDeliveryTime();
-         
-         if (schedDeliveryTime > 0)
-         {
-            ref.setScheduledDeliveryTime(schedDeliveryTime);
-         }
-         
-         if (dest.isDirect())
-         {
-         	//Route directly to queue - temp kludge for clustering
-         	
-         	Binding binding = postOffice.getBindingForQueueName(dest.getName());
-         	
-         	if (binding == null)
-         	{
-         		throw new IllegalArgumentException("Cannot find binding for queue " + dest.getName());
-         	}
-         	
-         	Queue queue = binding.queue;
-         	
-         	Delivery del = queue.handle(null, ref, tx);
-         	
-         	if (del == null)
-         	{
-         		throw new JMSException("Failed to route " + ref + " to " + dest.getName());
-         	}
-         }
-         else if (dest.isQueue())
-         {
-            if (!postOffice.route(ref, new JMSCondition(true, dest.getName()), tx))
-            {
-               throw new JMSException("Failed to route " + ref + " to " + dest.getName());
-            }
-         }
-         else
-         {
-            postOffice.route(ref, new JMSCondition(false, dest.getName()), tx);   
-         }
+      long schedDeliveryTime = msg.getScheduledDeliveryTime();
+      
+      if (schedDeliveryTime > 0)
+      {
+         ref.setScheduledDeliveryTime(schedDeliveryTime);
       }
-      finally
+      
+      if (dest.isDirect())
       {
-         if (ref != null)
+      	//Route directly to queue - temp kludge for clustering
+      	
+      	Binding binding = postOffice.getBindingForQueueName(dest.getName());
+      	
+      	if (binding == null)
+      	{
+      		throw new IllegalArgumentException("Cannot find binding for queue " + dest.getName());
+      	}
+      	
+      	Queue queue = binding.queue;
+      	
+      	Delivery del = queue.handle(null, ref, tx);
+      	
+      	if (del == null)
+      	{
+      		throw new JMSException("Failed to route " + ref + " to " + dest.getName());
+      	}
+      }
+      else if (dest.isQueue())
+      {
+         if (!postOffice.route(ref, new JMSCondition(true, dest.getName()), tx))
          {
-            ref.releaseMemoryReference();
+            throw new JMSException("Failed to route " + ref + " to " + dest.getName());
          }
       }
+      else
+      {
+         postOffice.route(ref, new JMSCondition(false, dest.getName()), tx);   
+      }
          
       if (trace) { log.trace("sent " + msg); }
    }

Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1718,12 +1718,13 @@
    {
       Transaction tx = tr.createTransaction();
       
-      MessageReference ref = ms.reference(msg);      
+      MessageReference ref = msg.createReference();
                     
       try
       {               
          if (queue != null)
-         {                                                       
+         {          
+         	msg.setPersistentCount(1);
             queue.handle(null, ref, tx);
             del.acknowledge(tx);
          }
@@ -1741,13 +1742,6 @@
          tx.rollback();
          throw t;
       } 
-      finally
-      {
-         if (ref != null)
-         {
-            ref.releaseMemoryReference();
-         }
-      }
       
       //Need to prompt delivery on the dlq/expiry queue
       

Modified: trunk/src/main/org/jboss/messaging/core/contract/Message.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/contract/Message.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/contract/Message.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -140,20 +140,24 @@
     
    /**
     * 
-    * @return true if the message has already been persisted
+    * @return the type of the message
     */
-   boolean isPersisted();
+   byte getType();   
    
-   /**
-    * Set the message's persisted state to the specified value
-    * @param persisted
+   /*
+    * @return a reference for this message
     */
-   void setPersisted(boolean persisted);
+   MessageReference createReference();
    
-   /**
-    * 
-    * @return the type of the message
-    */
-   byte getType();
+   void setPersistentCount(int count);
    
+   int getPersistentCount();
+   
+   void incrementPersistentCount();
+   
+   void decrementPersistentCount();
+   
+   boolean isPersisted();
+   
+   void setPersisted(boolean persisted);
 }

Modified: trunk/src/main/org/jboss/messaging/core/contract/MessageReference.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/contract/MessageReference.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/contract/MessageReference.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -39,13 +39,11 @@
    long getPagingOrder();
    
    void setPagingOrder(long order);   
+    
+   Message getMessage();
    
-   void releaseMemoryReference();
-   
    MessageReference copy();
    
-   Message getMessage();
-   
    /**
     * 
     * @return The time in the future that delivery will be delayed until, or zero if
@@ -60,5 +58,5 @@
     */
    int getDeliveryCount();
    
-   void setDeliveryCount(int deliveryCount);     
+   void setDeliveryCount(int deliveryCount);        
 }

Modified: trunk/src/main/org/jboss/messaging/core/contract/MessageStore.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/contract/MessageStore.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/contract/MessageStore.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -8,7 +8,9 @@
 
 
 /**
- * An interface to a referencing/dereferencing message store.
+ * When loading a message from storage, references from different channels can reference the same message.
+ * In order to avoid loading the message more than once, loaded or paged references are stored in the message store
+ * 
  *
  * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -18,27 +20,7 @@
  */
 public interface MessageStore extends MessagingComponent
 {
-   /**
-    * Message m is stored in the store if it is not already known to the store, then
-    * a new MessageReference is returned for the Message
-    *
-    * @param m The Message for which to create the MessageReference
-    * @return The new MessageReference
-    */
-   MessageReference reference(Message m);
-   
-   /**
-    * Return a new reference for a message already stored in the store and identified by <messageID>
-    * @param messageID
-    * @return The reference or null if the message is not already stored in the store
-    */
-   MessageReference reference(long messageID);
-
-   /**
-    * Remove a message from the store
-    * 
-    * @param messageID
-    * @return
-    */
-   public boolean forgetMessage(long messageID);   
+	 MessageReference reference(long messageID);
+	 
+	 MessageReference reference(Message message);
 }

Modified: trunk/src/main/org/jboss/messaging/core/contract/PersistenceManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/contract/PersistenceManager.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/contract/PersistenceManager.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -39,6 +39,11 @@
  */
 public interface PersistenceManager extends MessagingComponent
 {
+	void setPaging(long channelID, boolean paging);
+
+	boolean isPaging();
+	
+	
    void addReference(long channelID, MessageReference ref, Transaction tx) throws Exception;
 
    void removeReference(long channelID, MessageReference ref, Transaction tx) throws Exception;

Modified: trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/ChannelSupport.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -75,8 +75,6 @@
 
    protected Distributor distributor;
 
-   protected MessageStore ms;
-
    protected boolean receiversReady;
 
    protected PriorityLinkedList messageRefs;
@@ -106,13 +104,11 @@
     
    // Constructors ---------------------------------------------------------------------------------
 
-   protected ChannelSupport(long channelID, MessageStore ms, PersistenceManager pm,
+   protected ChannelSupport(long channelID, PersistenceManager pm,
                             boolean recoverable, int maxSize)
    {
       if (trace) { log.trace("creating " + (pm != null ? "recoverable " : "non-recoverable ") + "channel[" + channelID + "]"); }
 
-      this.ms = ms;
-
       this.pm = pm;
 
       this.channelID = channelID;
@@ -615,7 +611,7 @@
             {
                // Reliable message in a recoverable state - also add to db
                if (trace) { log.trace(this + " adding " + ref + " to database non-transactionally"); }
-
+               
                // TODO - this db access could safely be done outside the event loop
                pm.addReference(channelID, ref, null);        
             }
@@ -657,8 +653,6 @@
       {
          log.error("Failed to handle message", t);
 
-         ref.releaseMemoryReference();
-
          return null;
       }
 
@@ -694,14 +688,12 @@
    protected void acknowledgeInternal(Delivery d, Transaction tx, boolean persist) throws Exception
    {   
       if (tx == null)
-      {                  
+      {            
          if (persist && recoverable && d.getReference().getMessage().isReliable())
          {
             pm.removeReference(channelID, d.getReference(), null);
          }
               
-         d.getReference().releaseMemoryReference(); 
-         
          if (!d.isRecovered())
          {
          	deliveringCount.decrement();
@@ -878,8 +870,6 @@
 
                if (trace) { log.trace(this + " removing " + del + " after commit"); }
 
-               del.getReference().releaseMemoryReference();
-               
                if (!del.isRecovered())
                {
                	deliveringCount.decrement();
@@ -905,13 +895,7 @@
 
       public void afterRollback(boolean onePhase) throws Exception
       {
-         for(Iterator i = refsToAdd.iterator(); i.hasNext(); )
-         {
-            MessageReference ref = (MessageReference)i.next();
-
-            if (trace) { log.trace(this + " releasing memory " + ref + " after rollback"); }
-            ref.releaseMemoryReference();
-         }
+      	//NOOP
       }
 
       public String toString()

Modified: trunk/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -100,6 +100,9 @@
    private int nodeID;
    
    private boolean nodeIDSet;
+   
+   private Set pagingSet = new HashSet();
+  
       
    // Constructors --------------------------------------------------
     
@@ -177,10 +180,28 @@
    	this.nodeID = nodeID;
    	
    	this.nodeIDSet = true;
-   }
+   }      
    
    // PersistenceManager implementation -------------------------
    
+   public synchronized void setPaging(long channelID, boolean paging)
+   {
+   	Long l = new Long(channelID);
+   	if (paging)
+   	{
+   		pagingSet.add(l);
+   	}
+   	else
+   	{
+   		pagingSet.remove(l);
+   	}
+   }
+   
+   public synchronized boolean isPaging()
+   {
+   	return !pagingSet.isEmpty();
+   }
+   
    // Related to XA Recovery
    // ======================
    
@@ -313,7 +334,7 @@
             ps.setString(1, counterName);
             ps.setLong(2, size);
             
-            int rows = updateWithRetry(ps);
+            int rows = executeWithRetry(ps);
             if (trace) { log.trace(JDBCUtil.statementToString(insertCounterSQL, counterName, new Integer(size)) + " inserted " + rows + " rows"); }
             
             ps.close();            
@@ -335,7 +356,7 @@
          ps.setLong(1, nextId + size);
          ps.setString(2, counterName);
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
          if (trace) { log.trace(JDBCUtil.statementToString(updateCounterSQL, new Long(nextId + size), counterName) + " updated " + rows + " rows"); }
          
          return nextId;
@@ -482,14 +503,13 @@
    // Related to paging functionality
    // ===============================                 
    
-   public void pageReferences(long channelID, List references, boolean paged) throws Exception
+   //Used to page NP messages or P messages in a non recoverable queue
+   public void pageReferences(long channelID, List references, boolean page) throws Exception
    {
       Connection conn = null;
       PreparedStatement psInsertReference = null;  
-      PreparedStatement psInsertMessage = null;
-      PreparedStatement psUpdateMessage = null;
+      PreparedStatement psInsertMessage = null;    
       PreparedStatement psMessageExists = null;
-      ResultSet rsMessageExists = null;
       TransactionWrapper wrap = new TransactionWrapper();
             
       //First we order the references in message order
@@ -503,23 +523,21 @@
          conn = ds.getConnection();
          
          Iterator iter = references.iterator();
-         
-         boolean messageInsertsInBatch = false;
-         boolean messageUpdatesInBatch = false;
-         
+                  
          psInsertReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
          psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));
-         psUpdateMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-
+         
+         boolean added = false;
+         
          while (iter.hasNext())
          {
             //We may need to persist the message itself 
             MessageReference ref = (MessageReference) iter.next();
                                             
             //For non reliable refs we insert the ref (and maybe the message) itself
-                           
+                     
             //Now store the reference
-            addReference(channelID, ref, psInsertReference, paged);
+            addReference(channelID, ref, psInsertReference, page);
                         
             if (usingBatchUpdates)
             {
@@ -527,7 +545,7 @@
             }
             else
             {
-               int rows = updateWithRetry(psInsertReference);
+               int rows = executeWithRetry(psInsertReference);
                
                if (trace)
                {
@@ -537,106 +555,68 @@
             
             //Maybe we need to persist the message itself
             Message m = ref.getMessage();
-            
-            //In a paging situation, we cannot use the persisted flag on the message to determine whether
-            //to insert the message or not.
-            //This is because a channel (possibly on another node) may be paging too and referencing
-            //the same message, and might have removed the message independently, the other
-            //channel will not know about this.
-            //Therefore we have to check if the message is already in the database and insert it if it isn't
-            
-            //TODO This is a bit of a hassle -
-            //A cleaner and better solution here is to completely separate out the paging functionality from the
-            //standard persistence functionality since it complicates things considerably.
-            //We should define a paging store which is separate from the persistence store, and
-            //typically not using the database for the paging store - probably use a file based store
-            //e.g HOWL or some other logger
-            
-            //Note when running this with two or more competing channels in the same process, then
-            //we do not need a FOR UPDATE on the select since we lock the messages in memory
-            //However for competing nodes, we do, therefore we require a database that supports
-            //this, this is another reason why we cannot use HSQL in a clustered environment
-            //since it does not have a for update equivalent
-            
-            boolean added;
-            
-            psMessageExists = conn.prepareStatement(getSQLStatement("MESSAGE_EXISTS"));
-            
-            psMessageExists.setLong(1, m.getMessageID());
-            
-            rsMessageExists = psMessageExists.executeQuery();
-             
-            if (rsMessageExists.next())
-            {
-               //Message exists
-               
-               // Update the message with the new channel count
-               incrementChannelCount(m, psUpdateMessage);
-                  
-               added = false;              
-            }
-            else
-            {
-               //Hasn't been persisted before so need to persist the message
-               storeMessage(m, psInsertMessage);
-               
-               added = true;
+                                     
+            if (!m.isPersisted())
+            {            	               
+            	//The message might actually already exist due to it already being paged
+            	
+            	if (psMessageExists == null)
+            	{
+            		psMessageExists = conn.prepareStatement(getSQLStatement("MESSAGE_EXISTS"));            		            		
+            	}
+            	
+            	psMessageExists.setLong(1, m.getMessageID());
+            	
+            	ResultSet rs = null;
+            	
+            	try
+            	{
+            		rs = psMessageExists.executeQuery();
+            		
+            		if (!rs.next())
+            		{
+            			storeMessage(m, psInsertMessage); 
+            			
+            			added = true;
+            		}
+            	}
+            	finally
+            	{
+            		if (rs != null)
+            		{
+            			rs.close();
+            		}
+            	}  	                               	
             }    
             
-            if (usingBatchUpdates)
+            if (added)
             {
-               if (added)
-               {
-                  psInsertMessage.addBatch();
-                  messageInsertsInBatch = true;
-               }
-               else
-               {
-                  psUpdateMessage.addBatch();
-                  messageUpdatesInBatch = true;
-               }
+	            if (usingBatchUpdates)
+	            {
+	               psInsertMessage.addBatch();	               
+	            }
+	            else
+	            {
+	               int rows = executeWithRetry(psInsertMessage);
+	                                      
+                  if (trace) { log.trace("Inserted " + rows + " rows"); }	               
+	            } 
+	            m.setPersisted(true);
             }
-            else
-            {
-               if (added)
-               {
-                  int rows = updateWithRetry(psInsertMessage);
-                                      
-                  if (trace)
-                  {
-                     log.trace("Inserted " + rows + " rows");
-                  }
-               }
-               else
-               {               
-                  int rows = updateWithRetry(psUpdateMessage);
-                  
-                  if (trace)
-                  {
-                     log.trace("Updated " + rows + " rows");
-                  }
-               }
-            }      
          }         
          
          if (usingBatchUpdates)
          {
-            int[] rowsReference = updateWithRetryBatch(psInsertReference);
+            int[] rowsReference = executeWithRetryBatch(psInsertReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE_REF"), rowsReference, "inserted"); }
             
-            if (messageInsertsInBatch)
+            if (added)
             {
-               int[] rowsMessage = updateWithRetryBatch(psInsertMessage);
+               int[] rowsMessage = executeWithRetryBatch(psInsertMessage);
                
                if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE"), rowsMessage, "inserted"); }
             }
-            if (messageUpdatesInBatch)
-            {
-               int[] rowsMessage = updateWithRetryBatch(psUpdateMessage);
-               
-               if (trace) { logBatchUpdate(getSQLStatement("INC_CHANNEL_COUNT"), rowsMessage, "updated"); }
-            }
          }        
       }
       catch (Exception e)
@@ -648,7 +628,7 @@
       {
       	closeStatement(psInsertReference);
       	closeStatement(psInsertMessage);
-      	closeStatement(psUpdateMessage);
+      	closeStatement(psMessageExists);
       	closeConnection(conn);         
          try
          {
@@ -662,6 +642,7 @@
       }      
    }
          
+   //After loading paged refs this is used to remove any NP or P messages in a unrecoverable channel
    public void removeDepagedReferences(long channelID, List references) throws Exception
    {
       if (trace) { log.trace(this + " Removing " + references.size() + " refs from channel " + channelID); }
@@ -669,7 +650,6 @@
       Connection conn = null;
       PreparedStatement psDeleteReference = null;  
       PreparedStatement psDeleteMessage = null;
-      PreparedStatement psUpdateMessage = null;
       TransactionWrapper wrap = new TransactionWrapper();
         
       //We order the references
@@ -685,9 +665,8 @@
          Iterator iter = references.iterator();
          
          psDeleteReference = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE_REF"));
-         psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-         psUpdateMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-
+         psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_PAGED_MESSAGE"));
+         
          while (iter.hasNext())
          {
             MessageReference ref = (MessageReference) iter.next();
@@ -700,7 +679,7 @@
             }
             else
             {
-               int rows = updateWithRetry(psDeleteReference);
+               int rows = executeWithRetry(psDeleteReference);
                
                if (trace) { log.trace("Deleted " + rows + " rows"); }
             }
@@ -709,45 +688,33 @@
                                     
             //Maybe we need to delete the message itself
               
-            //Update the message with the new channel count
-            decrementChannelCount(m, psUpdateMessage);
-            
-
-            //Run the remove message update
-            removeMessage(m, psDeleteMessage);
+            psDeleteMessage.setLong(1, m.getMessageID());
+            psDeleteMessage.setLong(2, m.getMessageID());  
                         
             if (usingBatchUpdates)
             {
-               psUpdateMessage.addBatch();
-               
                psDeleteMessage.addBatch();
             }
             else
             {  
-               int rows = updateWithRetry(psUpdateMessage);
-                                                 
-               if (trace) { log.trace("Updated " + rows + " rows"); }
-               
-               rows = updateWithRetry(psDeleteMessage);
+               int rows = executeWithRetry(psDeleteMessage);
         
                if (trace) { log.trace("Deleted " + rows + " rows"); }
             }  
             
+            ref.getMessage().setPersisted(false);
+            
          }         
          
          if (usingBatchUpdates)
          {
-            int[] rowsReference = updateWithRetryBatch(psDeleteReference);
+            int[] rowsReference = executeWithRetryBatch(psDeleteReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE_REF"), rowsReference, "deleted"); }
+                        
+            rowsReference = executeWithRetryBatch(psDeleteMessage);
             
-            rowsReference = updateWithRetryBatch(psUpdateMessage);
-            
-            if (trace) { logBatchUpdate(getSQLStatement("DEC_CHANNEL_COUNT"), rowsReference, "updated"); }
-            
-            rowsReference = updateWithRetryBatch(psDeleteMessage);
-            
-            if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE"), rowsReference, "deleted"); }
+            if (trace) { logBatchUpdate(getSQLStatement("DELETE_PAGED_MESSAGE"), rowsReference, "deleted"); }
          }              
       }
       catch (Exception e)
@@ -759,7 +726,6 @@
       {
       	closeStatement(psDeleteReference);
       	closeStatement(psDeleteMessage);
-      	closeStatement(psUpdateMessage);
       	closeConnection(conn);         
          try
          {
@@ -773,6 +739,7 @@
       }      
    }
    
+   // After loading paged refs this is used to update P messages to non paged
    public void updateReferencesNotPagedInRange(long channelID, long orderStart, long orderEnd, long num) throws Exception
    {
       if (trace) { log.trace("Updating paaged references for channel " + channelID + " between " + orderStart + " and " + orderEnd); }
@@ -793,7 +760,7 @@
          
          ps.setLong(3, channelID);
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
            
          if (trace) { log.trace(JDBCUtil.statementToString(getSQLStatement("UPDATE_REFS_NOT_PAGED"), new Long(channelID),
                                 new Long(orderStart), new Long(orderEnd)) + " updated " + rows + " rows"); }
@@ -817,7 +784,7 @@
       }
    }
 
-   public void mergeTransactions (long fromChannelID, long toChannelID) throws Exception
+   public void mergeTransactions(long fromChannelID, long toChannelID) throws Exception
    {
       if (trace) { log.trace("Merging transactions from channel " + fromChannelID + " to " + toChannelID); }
 
@@ -979,7 +946,7 @@
             
             ps2.setLong(3, fromChannelID);
             
-            int rows = updateWithRetry(ps2);
+            int rows = executeWithRetry(ps2);
             
             if (trace) { log.trace("Update page ord updated " + rows + " rows"); }
 
@@ -996,7 +963,7 @@
          
          ps.setLong(2, fromChannelID);
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
          
          if (trace) { log.trace("Update channel id updated " + rows + " rows"); }
                            
@@ -1055,7 +1022,7 @@
             }
             else
             {
-               int rows = updateWithRetry(psUpdateReference);
+               int rows = executeWithRetry(psUpdateReference);
                
                if (trace) { log.trace("Updated " + rows + " rows"); }
             }
@@ -1063,7 +1030,7 @@
                      
          if (usingBatchUpdates)
          {
-            int[] rowsReference = updateWithRetryBatch(psUpdateReference);
+            int[] rowsReference = executeWithRetryBatch(psUpdateReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("UPDATE_PAGE_ORDER"), rowsReference, "updated"); }
          }
@@ -1281,7 +1248,7 @@
             // Add the reference
             addReference(channelID, ref, psReference, false);
             
-            int rows = updateWithRetry(psReference);      
+            int rows = executeWithRetry(psReference);      
             
             if (trace) { log.trace("Inserted " + rows + " rows"); }
               
@@ -1293,20 +1260,13 @@
                storeMessage(m, psMessage);
                
                m.setPersisted(true);
+                                      
+	            rows = executeWithRetry(psMessage);
+	            
+	            if (trace) { log.trace("Inserted/updated " + rows + " rows"); }     
+	            
+	            log.trace("message Inserted/updated " + rows + " rows");     
             }
-            else
-            {
-               //Update the message's channel count
-               psMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-               
-               incrementChannelCount(m, psMessage);
-            }
-                           
-            rows = updateWithRetry(psMessage);
-            
-            if (trace) { log.trace("Inserted/updated " + rows + " rows"); }     
-            
-            log.trace("message Inserted/updated " + rows + " rows");            
          }
          catch (Exception e)
          {
@@ -1349,7 +1309,7 @@
          
          psReference.setLong(3, ref.getMessage().getMessageID());
          
-         int rows = updateWithRetry(psReference);
+         int rows = executeWithRetry(psReference);
 
          if (trace) { log.trace("Updated " + rows + " rows"); }
       }
@@ -1383,7 +1343,6 @@
          TransactionWrapper wrap = new TransactionWrapper();
          
          PreparedStatement psReference = null;
-         PreparedStatement psUpdate = null;
          PreparedStatement psMessage = null;
          
          Connection conn = ds.getConnection();
@@ -1399,9 +1358,9 @@
             
             //Remove the message reference
             removeReference(channelID, ref, psReference);
+             
+            int rows = executeWithRetry(psReference);
             
-            int rows = updateWithRetry(psReference);
-            
             if (rows != 1)
             {
                log.warn("Failed to remove row for: " + ref);
@@ -1410,25 +1369,34 @@
             
             if (trace) { log.trace("Deleted " + rows + " rows"); }
             
-            //Update the messages channel count
+            ref.getMessage().decrementPersistentCount();
             
-            psUpdate = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-            
-            decrementChannelCount(m, psUpdate);
-            
-            rows = updateWithRetry(psUpdate);
-            
-            if (trace) { log.trace("Updated " + rows + " rows"); } 
-            
-            //Delete the message (if necessary)
-            
-            psMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-            
-            removeMessage(m, psMessage);
+            if (ref.getMessage().getPersistentCount() == 0)
+            {            
+            	if (trace) { log.trace("Last reference so deleting message"); }
+            	
+               //Delete the message (if necessary)
+            	
+            	if (this.isPaging())
+            	{
+            		//There is a possibility there are paged refs holding the message so we need to do a conditional delete
+            		psMessage = conn.prepareStatement(getSQLStatement("DELETE_PAGED_MESSAGE"));
+               	
+	            	psMessage.setLong(1, m.getMessageID());
+	            	
+	            	psMessage.setLong(2, m.getMessageID());
+            	}
+            	else
+            	{	               
+	               psMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
+	                           	
+	            	psMessage.setLong(1, m.getMessageID());
+            	}
                        
-            rows = updateWithRetry(psMessage);
+            	rows = executeWithRetry(psMessage);
             
-            if (trace) { log.trace("Delete " + rows + " rows"); }                           
+            	if (trace) { log.trace("Delete " + rows + " rows"); }
+            }
          }
          catch (Exception e)
          {
@@ -1438,7 +1406,6 @@
          finally
          {
          	closeStatement(psReference);
-         	closeStatement(psUpdate);
          	closeStatement(psMessage);
          	closeConnection(conn);
             try
@@ -1557,8 +1524,6 @@
       Connection conn = null;
       PreparedStatement psReference = null;
       PreparedStatement psInsertMessage = null;
-      PreparedStatement psIncMessage = null;
-      PreparedStatement psDecMessage = null;
       PreparedStatement psDeleteMessage = null;
       TransactionWrapper wrap = new TransactionWrapper();
       
@@ -1572,22 +1537,14 @@
          // First the adds
 
          boolean messageInsertsInBatch = false;
-         boolean messageUpdatesInBatch = false;
          boolean batch = usingBatchUpdates && refsToAdd.size() > 0;
 
-         if (batch)
+         for (Iterator i = refsToAdd.iterator(); i.hasNext(); )
          {
-            psReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
-            psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));
-            psIncMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-         }
-
-         for(Iterator i = refsToAdd.iterator(); i.hasNext(); )
-         {
             ChannelRefPair pair = (ChannelRefPair)i.next();
             MessageReference ref = pair.ref;
                                                 
-            if (!batch)
+            if (batch && psReference == null || !batch)
             {
                psReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
             }
@@ -1601,7 +1558,7 @@
             }
             else
             {
-               int rows = updateWithRetry(psReference);
+               int rows = executeWithRetry(psReference);
                
                if (trace) { log.trace("Inserted " + rows + " rows"); }                              
 
@@ -1611,60 +1568,32 @@
             
             Message m = ref.getMessage();        
             
-            if (!batch)
-            {
-               psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));
-               psIncMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-            }
-
-            boolean added;
             if (!m.isPersisted())
-            {               
+            {   
+               if (batch && psInsertMessage == null || !batch)
+               {
+               	psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));               	
+               }
+            	
                // First time so add message
                storeMessage(m, psInsertMessage);
-               added = true;
                m.setPersisted(true);
-            }
-            else
-            {               
-               // Update message channel count
-               incrementChannelCount(m, psIncMessage);
-               added = false;
-            }
-            
-            if (batch)
-            {
-               if (added)
-               {
+
+	            if (batch)
+	            {
                   psInsertMessage.addBatch();
                   if (trace) { log.trace("Message does not already exist so inserting it"); }
-                  messageInsertsInBatch = true;
-               }
-               else
-               { 
-                  if (trace) { log.trace("Message already exists so updating count"); }
-                  psIncMessage.addBatch();
-                  messageUpdatesInBatch = true;
-               }
-            }
-            else
-            {
-               if (added)
-               {
+                  messageInsertsInBatch = true;	               
+	            }
+	            else
+	            {
                   if (trace) { log.trace("Message does not already exist so inserting it"); }
-                  int rows = updateWithRetry(psInsertMessage);
+                  int rows = executeWithRetry(psInsertMessage);
                   if (trace) { log.trace("Inserted " + rows + " rows"); }
-               }
-               else
-               {
-                  if (trace) { log.trace("Message already exists so updating count"); }
-                  int rows = updateWithRetry(psIncMessage);
-                  if (trace) { log.trace("Updated " + rows + " rows"); }
-               }
-               psInsertMessage.close();
-               psInsertMessage = null;
-               psIncMessage.close();
-               psIncMessage = null;
+	               
+	               psInsertMessage.close();
+	               psInsertMessage = null;
+	            }
             }
          }         
          
@@ -1672,28 +1601,20 @@
          {
             // Process the add batch
 
-            int[] rowsReference = updateWithRetryBatch(psReference);
+            int[] rowsReference = executeWithRetryBatch(psReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE_REF"), rowsReference, "inserted"); }
             
             if (messageInsertsInBatch)
             {
-               int[] rowsMessage = updateWithRetryBatch(psInsertMessage);
+               int[] rowsMessage = executeWithRetryBatch(psInsertMessage);
                if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE"), rowsMessage, "inserted"); }
             }
 
-            if (messageUpdatesInBatch)
-            {
-               int[] rowsMessage = updateWithRetryBatch(psIncMessage);
-               if (trace) { logBatchUpdate(getSQLStatement("INC_CHANNEL_COUNT"), rowsMessage, "updated"); }
-            }
-
             psReference.close();
             psReference = null;
             psInsertMessage.close();
             psInsertMessage = null;
-            psIncMessage.close();
-            psIncMessage = null;
          }
 
          // Now the removes
@@ -1701,20 +1622,16 @@
          psReference = null;
          psDeleteMessage = null;
          batch = usingBatchUpdates && refsToRemove.size() > 0;
-
-         if (batch)
-         {
-            psReference = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE_REF"));
-            psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-            psDecMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-         }
-
          
-         for(Iterator i = refsToRemove.iterator(); i.hasNext(); )
+         boolean messageDeletesInBatch = false;
+         
+         boolean pagng = this.isPaging();
+         
+         for (Iterator i = refsToRemove.iterator(); i.hasNext(); )
          {
             ChannelRefPair pair = (ChannelRefPair)i.next();
             
-            if (!batch)
+            if (batch && psReference == null || !batch)
             {
                psReference = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE_REF"));
             }
@@ -1727,70 +1644,77 @@
             }
             else
             {
-               int rows = updateWithRetry(psReference);
+               int rows = executeWithRetry(psReference);
                if (trace) { log.trace("Deleted " + rows + " rows"); }
                psReference.close();
                psReference = null;
             }
-            
-            if (!batch)
-            {
-               psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-               psDecMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-            }
-
+                 
             Message m = pair.ref.getMessage();
-                                
-            // Update the channel count
             
-            decrementChannelCount(m, psDecMessage);
+            m.decrementPersistentCount();
             
-            // Delete the message (if necessary)
-            
-            removeMessage(m, psDeleteMessage);
-                       
-            if (batch)
-            {
-               psDecMessage.addBatch();
-               psDeleteMessage.addBatch();
+            if (m.getPersistentCount() == 0)
+            {	                        		           
+	            // Delete the message (if necessary)
+	                            
+	            if (batch && psDeleteMessage == null || !batch)
+	            {
+	            	if (pagng)
+	            	{
+	            		//Need to do conditional delete - ref might still exist for message
+	            		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_PAGED_MESSAGE"));
+	            	}
+	            	else
+	            	{
+	            		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
+	            	}	            		            		   	              
+	            }
+	
+	            psDeleteMessage.setLong(1, m.getMessageID());
+	            
+	            if (pagng)
+	            {
+	            	psDeleteMessage.setLong(2, m.getMessageID());
+	            }
+	                       
+	            if (batch)
+	            {
+	               psDeleteMessage.addBatch();
+	               
+	               messageDeletesInBatch = true;
+	            }
+	            else
+	            {
+	               int rows = executeWithRetry(psDeleteMessage);
+	               if (trace) { log.trace("Deleted " + rows + " rows"); }
+	
+	               psDeleteMessage.close();
+	               psDeleteMessage = null;
+	            }
             }
-            else
-            {
-               int rows = updateWithRetry(psDecMessage);
-               if (trace) { log.trace("Updated " + rows + " rows"); }
-               
-               rows = updateWithRetry(psDeleteMessage);
-               if (trace) { log.trace("Deleted " + rows + " rows"); }
-
-               psDeleteMessage.close();
-               psDeleteMessage = null;
-               psDecMessage.close();
-               psDecMessage = null;
-            }
          }
          
          if (batch)
          {
             // Process the remove batch
 
-            int[] rows = updateWithRetryBatch(psReference);
+            int[] rows = executeWithRetryBatch(psReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE_REF"), rows, "deleted"); }
             
-            rows = updateWithRetryBatch(psDecMessage);
-            
-            if (trace) { logBatchUpdate(getSQLStatement("DEC_CHANNEL_COUNT"), rows, "updated"); }
+            if (messageDeletesInBatch)
+            {	            
+	            rows = executeWithRetryBatch(psDeleteMessage);
+	            
+	            if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE"), rows, "deleted"); }
+	            
+	            psDeleteMessage.close();
+	            psDeleteMessage = null;
+            }
 
-            rows = updateWithRetryBatch(psDeleteMessage);
-            
-            if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE"), rows, "deleted"); }
-
             psReference.close();
-            psReference = null;
-            psDeleteMessage.close();
-            psDeleteMessage = null;
-            psDecMessage.close();
-            psDecMessage = null;
+            psReference = null;           
          }
       }
       catch (Exception e)
@@ -1802,8 +1726,6 @@
       {
       	closeStatement(psReference);
       	closeStatement(psInsertMessage);
-      	closeStatement(psIncMessage);
-      	closeStatement(psDecMessage);
       	closeStatement(psDeleteMessage);
       	closeConnection(conn);        
          try
@@ -1822,7 +1744,6 @@
       throws Exception
    {          
       Connection conn = null;
-      PreparedStatement psUpdateMessage = null;
       PreparedStatement psDeleteMessage = null;
       TransactionWrapper wrap = new TransactionWrapper();
       
@@ -1854,71 +1775,65 @@
          
          boolean batch = usingBatchUpdates && refsToRemove.size() > 0;
 
-         if (batch)
-         {
-            psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-            psUpdateMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-         }
-                  
          iter = refsToRemove.iterator();
+         
+         boolean messageDeletesInBatch = false;
+         
+         boolean pagng = this.isPaging();
+         
          while (iter.hasNext())
          {
             ChannelRefPair pair = (ChannelRefPair) iter.next();
             
             MessageReference ref = pair.ref;
             
-            if (!batch)
-            {
-               psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-               psUpdateMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-            }
-            
             Message m = ref.getMessage();
-                                   
-            //We may need to remove the message itself
             
-            //Update the channel count
-            
-            decrementChannelCount(m, psUpdateMessage);
-            
-            //Remove the message (if necessary)
-            
-            removeMessage(m, psDeleteMessage);          
-                           
-            if (batch)
+            m.decrementPersistentCount();
+                  
+            if (m.getPersistentCount() == 0)
             {
-               psUpdateMessage.addBatch();
-                
-               psDeleteMessage.addBatch(); 
+               if (batch && psDeleteMessage == null || !batch)
+               {
+               	if (pagng)
+               	{
+               		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_PAGED_MESSAGE"));
+               	}
+               	else
+               	{
+               		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
+               	}
+               }
+	                                   
+	            psDeleteMessage.setLong(1, m.getMessageID());
+	            
+	            if (pagng)
+	            {
+	            	psDeleteMessage.setLong(2, m.getMessageID());	
+	            }
+
+	            if (batch)
+	            {
+	               psDeleteMessage.addBatch(); 
+	               
+	               messageDeletesInBatch = true;
+	            }
+	            else
+	            {
+	               int rows = executeWithRetry(psDeleteMessage);
+	               
+	               if (trace) { log.trace("Deleted " + rows + " rows"); }
+	               
+	               psDeleteMessage.close();
+	               psDeleteMessage = null;
+	            }
             }
-            else
-            {
-               int rows = updateWithRetry(psUpdateMessage);
-               
-               if (trace) { log.trace("Updated " + rows + " rows"); }
-               
-               rows = updateWithRetry(psDeleteMessage);
-               
-               if (trace) { log.trace("Deleted " + rows + " rows"); }
-               
-               psDeleteMessage.close();
-               psDeleteMessage = null;
-               psUpdateMessage.close();
-               psUpdateMessage = null;
-            }
          }         
          
-         if (batch)
+         if (batch && messageDeletesInBatch)
          {
-            int[] rows = updateWithRetryBatch(psUpdateMessage);
+            int[] rows = executeWithRetryBatch(psDeleteMessage);
             
-            if (trace) { logBatchUpdate(getSQLStatement("DEC_CHANNEL_COUNT"), rows, "updated"); }
-            
-            psUpdateMessage.close();
-            psUpdateMessage = null;
-            
-            rows = updateWithRetryBatch(psDeleteMessage);
-            
             if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE"), rows, "deleted"); }
             
             psDeleteMessage.close();
@@ -1933,7 +1848,6 @@
       finally
       {
       	closeStatement(psDeleteMessage);
-      	closeStatement(psUpdateMessage);
       	closeConnection(conn);        
          try
          {
@@ -1968,7 +1882,6 @@
       
       PreparedStatement psReference = null;
       PreparedStatement psInsertMessage = null;
-      PreparedStatement psUpdateMessage = null;
       Connection conn = null;
       TransactionWrapper wrap = new TransactionWrapper();
       
@@ -1986,22 +1899,14 @@
          }
          
          iter = refsToAdd.iterator();
-         
          boolean batch = usingBatchUpdates && refsToAdd.size() > 1;
          boolean messageInsertsInBatch = false;
-         boolean messageUpdatesInBatch = false;
-         if (batch)
-         {
-            psReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
-            psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));
-            psUpdateMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-         }
 
          while (iter.hasNext())
          {
             ChannelRefPair pair = (ChannelRefPair) iter.next();
             
-            if (!batch)
+            if (batch && psReference == null || !batch)
             {
                psReference = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE_REF"));
             }
@@ -2014,100 +1919,63 @@
             }
             else
             {
-               int rows = updateWithRetry(psReference);
+               int rows = executeWithRetry(psReference);
                
                if (trace) { log.trace("Inserted " + rows + " rows"); }
 
                psReference.close();
                psReference = null;
             }
+                       
+            Message m = pair.ref.getMessage();            
             
-            if (!batch)
-            {
-               psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));
-               psUpdateMessage = conn.prepareStatement(getSQLStatement("INC_CHANNEL_COUNT"));
-            }
-
-            Message m = pair.ref.getMessage();
-                   
-            boolean added;         
-            
             if (!m.isPersisted())
-            {
-               //First time so persist the message
-               storeMessage(m, psInsertMessage);
-               
-               m.setPersisted(true);
-               
-               added = true;
+            {	            	
+	            if (batch && psInsertMessage == null || !batch)
+	            {
+	            	psInsertMessage = conn.prepareStatement(getSQLStatement("INSERT_MESSAGE"));	            	
+	            }
+	
+	            storeMessage(m, psInsertMessage);               
+	            
+	            m.setPersisted(true);
+
+	            if (batch)
+	            {
+	            	psInsertMessage.addBatch();
+	            	
+	            	messageInsertsInBatch = true;
+	            }
+	            else
+	            {
+	            	int rows = executeWithRetry(psInsertMessage);
+
+	            	if (trace) { log.trace("Inserted " + rows + " rows"); }
+
+	            	psInsertMessage.close();
+	            	
+	            	psInsertMessage = null;
+	            }
             }
-            else
-            {
-               //Update message channel count
-               incrementChannelCount(m, psUpdateMessage);
-               
-               added = false;
-            }
-            
-            if (batch)
-            {
-               if (added)
-               {
-                  psInsertMessage.addBatch();
-                  messageInsertsInBatch = true;
-               }
-               else
-               {
-                  psUpdateMessage.addBatch();
-                  messageUpdatesInBatch = true;
-               }
-            }
-            else
-            {
-               if (added)
-               {
-                  int rows = updateWithRetry(psInsertMessage);
-                  
-                  if (trace) { log.trace("Inserted " + rows + " rows"); }
-               }
-               else
-               {
-                  int rows = updateWithRetry(psUpdateMessage);
-                  
-                  if (trace) { log.trace("Updated " + rows + " rows"); }
-               }
-               psInsertMessage.close();
-               psInsertMessage = null;
-               psUpdateMessage.close();
-               psUpdateMessage = null;
-            }
          }         
          
          if (batch)
          {
-            int[] rowsReference = updateWithRetryBatch(psReference);
+            int[] rowsReference = executeWithRetryBatch(psReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE_REF"), rowsReference, "inserted"); }
             
             if (messageInsertsInBatch)
             {
-               int[] rowsMessage = updateWithRetryBatch(psInsertMessage);
+               int[] rowsMessage = executeWithRetryBatch(psInsertMessage);
                
                if (trace) { logBatchUpdate(getSQLStatement("INSERT_MESSAGE"), rowsMessage, "inserted"); }
             }
-            if (messageUpdatesInBatch)
-            {
-               int[] rowsMessage = updateWithRetryBatch(psUpdateMessage);
-               
-               if (trace) { logBatchUpdate(getSQLStatement("INC_CHANNEL_COUNT"), rowsMessage, "updated"); }
-            }
 
             psReference.close();
             psReference = null;
             psInsertMessage.close();
             psInsertMessage = null;
-            psUpdateMessage.close();
-            psUpdateMessage = null;
          }
          
          //Now the removes
@@ -2115,6 +1983,7 @@
          iter = refsToRemove.iterator();
          
          batch = usingBatchUpdates && refsToRemove.size() > 1;
+         
          if (batch)
          {
             psReference = conn.prepareStatement(getSQLStatement("UPDATE_MESSAGE_REF"));
@@ -2137,7 +2006,7 @@
             }
             else
             {
-               int rows = updateWithRetry(psReference);
+               int rows = executeWithRetry(psReference);
                
                if (trace) { log.trace("updated " + rows + " rows"); }
                
@@ -2148,7 +2017,7 @@
          
          if (batch)
          {
-            int[] rows = updateWithRetryBatch(psReference);
+            int[] rows = executeWithRetryBatch(psReference);
             
             if (trace) { logBatchUpdate(getSQLStatement("UPDATE_MESSAGE_REF"), rows, "updated"); }
             
@@ -2165,7 +2034,6 @@
       {
       	closeStatement(psReference);
       	closeStatement(psInsertMessage);
-      	closeStatement(psUpdateMessage);
       	closeConnection(conn);         
          try
          {
@@ -2186,7 +2054,6 @@
       //and update rows marked with - to C
             
       PreparedStatement psDeleteMessage = null;
-      PreparedStatement psUpdateMessage = null;
       Connection conn = null;
       TransactionWrapper wrap = new TransactionWrapper();
       
@@ -2213,73 +2080,67 @@
          iter = refsToAdd.iterator();
          
          boolean batch = usingBatchUpdates && refsToAdd.size() > 1;
-
-         if (batch)
-         {
-            psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-            psUpdateMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-         }
-                                 
+         
+         boolean messageDeletesInBatch = false;
+         
+         boolean pagng = this.isPaging();
+         
          while (iter.hasNext())
          {
             ChannelRefPair pair = (ChannelRefPair) iter.next();
             
-            if (!batch)
-            {
-               psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
-               psUpdateMessage = conn.prepareStatement(getSQLStatement("DEC_CHANNEL_COUNT"));
-            }
+            Message m = pair.ref.getMessage();       
             
-            Message m = pair.ref.getMessage();
-                                         
-            //We may need to remove the message for messages added during the prepare stage
-                        
-            //update the channel count
+            m.decrementPersistentCount();
             
-            decrementChannelCount(m, psUpdateMessage);
-            
-            //remove the message (if necessary)
-            
-            removeMessage(m, psDeleteMessage);
-                                        
-            if (batch)
-            {
-               psUpdateMessage.addBatch();
-               
-               psDeleteMessage.addBatch();
+            if (m.getPersistentCount() == 0)
+            {            	
+	            if (batch && psDeleteMessage == null || !batch)
+	            {	
+	            	if (pagng)
+	            	{
+	            		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_PAGED_MESSAGE"));
+	            	}
+	            	else
+	            	{	            			            	
+	            		psDeleteMessage = conn.prepareStatement(getSQLStatement("DELETE_MESSAGE"));
+	            	}
+	            }
+	            
+	                                     
+	            psDeleteMessage.setLong(1, m.getMessageID());
+	            
+	            if (pagng)
+	            {
+	            	psDeleteMessage.setLong(2, m.getMessageID());
+	            }
+	                        
+	            if (batch)
+	            {
+	               psDeleteMessage.addBatch();
+	               
+	               messageDeletesInBatch = true;
+	            }
+	            else
+	            {
+	               int rows = executeWithRetry(psDeleteMessage);
+	               
+	               if (trace) { log.trace("deleted " + rows + " rows"); }
+	               
+	               psDeleteMessage.close();
+	               psDeleteMessage = null;
+	            } 
             }
-            else
-            {
-               int rows = updateWithRetry(psUpdateMessage);
-               
-               if (trace) { log.trace("updated " + rows + " rows"); }
-               
-               rows = updateWithRetry(psDeleteMessage);
-               
-               if (trace) { log.trace("deleted " + rows + " rows"); }
-               
-               psDeleteMessage.close();
-               psDeleteMessage = null;
-               psUpdateMessage.close();
-               psUpdateMessage = null;
-            }            
          }
          
-         if (batch)
+         if (batch && messageDeletesInBatch)
          {
-            int[] rows = updateWithRetryBatch(psUpdateMessage);
+            int[] rows = executeWithRetryBatch(psDeleteMessage);
             
-            if (trace) { logBatchUpdate(getSQLStatement("DEC_CHANNEL_COUNT"), rows, "updated"); }
-            
-            rows = updateWithRetryBatch(psDeleteMessage);
-            
             if (trace) { logBatchUpdate(getSQLStatement("DELETE_MESSAGE"), rows, "deleted"); }
             
             psDeleteMessage.close();
-            psDeleteMessage = null;
-            
-            psUpdateMessage.close();
-            psUpdateMessage = null;            
+            psDeleteMessage = null;         
          }
       }
       catch (Exception e)
@@ -2289,8 +2150,7 @@
       }
       finally
       {
-      	closeStatement(psDeleteMessage);
-      	closeStatement(psUpdateMessage);      	
+      	closeStatement(psDeleteMessage);    	
       	closeConnection(conn);                
          try
          {
@@ -2342,7 +2202,7 @@
          
          setVarBinaryColumn(5, ps, xid.getGlobalTransactionId());
          
-         rows = updateWithRetry(ps);
+         rows = executeWithRetry(ps);
          
       }
       finally
@@ -2374,7 +2234,7 @@
          
          ps.setLong(2, tx.getId());
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
          
          if (trace)
          {
@@ -2459,7 +2319,7 @@
          
          ps.setLong(1, tx.getId());        
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
          
          if (trace)
          {
@@ -2470,7 +2330,7 @@
          ps = conn.prepareStatement(getSQLStatement("COMMIT_MESSAGE_REF2"));
          ps.setLong(1, tx.getId());         
          
-         rows = updateWithRetry(ps);
+         rows = executeWithRetry(ps);
          
          if (trace)
          {
@@ -2496,7 +2356,7 @@
          
          ps.setLong(1, tx.getId());         
          
-         int rows = updateWithRetry(ps);
+         int rows = executeWithRetry(ps);
          
          if (trace)
          {
@@ -2508,7 +2368,7 @@
          ps = conn.prepareStatement(getSQLStatement("ROLLBACK_MESSAGE_REF2"));
          ps.setLong(1, tx.getId());
          
-         rows = updateWithRetry(ps);
+         rows = executeWithRetry(ps);
          
          if (trace)
          {
@@ -2562,18 +2422,6 @@
       return map;
    }
    
-
-   //TODO - combine these
-   protected void incrementChannelCount(Message m, PreparedStatement ps) throws Exception
-   {
-      ps.setLong(1, m.getMessageID());
-   }
-         
-   protected void decrementChannelCount(Message m, PreparedStatement ps) throws Exception
-   {
-      ps.setLong(1, m.getMessageID());
-   }
-   
    /**
     * Stores the message in the MESSAGE table.
     */
@@ -2609,21 +2457,9 @@
          ps.setNull(7, Types.LONGVARBINARY);
       }
       
-      //The number of channels that hold a reference to the message - initially always 1
-      ps.setInt(8, 1);     
-      
-      ps.setByte(9, m.getType());
+      ps.setByte(8, m.getType());
    }
    
-   /**
-    * Removes the message from the MESSAGE table.
-    */
-   protected void removeMessage(Message message, PreparedStatement ps) throws Exception
-   {
-      // physically delete the row in the database
-      ps.setLong(1, message.getMessageID());      
-   }
-   
    protected void setVarBinaryColumn(int column, PreparedStatement ps, byte[] bytes) throws Exception
    {
       if (usingTrailingByte)
@@ -2782,14 +2618,14 @@
       log.trace("Batch update " + name + ", " + action + " total of " + count + " rows");
    }
    
-   protected int updateWithRetry(PreparedStatement ps) throws Exception
+   protected int executeWithRetry(PreparedStatement ps) throws Exception
    {
-      return updateWithRetry(ps, false)[0];
+      return executeWithRetry(ps, false)[0];
    }
    
-   protected int[] updateWithRetryBatch(PreparedStatement ps) throws Exception
+   protected int[] executeWithRetryBatch(PreparedStatement ps) throws Exception
    {
-      return updateWithRetry(ps, true);
+      return executeWithRetry(ps, true);
    }
    
    //PersistentServiceSupport overrides ----------------------------
@@ -2811,7 +2647,7 @@
       map.put("CREATE_MESSAGE",
               "CREATE TABLE JBM_MSG (MESSAGE_ID BIGINT, RELIABLE CHAR(1), " +
               "EXPIRATION BIGINT, TIMESTAMP BIGINT, PRIORITY TINYINT, HEADERS LONGVARBINARY, " +
-              "PAYLOAD LONGVARBINARY, CHANNEL_COUNT INTEGER, TYPE TINYINT, " +
+              "PAYLOAD LONGVARBINARY, TYPE TINYINT, PAGED CHAR(1) " +
               "PRIMARY KEY (MESSAGE_ID))"); 
       //Transaction
       map.put("CREATE_TRANSACTION",
@@ -2858,15 +2694,14 @@
       //Message
       map.put("LOAD_MESSAGES",
               "SELECT MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, " +
-              "PRIORITY, HEADERS, PAYLOAD, TYPE " +
+              "PRIORITY, HEADERS, PAYLOAD, TYPE, PAGED " +
               "FROM JBM_MSG");
       map.put("INSERT_MESSAGE",
               "INSERT INTO JBM_MSG (MESSAGE_ID, RELIABLE, EXPIRATION, " +
-              "TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, CHANNEL_COUNT, TYPE) " +           
+              "TIMESTAMP, PRIORITY, HEADERS, PAYLOAD, TYPE, PAGED) " +           
               "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" );
-      map.put("INC_CHANNEL_COUNT", "UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT + 1 WHERE MESSAGE_ID=?");
-      map.put("DEC_CHANNEL_COUNT", "UPDATE JBM_MSG SET CHANNEL_COUNT = CHANNEL_COUNT - 1 WHERE MESSAGE_ID=?");
-      map.put("DELETE_MESSAGE", "DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND CHANNEL_COUNT = 0");
+      map.put("DELETE_MESSAGE", "DELETE FROM JBM_MSG WHERE MESSAGE_ID=?");
+      map.put("DELETE_PAGED_MESSAGE", "DELETE FROM JBM_MSG WHERE MESSAGE_ID=? AND NOT EXISTS (SELECT * FROM JBM_MSG_REF WHERE MESSAGE_ID = ?)");
       map.put("MESSAGE_ID_COLUMN", "MESSAGE_ID");
       map.put("MESSAGE_EXISTS", "SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?");
       //Transaction
@@ -2893,7 +2728,7 @@
    
 
    
-   private int[] updateWithRetry(PreparedStatement ps, boolean batch) throws Exception
+   private int[] executeWithRetry(PreparedStatement ps, boolean batch) throws Exception
    {
       final int MAX_TRIES = 25;      
       
@@ -3187,6 +3022,5 @@
          
          return (id1 < id2 ? -1 : (id1 == id2 ? 0 : 1));
       }      
-   }
-   
+   }   
 }

Modified: trunk/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -85,15 +85,19 @@
     */
    protected long nextPagingOrder;
    
+   protected MessageStore ms;
+   
    /**
     * Constructor with default paging params.
     */
    public PagingChannelSupport(long channelID, MessageStore ms, PersistenceManager pm,
                                boolean recoverable, int maxSize)
    {
-      super(channelID, ms, pm, recoverable, maxSize);
+      super(channelID, pm, recoverable, maxSize);
       
       downCache = new ArrayList(downCacheSize);    
+      
+      this.ms = ms;
    }
    
    /**
@@ -103,7 +107,7 @@
                                boolean recoverable, int maxSize,
                                int fullSize, int pageSize, int downCacheSize)
    {
-      super(channelID, ms, pm, recoverable, maxSize);
+      super(channelID, pm, recoverable, maxSize);
       
       if (pageSize >= fullSize)
       {
@@ -129,6 +133,8 @@
       this.pageSize = pageSize;
       
       this.downCacheSize = downCacheSize;
+      
+      this.ms = ms;
    }
     
    // Receiver implementation ----------------------------------------------------------------------
@@ -219,32 +225,14 @@
             throw new IllegalStateException("Cannot unload channel when active");
          }
          
-         //We need to release any message refs so the message is released from the message store if appropriate
-         
-         Iterator iter = messageRefs.iterator();
-         
-         while (iter.hasNext())
-         {
-         	MessageReference ref = (MessageReference)iter.next();
-         	
-         	ref.releaseMemoryReference();
-         }
-         
          messageRefs.clear();
          
-         iter = downCache.iterator();
-         
-         while (iter.hasNext())
-         {
-         	MessageReference ref = (MessageReference)iter.next();
-         	
-         	ref.releaseMemoryReference();
-         }
-         
          downCache.clear();
          
          paging = false;
          
+         pm.setPaging(channelID, false);         
+         
          firstPagingOrder = nextPagingOrder = 0;  
          
          clearAllScheduledDeliveries();
@@ -318,6 +306,8 @@
          if (messageRefs.size() != fullSize)
          {
             paging = false;
+            
+            pm.setPaging(channelID, false);            
          }
       }    
    }
@@ -377,6 +367,8 @@
       {
          paging = false;
          
+         pm.setPaging(channelID, false);
+         
          return false;
       }
    }
@@ -397,6 +389,8 @@
             if (trace) { log.trace(this + " going into paging mode"); }
 
             paging = true;
+            
+            pm.setPaging(channelID, true);            
          }
       }      
    }
@@ -458,7 +452,7 @@
       while (iter.hasNext())
       {
          MessageReference ref = (MessageReference) iter.next();
-           
+         
          if (ref.getMessage().isReliable() && recoverable)
          {
             toUpdate.add(ref);
@@ -473,23 +467,12 @@
       {
          pm.pageReferences(channelID, toAdd, true);
       }
+      
       if (!toUpdate.isEmpty())
       {
          pm.updatePageOrder(channelID, toUpdate);
       }
 
-      // Release in memory refs for the refs we just spilled
-      // Note! This must be done after the db inserts - to ensure message is
-      // still in memory
-      iter = downCache.iterator();
-
-      while (iter.hasNext())
-      {
-         MessageReference ref = (MessageReference) iter.next();
-
-         ref.releaseMemoryReference();
-      }
-
       downCache.clear();         
 
       if (trace) { log.trace(this + " cleared downcache"); }
@@ -505,7 +488,7 @@
          
          nextPagingOrder = ili.getMaxPageOrdering().longValue() + 1;
                            
-         paging = true;
+         paging = true;    
       }
       else
       {
@@ -513,6 +496,8 @@
          
          paging = false;
       }
+            
+      pm.setPaging(channelID, paging);     
       
       Map refMap = processReferences(ili.getRefInfos());
       
@@ -539,6 +524,8 @@
       
       ref.setScheduledDeliveryTime(info.getScheduledDelivery());
       
+      ref.getMessage().incrementPersistentCount();
+      
       //Schedule the delivery if necessary, or just add to the in memory queue
       if (!checkAndSchedule(ref))
       {
@@ -551,9 +538,9 @@
 
    protected Map processReferences(List refInfos) throws Exception
    {
-      Map refMap = new HashMap(refInfos.size());
+      Map<Long, MessageReference> refMap = new HashMap<Long, MessageReference>(refInfos.size());
 
-      List msgIdsToLoad = new ArrayList(refInfos.size());
+      List<Long> msgIdsToLoad = new ArrayList<Long>(refInfos.size());
 
       Iterator iter = refInfos.iterator();
 
@@ -568,12 +555,12 @@
 
          if (ref != null)
          {
-            refMap.put(new Long(msgId), ref);
+            refMap.put(msgId, ref);
          }
          else
          {
             // Add id to list of msg ids to load
-            msgIdsToLoad.add(new Long(msgId));
+            msgIdsToLoad.add(msgId);
          }
       }
 
@@ -598,13 +585,9 @@
          while (iter.hasNext())
          {
             Message m = (Message)iter.next();
-
-            // Message might actually be know to the store since we did the
-            // first check since might have been added by different channel
-            // in intervening period, but this is ok - the store knows to only
-            // return a reference to the pre-existing message
-            MessageReference ref = ms.reference(m);
             
+            MessageReference ref = ms.reference(m);
+
             refMap.put(new Long(m.getMessageID()), ref);
          }
       }

Modified: trunk/src/main/org/jboss/messaging/core/impl/clusterconnection/ClusterConnectionManager.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/clusterconnection/ClusterConnectionManager.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/clusterconnection/ClusterConnectionManager.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -460,6 +460,8 @@
 			
 			Queue localQueue = binding.queue;
 			
+			log.info("local queue is: " + localQueue);
+			
 			if (localQueue.isClustered())
 			{							
 				MessageSucker sucker = new MessageSucker(localQueue, info.connection, localInfo.connection, xa, preserveOrdering);

Modified: trunk/src/main/org/jboss/messaging/core/impl/message/MessageFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/message/MessageFactory.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/message/MessageFactory.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -150,7 +150,7 @@
       }
       
       m.setPersisted(true);
-      
+
       return m;
    }
 

Deleted: trunk/src/main/org/jboss/messaging/core/impl/message/MessageHolder.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/message/MessageHolder.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/message/MessageHolder.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1,83 +0,0 @@
-/*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * 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.impl.message;
-
-import org.jboss.messaging.core.contract.Message;
-
-
-/**
- * 
- * A MessageHolder.
- * 
- * @author <a href="tim.fox at jboss.com">Tim Fox</a>
- * @version <tt>$Revision: 2202 $</tt>
- *
- * $Id: MessageHolder.java 2202 2007-02-08 10:50:26Z timfox $
- */
-class MessageHolder
-{
-   /*
-    * The number of channels *currently in memory* that hold a reference to the message
-    * We need this so we know when to evict the message from the store (when it reaches zero)
-    * Note that we also maintain a persistent channel count on the message itself.
-    * This is the total number of channels whether loaded in memory or not that hold a reference to the
-    * message and is needed to know when it is safe to remove the message from the db
-    */
-   private int inMemoryChannelCount;
-   
-   private Message msg;
-   
-   private SimpleMessageStore ms;
-   
-   public MessageHolder(Message msg, SimpleMessageStore ms)
-   {
-      this.msg = msg;
-      this.ms = ms;
-   }    
-   
-   public synchronized void incrementInMemoryChannelCount()
-   {            
-      inMemoryChannelCount++;
-   }
-   
-   public synchronized void decrementInMemoryChannelCount()
-   {
-      inMemoryChannelCount--;      
-
-      if (inMemoryChannelCount == 0)
-      {
-         // can remove the message from the message store
-         ms.forgetMessage(msg.getMessageID());
-      }
-   }
-   
-   public synchronized int getInMemoryChannelCount()
-   {
-      return inMemoryChannelCount;
-   }
- 
-   public Message getMessage()
-   {
-      return msg;
-   }   
-}

Modified: trunk/src/main/org/jboss/messaging/core/impl/message/MessageSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/message/MessageSupport.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/message/MessageSupport.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -31,6 +31,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.contract.Message;
+import org.jboss.messaging.core.contract.MessageReference;
 import org.jboss.messaging.util.StreamUtils;
 
 /**
@@ -74,9 +75,11 @@
 
 	// Must be hidden from subclasses
 	private byte[] payloadAsByteArray;
+	
+	private transient volatile int persistentCount;
+	
+	private transient volatile boolean persisted;
 
-	private transient boolean persisted;
-
 	// Constructors --------------------------------------------------
 
 	/*
@@ -288,16 +291,6 @@
 		this.payloadAsByteArray = null;
 	}
 
-	public synchronized boolean isPersisted()
-	{
-		return persisted;
-	}
-
-	public synchronized void setPersisted(boolean persisted)
-	{
-		this.persisted = persisted;
-	}
-
 	public boolean isExpired()
 	{
 		if (expiration == 0)
@@ -317,6 +310,41 @@
 		}
 		return false;
 	}
+	
+	public MessageReference createReference()
+	{
+		return new SimpleMessageReference(this);
+	}
+	
+	public int getPersistentCount()
+	{
+		return persistentCount;
+	}
+	
+	public void setPersistentCount(int count)
+	{
+		persistentCount = count;
+	}
+	
+	public void decrementPersistentCount()
+	{
+		persistentCount--;
+	}
+	
+	public void incrementPersistentCount()
+	{
+		persistentCount++;
+	}
+	
+	public boolean isPersisted()
+	{
+		return persisted;
+	}
+	
+	public void setPersisted(boolean persisted)
+	{
+		this.persisted = persisted;
+	}
 
 	// Public --------------------------------------------------------
 

Modified: trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageReference.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageReference.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageReference.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -24,7 +24,6 @@
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.contract.Message;
 import org.jboss.messaging.core.contract.MessageReference;
-import org.jboss.messaging.core.contract.MessageStore;
 
 /**
  * A Simple MessageReference implementation.
@@ -46,18 +45,13 @@
 
    private boolean trace = log.isTraceEnabled();
    
-   protected transient MessageStore ms;
-   
-   private MessageHolder holder;
-   
    private long pagingOrder = -1;
-   
-   private boolean released;
-      
+    
    private int deliveryCount;   
    
    private long scheduledDeliveryTime;
    
+   private Message message;
    
    // Constructors --------------------------------------------------
 
@@ -71,34 +65,26 @@
 
    public SimpleMessageReference(SimpleMessageReference other)
    {
-      this.ms = other.ms;
-      
-      this.holder = other.holder;
-      
       this.pagingOrder = other.pagingOrder;
       
-      this.released = other.released;
-      
       this.deliveryCount = other.deliveryCount;
       
-      this.scheduledDeliveryTime = other.scheduledDeliveryTime;            
+      this.scheduledDeliveryTime = other.scheduledDeliveryTime;       
+      
+      this.message = other.message;
    }
    
-   protected SimpleMessageReference(MessageHolder holder, MessageStore ms)
+   protected SimpleMessageReference(Message message)
    {
-      this.holder = holder;
-      
-      this.ms = ms;
-   }
-
-   // Message implementation ----------------------------------------
-
-   public boolean isReference()
+   	this.message = message;
+   }   
+   
+   // MessageReference implementation -------------------------------
+   
+   public MessageReference copy()
    {
-      return true;
+   	return new SimpleMessageReference(this);
    }
-
-   // MessageReference implementation -------------------------------
    
    public int getDeliveryCount()
    {
@@ -122,29 +108,9 @@
       
    public Message getMessage()
    {
-      return holder.getMessage();
+      return message;
    }         
    
-   public void releaseMemoryReference()
-   {
-      if (released)
-      {
-         //Do nothing -
-         //It's possible releaseMemoryReference can be called more than once on a reference since it's
-         //allowable that acknowledge is called more than once for a delivery and each call will call this
-         //method - so we don't want to throw an exception
-         return;
-      }
-      holder.decrementInMemoryChannelCount();
-      
-      released = true;
-   }
-   
-   public int getInMemoryChannelCount()
-   {
-      return holder.getInMemoryChannelCount();
-   }
-  
    public long getPagingOrder()
    {
       return pagingOrder;
@@ -155,15 +121,6 @@
       this.pagingOrder = order;
    }
    
-   public MessageReference copy()
-   {
-      SimpleMessageReference ref = new SimpleMessageReference(this);
-      
-      ref.holder.incrementInMemoryChannelCount();
-      
-      return ref;
-   }
-   
    // Public --------------------------------------------------------
 
    public String toString()

Modified: trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageStore.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageStore.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/message/SimpleMessageStore.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -21,11 +21,8 @@
   */
 package org.jboss.messaging.core.impl.message;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
+import java.util.WeakHashMap;
 
 import org.jboss.logging.Logger;
 import org.jboss.messaging.core.contract.Message;
@@ -51,103 +48,47 @@
    
    // Attributes ----------------------------------------------------
    
-   private boolean trace = log.isTraceEnabled();
- 
-   // <messageID - MessageHolder>
-   private Map messages;
+   private Map<Long, Message> messages;
 
    // Constructors --------------------------------------------------
 
    public SimpleMessageStore()
    {  
-      messages = new HashMap();
+      messages = new WeakHashMap<Long, Message>();
 
       log.debug(this + " initialized");
    }
 
    // MessageStore implementation ---------------------------
-
-   public Object getInstance()
-   {
-      return this;
-   }
-
-   // TODO If we can assume that the message is not known to the store before
-   // (true when sending messages)
-   // Then we can avoid synchronizing on this and use a ConcurrentHashmap
-   // Which will give us much better concurrency for many threads
-   public MessageReference reference(Message m)
-   {
-      MessageHolder holder;
       
-      synchronized (this)
-      {         
-         holder = (MessageHolder)messages.get(new Long(m.getMessageID()));
-         
-         if (holder == null)
-         {      
-            holder = addMessage(m);
-         }
-      }
-      holder.incrementInMemoryChannelCount();
-      
-      MessageReference ref = new SimpleMessageReference(holder, this);
-      
-      if (trace) { log.trace(this + " generated " + ref + " for " + m); }
-      
-      return ref;
-   }
-
-   public MessageReference reference(long messageID)
+   public synchronized MessageReference reference(Message m)
    {
-      MessageHolder holder;
-      
-      synchronized (this)
-      {
-         holder = (MessageHolder)messages.get(new Long(messageID));         
-      }
-      
-      if (holder == null)
-      {
-         return null;
-      }
-       
-      MessageReference ref = new SimpleMessageReference(holder, this);
-      
-      if (trace) { log.trace(this + " generates " + ref + " for " + messageID); }
-      
-      holder.incrementInMemoryChannelCount();
-      
-      return ref;      
+   	//If already exists, return reference to existing message
+   	
+   	Message message = (Message)messages.get(m.getMessageID());
+   	
+   	if (message == null)
+   	{
+   		messages.put(m.getMessageID(), m);
+   		
+   		message = m;
+   	}
+   	
+   	return message.createReference();
    }
    
-
-   public boolean forgetMessage(long messageID)
+   public synchronized MessageReference reference(long messageID)
    {
-      return messages.remove(new Long(messageID)) != null;
-   }
-   
-   public int size()
-   {
-      return messages.size();
-   }
-   
-   public List messageIds()
-   {
-      return new ArrayList(messages.keySet());
-   }
-   
-   public void dump()
-   {
-   	log.info("*** DUMPING " + this);
-   	Iterator iter = messages.values().iterator();
-   	while (iter.hasNext())
+   	Message message = (Message)messages.get(messageID);
+   	
+   	if (message == null)
    	{
-   		MessageHolder holder = (MessageHolder)iter.next();
-   		
-   		log.info(holder.getMessage() + " count: " + holder.getInMemoryChannelCount());
+   		return null;
    	}
-   	log.info("*** End dump");
+   	else
+   	{
+   		return message.createReference();
+   	}
    }
    
    // MessagingComponent implementation --------------------------------
@@ -173,15 +114,6 @@
 
    // Protected -----------------------------------------------------
    
-   protected MessageHolder addMessage(Message m)
-   {
-      MessageHolder holder = new MessageHolder(m, this);
-      
-      messages.put(new Long(m.getMessageID()), holder);
-      
-      return holder;
-   }
-   
    // Private -------------------------------------------------------
    
    // Inner classes -------------------------------------------------   

Modified: trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/postoffice/MessagingPostOffice.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1154,21 +1154,9 @@
 
       Condition routingKey = conditionFactory.createCondition(routingKeyText);
 
-      MessageReference ref = null;
-      
-      try
-      {
-         ref = ms.reference(message);
+      MessageReference ref = message.createReference();
          
-         routeInternal(ref, routingKey, null, true, queueNames);        
-      }
-      finally
-      {
-         if (ref != null)
-         {
-            ref.releaseMemoryReference();
-         }
-      }
+      routeInternal(ref, routingKey, null, true, queueNames);        
    }
       
    //TODO - these do not belong here
@@ -1614,9 +1602,7 @@
 					   info = (PostOfficeAddressInfo)nodeIDAddressMap.get(masterNodeID);
 					   			   
 					   Address address = info.getDataChannelAddress();
-					   
-					   log.info("Sending the message to node " + masterNodeID + " with address " + address);
-				   	   				   	
+					      	
 					   if (address != null)
 					   {	   
 					   	groupMember.unicastData(request, address);
@@ -2104,6 +2090,14 @@
          		startedTx = true;
          	}
          	
+         	//We set the persistent count to be the same as the localReliableCount
+         	//Note that we MUST set the persistent count before routing to any of the queues
+         	//if we only set it when we actually persist in a channel then we could have the situation where
+         	//a ref arrives in a subscription then gets acknowledged and removed before hitting the next sub
+         	//so we would end up with a churn where the message is getting added and removed multiple times for
+         	//a single route
+         	ref.getMessage().setPersistentCount(localReliableCount);
+         	
          	//Now actually route the ref
          	
          	iter = targets.iterator();

Modified: trunk/src/main/org/jboss/messaging/core/impl/tx/TransactionRepository.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/impl/tx/TransactionRepository.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/src/main/org/jboss/messaging/core/impl/tx/TransactionRepository.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -305,49 +305,40 @@
          
          long channelID = pair.getChannelId();
          
-         MessageReference ref = null;
+         MessageReference ref = messageStore.reference(msg);  
          
-         try
+         ref.getMessage().incrementPersistentCount();
+         
+         ref.getMessage().setPersisted(true);
+
+         Binding binding = postOffice.getBindingForChannelID(channelID);
+         
+         if (binding == null)
          {
-            ref = messageStore.reference(msg);         
+            throw new IllegalStateException("Cannot find binding for channel id " + channelID);
+         }
+         
+         Queue queue = binding.queue;
+                     
+         if (trace) log.trace("Destination for message[ID=" + ref.getMessage().getMessageID() + "] is: " + queue);
 
-            Binding binding = postOffice.getBindingForChannelID(channelID);
-            
-            if (binding == null)
-            {
-               throw new IllegalStateException("Cannot find binding for channel id " + channelID);
-            }
-            
-            Queue queue = binding.queue;
-                        
-            if (trace) log.trace("Destination for message[ID=" + ref.getMessage().getMessageID() + "] is: " + queue);
-   
-            // The actual jmx queue may not have been deployed yet, so we need to activate the core queue if so, 
-            // or the handle will have no effect
-                        
-            boolean deactivate = false;
+         // The actual jmx queue may not have been deployed yet, so we need to activate the core queue if so, 
+         // or the handle will have no effect
+                     
+         boolean deactivate = false;
 
-            if (!queue.isActive())
-            {
-            	queue.activate();
+         if (!queue.isActive())
+         {
+         	queue.activate();
 
-            	deactivate = true;
-            }
+         	deactivate = true;
+         }
 
-            queue.handle(null, ref, tx);
+         queue.handle(null, ref, tx);
 
-            if (deactivate)
-            {
-            	queue.deactivate();
-            }
-         }
-         finally
+         if (deactivate)
          {
-            if (ref != null)
-            {
-               //Need to release reference
-               ref.releaseMemoryReference();
-            }
+         	queue.deactivate();
          }
       }
    }
@@ -375,70 +366,62 @@
          
          MessageReference ref = null;
          
-         try
+         ref = messageStore.reference(msg);    
+         
+         ref.getMessage().incrementPersistentCount();
+         
+         ref.getMessage().setPersisted(true);
+
+         Binding binding = postOffice.getBindingForChannelID(channelID);
+         
+         if (binding == null)
          {
-            ref = messageStore.reference(msg);         
+            throw new IllegalStateException("Cannot find binding for channel id " + channelID);
+         }                       
 
-            Binding binding = postOffice.getBindingForChannelID(channelID);
-            
-            if (binding == null)
-            {
-               throw new IllegalStateException("Cannot find binding for channel id " + channelID);
-            }                       
-   
-            Queue queue = binding.queue;
-            
-            if (trace) log.trace("Destination for message[ID=" + ref.getMessage().getMessageID() + "] is: " + queue);            
-            
-            //Create a new delivery - note that it must have a delivery observer otherwise acknowledge will fail
-            Delivery del = new SimpleDelivery(queue, ref, true, true);
+         Queue queue = binding.queue;
+         
+         if (trace) log.trace("Destination for message[ID=" + ref.getMessage().getMessageID() + "] is: " + queue);            
+         
+         //Create a new delivery - note that it must have a delivery observer otherwise acknowledge will fail
+         Delivery del = new SimpleDelivery(queue, ref, true, true);
 
-            if (trace) log.trace("Acknowledging..");
+         if (trace) log.trace("Acknowledging..");
 
-            try
+         try
+         {
+         	// The actual jmx queue may not have been deployed yet, so we need to the core queue if so, 
+            // or the acknowledge will have no effect
+                        
+            boolean deactivate = false;
+
+            if (!queue.isActive())
             {
-            	// The actual jmx queue may not have been deployed yet, so we need to the core queue if so, 
-               // or the acknowledge will have no effect
-                           
-               boolean deactivate = false;
+            	queue.activate();
 
-               if (!queue.isActive())
-               {
-               	queue.activate();
+            	deactivate = true;
+            }
 
-               	deactivate = true;
-               }
+            del.acknowledge(tx);
 
-               del.acknowledge(tx);
-
-               if (deactivate)
-               {
-               	queue.deactivate();
-               }
-            }
-            catch (Throwable t)
+            if (deactivate)
             {
-               log.error("Failed to acknowledge " + del + " during recovery", t);
+            	queue.deactivate();
             }
-            
-            dels.add(del);            
          }
-         finally
+         catch (Throwable t)
          {
-            if (ref != null)
-            {
-               //Need to release reference
-               ref.releaseMemoryReference();
-            }
+            log.error("Failed to acknowledge " + del + " during recovery", t);
          }
+         
+         dels.add(del);            
       }
       
       if (!dels.isEmpty())
       {
          //Add a callback so these dels get cancelled on rollback
          tx.addCallback(new CancelCallback(dels), this);
-      }
-      
+      }      
    }
    
    // Protected -----------------------------------------------------         

Modified: trunk/tests/build.xml
===================================================================
--- trunk/tests/build.xml	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/build.xml	2007-08-21 15:46:38 UTC (rev 3020)
@@ -340,9 +340,8 @@
                     haltonerror="${junit.batchtest.haltonerror}">
             <formatter type="plain" usefile="${junit.formatter.usefile}"/>
             <fileset dir="${build.tests.classes}">
-
-	       <include name="**/messaging/core/**/${test-mask}.class"/>
-	       <include name="**/messaging/jms/**/${test-mask}.class"/>
+	       <include name="**/messaging/core/**/${test-mask}.class"/> 
+	       <include name="**/jms/**/${test-mask}.class"/>
                <include name="**/messaging/util/**/${test-mask}.class"/>
 
                <exclude name="**/jms/MemLeakTest.class"/>
@@ -546,8 +545,10 @@
    <target name="stress-tests" depends="tests-jar, prepare-testdirs, clear-test-logs">
       <antcall target="invm-stress-tests"/>
       <antcall target="remote-stress-tests"/> <!-- default remoting configuration (bisocket) -->
+
+<!--
       <antcall target="clustering-stress-tests"/>
-
+-->
       <!-- We DO NOT run the test suite using the HTTP transport - it is not sufficiently stable
       <antcall target="remote-stress-tests">
          <param name="test.remoting" value="http"/>
@@ -588,7 +589,7 @@
                     haltonerror="${junit.batchtest.haltonerror}">
             <formatter type="plain" usefile="${junit.formatter.usefile}"/>
             <fileset dir="${build.tests.classes}">
-               <include name="**/jms/stress/TopicStressTest.class"/>
+               <include name="**/jms/stress/*Test.class"/>
             </fileset>
          </batchtest>
       </junit>

Modified: trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/MessagingTestCase.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -324,6 +324,11 @@
          
          boolean exists = rs.next();
          
+         if (exists)
+         {
+         	log.info("Message reference data exists");
+         }
+         
          if (!exists)
          {
             rs.close();
@@ -334,7 +339,12 @@
             
             rs = ps.executeQuery();
            
-            exists = rs.next();
+            exists = rs.next();      
+            
+            if (exists)
+            {
+            	log.info("Message data exists");
+            }
          }
          
          return exists;

Modified: trunk/tests/src/org/jboss/test/messaging/core/JDBCPersistenceManagerTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/JDBCPersistenceManagerTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/JDBCPersistenceManagerTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -139,6 +139,9 @@
          Message m1 = messages[i * 2];
          Message m2 = messages[i * 2 + 1];
          
+         m1.setPersistentCount(2);
+         m2.setPersistentCount(2);
+         
          MessageReference ref1_1 = ms.reference(m1);
          MessageReference ref1_2 = ms.reference(m1);
                 
@@ -204,7 +207,7 @@
          
          msgs = getMessageIds();
          assertNotNull(msgs);
-         assertEquals(1, msgs.size());
+         assertEquals(1, msgs.size()); 
          assertTrue(msgs.contains(new Long(m2.getMessageID())));
          
          pm.removeReference(channel1.getChannelID(), ref2_1, null);
@@ -1301,6 +1304,8 @@
       log.debug("adding references non-transactionally");
 
       // Add first two refs non transactionally
+      ref1.getMessage().incrementPersistentCount();
+      ref2.getMessage().incrementPersistentCount();
       pm.addReference(channel.getChannelID(), ref1, null);
       pm.addReference(channel.getChannelID(), ref2, null);
       
@@ -1320,6 +1325,9 @@
       log.debug("ref1 and ref2 are there");
 
       //Add the next 3 refs transactionally
+      ref3.getMessage().incrementPersistentCount();
+      ref4.getMessage().incrementPersistentCount();
+      ref5.getMessage().incrementPersistentCount();
       pm.addReference(channel.getChannelID(), ref3, tx);
       pm.addReference(channel.getChannelID(), ref4, tx);
       pm.addReference(channel.getChannelID(), ref5, tx);
@@ -1400,6 +1408,8 @@
       MessageReference ref5 = ms.reference(m5);  
 
       //Add first two refs non transactionally
+      ref1.getMessage().incrementPersistentCount();
+      ref2.getMessage().incrementPersistentCount();
       pm.addReference(channel.getChannelID(), ref1, null);
       pm.addReference(channel.getChannelID(), ref2, null);
       
@@ -1419,6 +1429,9 @@
       
       
       //Add the next 3 refs transactionally
+      ref3.getMessage().incrementPersistentCount();
+      ref4.getMessage().incrementPersistentCount();
+      ref5.getMessage().incrementPersistentCount();
       pm.addReference(channel.getChannelID(), ref3, tx);
       pm.addReference(channel.getChannelID(), ref4, tx);
       pm.addReference(channel.getChannelID(), ref5, tx);

Deleted: trunk/tests/src/org/jboss/test/messaging/core/MessageStoreTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/MessageStoreTestBase.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/MessageStoreTestBase.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1,349 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* 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.test.messaging.core;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.jboss.messaging.core.contract.Message;
-import org.jboss.messaging.core.contract.MessageReference;
-import org.jboss.messaging.core.contract.MessageStore;
-import org.jboss.test.messaging.MessagingTestCase;
-import org.jboss.test.messaging.tools.container.ServiceContainer;
-import org.jboss.test.messaging.util.CoreMessageFactory;
-
-
-/**
- * The test strategy is to try as many combination as it makes sense of the following
- * variables:
- * 
- * Note: This test is more or less defunct now since the message store doesn't do much
- * but we'll keep it here anyway
- * 
- * TODO - we should refactor this at some point
- * 
- * 1. The message can be non-reliable or reliable.
- * 2. One or multiple messages can be stored.
- * 3. One or more strong references may be maintain for the same MessageReference.
- * 4. A recoverable message store may be forcibly crashed and tested if it recovers.
- *
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @version <tt>$Revision$</tt>
- *
- * $Id$
- */
-public abstract class MessageStoreTestBase extends MessagingTestCase
-{
-   // Constants -----------------------------------------------------
-
-   public static final int NUMBER_OF_MESSAGES = 100;
-
-   // Static --------------------------------------------------------       
-
-   /**
-    * Makes sure the given reference refers the given message.
-    */
-   public static void assertCorrectReference(MessageReference ref, Message m)
-   {
-      assertEquals(m.getMessageID(), ref.getMessage().getMessageID());
-      assertEquals(m.isReliable(), ref.getMessage().isReliable());
-      assertEquals(m.getExpiration(), ref.getMessage().getExpiration());
-      assertEquals(m.getTimestamp(), ref.getMessage().getTimestamp());
-      assertEquals(m.getPriority(), ref.getMessage().getPriority());
-      assertEquals(0, ref.getDeliveryCount());
-
-      Map messageHeaders = m.getHeaders();
-      Map refHeaders = ref.getMessage().getHeaders();
-      assertEquals(messageHeaders.size(), refHeaders.size());
-
-      for(Iterator i = messageHeaders.keySet().iterator(); i.hasNext(); )
-      {
-         Object header = i.next();
-         Object value = messageHeaders.get(header);
-         assertTrue(refHeaders.containsKey(header));
-         assertEquals(value, refHeaders.get(header));
-      }
-   }
-
-   // Attributes ----------------------------------------------------
-
-   protected ServiceContainer sc;
-   protected MessageStore ms;
-
-   protected Map headers;
-
-   // Constructors --------------------------------------------------
-
-   public MessageStoreTestBase(String name)
-   {
-      super(name);
-   }
-
-   // Public --------------------------------------------------------
-
-   public void setUp() throws Exception
-   {
-      super.setUp();
-
-      sc = new ServiceContainer("all,-remoting,-security");
-      sc.start();
-
-      headers = new HashMap();
-      headers.put("someKey", "someValue");
-   }
-
-   public void tearDown() throws Exception
-   {
-      headers.clear();
-      headers = null;
-      sc.stop();
-      sc = null;
-
-      super.tearDown();
-   }
-
-   ////
-   //// Non-reliable message
-   ////
-
-   //////
-   ////// One message
-   //////
-
-   ////////
-   //////// One strong reference
-   ////////
-
-   public void testMessageStore_1() throws Exception
-   {
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, false, 777l, 888l, (byte)9, headers, "payload");
-
-      // recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-      ref.releaseMemoryReference();
-
-      ref = ms.reference(m.getMessageID());
-      assertNull(ref);
-   }
-
-   ////////
-   //////// Two strong references
-   ////////
-
-   public void testMessageStore_1_1() throws Exception
-   {
-
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, false, 777l, 888l, (byte)9, headers, "payload");
-
-      // recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-
-      MessageReference ref2 = ms.reference(m);
-
-      assertCorrectReference(ref2, m);
-   }
-
-   //////
-   ////// Multiple messages
-   //////
-
-   public void testMessageStore_2() throws Exception
-   {
-      Message[] m = new Message[NUMBER_OF_MESSAGES];
-      MessageReference[] refs = new MessageReference[NUMBER_OF_MESSAGES];
-      for(int i = 0; i < NUMBER_OF_MESSAGES; i++ )
-      {
-         m[i] = CoreMessageFactory.createCoreMessage(i, false, 700 + i, 800 + i,
-                                             (byte)(i % 10), headers, "payload" + i);
-
-         // recoverable store, non-reliable message, one message
-         refs[i] = ms.reference(m[i]);
-         assertCorrectReference(refs[i], m[i]);
-      }
-
-      // get reachable reference
-
-      for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
-      {         
-         assertCorrectReference(refs[i], m[i]);
-         refs[i].releaseMemoryReference();
-      }
-
-      for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
-      {
-         assertNull(ms.reference(m[i].getMessageID()));
-      }
-   }
-
-   ////
-   //// Reliable message
-   ////
-
-   //////
-   ////// One message
-   //////
-
-   ////////
-   //////// One strong reference
-   ////////
-
-   public void testMessageStore_3() throws Exception
-   {
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, true, 777l, 888l, (byte)9, headers, "payload");
-
-      // recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-
-      ref.releaseMemoryReference();
-
-      // there's no strong reference to the unique message reference anymore, so the message store
-      // should be cleaned of everything that pertains to that message
-
-      ref = ms.reference(m.getMessageID());
-      assertNull(ref);
-   }
-
-   ////////
-   //////// Two strong references
-   ////////
-
-   public void testMessageStore_3_1() throws Exception
-   {
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, true, 777l, 888l, (byte)9, headers, "payload");
-
-      // recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-
-      MessageReference ref2 = ms.reference(m);
-
-      assertCorrectReference(ref2, m);
-   }
-
-   //////
-   ////// Multiple messages
-   //////
-
-   public void testMessageStore_4() throws Exception
-   {
-      Message[] m = new Message[NUMBER_OF_MESSAGES];
-      MessageReference[] refs = new MessageReference[NUMBER_OF_MESSAGES];
-      for(int i = 0; i < NUMBER_OF_MESSAGES; i++ )
-      {
-         m[i] = CoreMessageFactory.createCoreMessage(i, true, 700 + i, 800 + i,
-                                             (byte)(i % 10), headers, "payload" + i);
-
-         // recoverable store, non-reliable message, one message
-         refs[i] = ms.reference(m[i]);
-         assertCorrectReference(refs[i], m[i]);
-      }
-
-      // get reachable reference
-
-      for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
-      {         
-         refs[i].releaseMemoryReference();
-      }
-
-      // there are no strong references to the message reference anymore, so the message store
-      // should be cleaned of everything that pertains to those message
-
-      for (int i = 0; i < NUMBER_OF_MESSAGES; i++)
-      {
-         assertNull(ms.reference(m[i].getMessageID()));
-      }
-   }
-   
-   public void testMessageStore_6() throws Exception
-   {
-
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, true, 777l, 888l, (byte)9, headers, "payload");
-
-      // non-recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-      
-      //Create another reference from that reference
-      MessageReference ref2 = ms.reference(m);
-          
-      ref.releaseMemoryReference();
-      
-      MessageReference ref3 = ms.reference(m.getMessageID());
-      assertNotNull(ref3);
-      ref3.releaseMemoryReference();
-      
-      assertCorrectReference(ref3, m);
-      
-      ref2.releaseMemoryReference();
-
-      // there's no strong reference to the unique message reference anymore, so the message store
-      // should be cleaned of everything that pertains to that message
-
-      ref3 = ms.reference(m.getMessageID());
-      assertNull(ref3);
-   }
-   
-   public void testMessageStore_7() throws Exception
-   {
-      Message m = CoreMessageFactory.
-      createCoreMessage(0, true, 777l, 888l, (byte)9, headers, "payload");
-
-      // non-recoverable store, non-reliable message, one message
-      MessageReference ref = ms.reference(m);
-      assertCorrectReference(ref, m);
-      
-      MessageReference ref2 = ms.reference(ref.getMessage().getMessageID());
-      assertNotNull(ref2);      
-      assertCorrectReference(ref2, m);
-      
-      MessageReference ref3 = ms.reference(ref.getMessage().getMessageID());
-      assertNotNull(ref3);      
-      assertCorrectReference(ref3, m);
-      
-      ref.releaseMemoryReference();
-      ref2.releaseMemoryReference();
-      ref3.releaseMemoryReference();
-      
-      MessageReference ref4 = ms.reference(ref.getMessage().getMessageID());
-            
-      assertNull(ref4);                
-   }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-
-}

Deleted: trunk/tests/src/org/jboss/test/messaging/core/SimpleMessageStoreTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/SimpleMessageStoreTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/SimpleMessageStoreTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1,78 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* 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.test.messaging.core;
-
-import org.jboss.logging.Logger;
-import org.jboss.messaging.core.impl.message.SimpleMessageStore;
-
-/**
- * @author <a href="mailto:ovidiu at feodorov.com">Ovidiu Feodorov</a>
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- * @version <tt>$Revision: 731 $</tt>
- *
- * $Id: MessageStoreWithoutPersistenceManagerTest.java 731 2006-03-13 05:26:40Z ovidiu $
- */
-public class SimpleMessageStoreTest extends MessageStoreTestBase
-{
-   // Constants -----------------------------------------------------
-
-   protected Logger log = Logger.getLogger(SimpleMessageStoreTest.class);
-
-   // Static --------------------------------------------------------
-
-   // Attributes ----------------------------------------------------
-
-   // Constructors --------------------------------------------------
-
-   public SimpleMessageStoreTest(String name)
-   {
-      super(name);
-   }
-
-   // Public --------------------------------------------------------
-
-   public void setUp() throws Exception
-   {
-      super.setUp();
-
-      ms = new SimpleMessageStore();
-
-      log.debug("setup done");
-   }
-
-   public void tearDown() throws Exception
-   {
-      ms = null;
-
-      super.tearDown();
-   }
-
-   // Package protected ---------------------------------------------
-
-   // Protected -----------------------------------------------------
-
-   // Private -------------------------------------------------------
-
-   // Inner classes -------------------------------------------------
-
-
-}
\ No newline at end of file

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_2PCTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_2PCTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -84,12 +84,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], tx); 
-         refs1[i].releaseMemoryReference();
-         
+  
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -121,8 +119,6 @@
            
       //Msgs
       
-      assertEquals(50, ms.size());
-      
       List msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
@@ -137,13 +133,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -175,9 +167,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(75, ms.size());
-      
+        
       msgIds = getMessageIds();
       assertEquals(25, msgIds.size());
        
@@ -191,13 +181,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -229,9 +215,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(100, ms.size());
-      
+
       msgIds = getMessageIds();
       assertEquals(50, msgIds.size());
       
@@ -244,14 +228,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], tx); 
-         
-         refs1[i].releaseMemoryReference();
-         
+            
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -284,8 +264,6 @@
                
       //Msgs
       
-      assertEquals(100, ms.size()); 
-        
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
              
@@ -328,8 +306,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_NTTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_NTTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -82,14 +82,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], null); 
-         
-         refs1[i].releaseMemoryReference();
-         
+            
          refs2[i] = ms.reference(msgs[i]);
          
-         queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
+         queue2.handle(null, refs2[i], null);          
       }
       
       //Queue1
@@ -119,8 +115,6 @@
             
       //Msgs
       
-      assertEquals(50, ms.size());
-      
       List msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
@@ -134,13 +128,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -171,13 +161,9 @@
             
       //Msgs
       
-      assertEquals(75, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(25, msgIds.size());
       
-      
-      
       // Add 25 more
       
       for (int i = 75; i < 100; i++)
@@ -188,13 +174,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -225,8 +207,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(50, msgIds.size());
       
@@ -241,13 +221,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -278,8 +254,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
       
@@ -322,8 +296,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_TTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_NP_TTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -85,13 +85,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -121,9 +117,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(50, ms.size());
-      
+       
       List msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
@@ -138,13 +132,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -176,13 +166,10 @@
             
       //Msgs
       
-      assertEquals(75, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(25, msgIds.size());
       
-      
-      
+            
       // Add 25 more
       tx = tr.createTransaction();
       for (int i = 75; i < 100; i++)
@@ -193,13 +180,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -230,9 +213,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(100, ms.size());
-      
+       
       msgIds = getMessageIds();
       assertEquals(50, msgIds.size());
       
@@ -246,14 +227,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], tx); 
-         
-         refs1[i].releaseMemoryReference();
-         
+
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -285,8 +262,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
       
@@ -329,8 +304,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_2PCTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -79,13 +79,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -123,8 +119,6 @@
             
       //Msgs
       
-      assertEquals(50, ms.size());
-      
       List msgIds = getMessageIds();
       assertEquals(50, msgIds.size()); 
       
@@ -138,13 +132,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -183,13 +173,10 @@
             
       //Msgs
       
-      assertEquals(75, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(75, msgIds.size());
       
-      
-      
+            
       // Add 25 more
       tx = createXATx();
       for (int i = 75; i < 100; i++)
@@ -200,13 +187,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -245,8 +228,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
       
@@ -261,13 +242,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -306,8 +283,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(150, msgIds.size());
       
@@ -350,8 +325,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_NTTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -83,13 +83,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -125,8 +121,6 @@
             
       //Msgs
       
-      assertEquals(50, ms.size());
-      
       List msgIds = getMessageIds();
       assertEquals(50, msgIds.size()); 
       
@@ -139,14 +133,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], null); 
-         
-         refs1[i].releaseMemoryReference();
-         
+
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -183,8 +173,6 @@
             
       //Msgs
       
-      assertEquals(75, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(75, msgIds.size());
       
@@ -200,13 +188,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -243,8 +227,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
       
@@ -259,13 +241,9 @@
                 
          queue1.handle(null, refs1[i], null); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], null); 
-         
-         refs2[i].releaseMemoryReference();
       }
       
       //Queue1
@@ -301,9 +279,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(100, ms.size());
-      
+        
       msgIds = getMessageIds();
       assertEquals(150, msgIds.size());
       
@@ -346,8 +322,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/ChannelShare_P_TTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -83,13 +83,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -126,8 +122,6 @@
             
       //Msgs
       
-      assertEquals(50, ms.size());
-      
       List msgIds = getMessageIds();
       assertEquals(50, msgIds.size()); 
       
@@ -141,13 +135,9 @@
                 
          queue1.handle(null, refs1[i], tx); 
          
-         refs1[i].releaseMemoryReference();
-         
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -185,8 +175,6 @@
             
       //Msgs
       
-      assertEquals(75, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(75, msgIds.size());
       
@@ -201,14 +189,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], tx); 
-         
-         refs1[i].releaseMemoryReference();
-         
+
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -246,8 +230,6 @@
             
       //Msgs
       
-      assertEquals(100, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size());
       
@@ -261,14 +243,10 @@
          refs1[i] = ms.reference(msgs[i]);
                 
          queue1.handle(null, refs1[i], tx); 
-         
-         refs1[i].releaseMemoryReference();
-         
+
          refs2[i] = ms.reference(msgs[i]);
          
          queue2.handle(null, refs2[i], tx); 
-         
-         refs2[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -305,9 +283,7 @@
       assertEquals(0, queue2.getDeliveringCount());
             
       //Msgs
-      
-      assertEquals(100, ms.size());
-      
+         
       msgIds = getMessageIds();
       assertEquals(150, msgIds.size());
       
@@ -350,8 +326,6 @@
             
       //Msgs
       
-      assertEquals(0, ms.size());
-      
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/PagingStateTestBase.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -204,8 +204,7 @@
          //Wait for them all to arrive first
          
          synchronized (this)
-         {
-         
+         {         
             while (count < numToConsume)
             {
                wait(10000);

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_2PCTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -81,8 +81,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], tx); 
-         
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -96,9 +94,6 @@
       List msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -119,8 +114,7 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, false, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], tx);
-      refs[99].releaseMemoryReference();
-      
+
       tx.prepare();
       tx.commit();
       
@@ -132,10 +126,7 @@
       //Verify no msgs in storage
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+       
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -157,7 +148,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -171,9 +161,6 @@
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 109 msgs in store
-      assertEquals(109, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -195,7 +182,6 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, false, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], tx);
-      refs[109].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -210,9 +196,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -233,7 +216,6 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, false, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], tx);
-      refs[110].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -247,10 +229,7 @@
       msgIds = getMessageIds();
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
-      
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
+       
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -273,7 +252,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }      
       tx.prepare();
       tx.commit();
@@ -289,9 +267,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 119);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -311,7 +286,6 @@
          Message m = CoreMessageFactory.createCoreMessage(i, true, null);
          MessageReference ref = ms.reference(m);
          queue.handle(null, ref, tx);        
-         ref.releaseMemoryReference();
       }  
       tx.prepare();
       tx.rollback();
@@ -325,7 +299,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);  
-         refs[i].releaseMemoryReference();
       }  
       tx.prepare();
       tx.commit();
@@ -341,9 +314,6 @@
       assertEquals(30, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -367,7 +337,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx); 
-         refs[i].releaseMemoryReference();
       }  
       tx.prepare();
       tx.commit();
@@ -383,9 +352,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -407,7 +373,6 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, false, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], tx);
-      refs[140].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -422,9 +387,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -456,9 +418,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -492,10 +451,7 @@
       msgIds = getMessageIds();
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
-      
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
+
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -526,10 +482,7 @@
       msgIds = getMessageIds();
       assertEquals(21, msgIds.size()); 
       assertSameIds(msgIds, refs, 120, 140);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+ 
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -561,9 +514,6 @@
       assertEquals(1, msgIds.size()); 
       assertSameIds(msgIds, refs, 140, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -593,9 +543,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -624,10 +571,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
+
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -657,9 +601,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -681,7 +622,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -694,10 +634,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
+ 
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -720,7 +657,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -733,10 +669,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
+        
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -758,7 +691,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -774,9 +706,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -807,9 +736,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -839,9 +765,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -871,9 +794,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 231, 240);
       
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -905,9 +825,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -934,9 +851,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
       //Verify 70 refs in queue
       assertEquals(70, queue.memoryRefCount());  
       
@@ -961,9 +875,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_NTTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_NTTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -77,7 +77,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify no refs in storage
@@ -89,9 +88,6 @@
       List msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -110,8 +106,7 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, false, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], null);
-      refs[99].releaseMemoryReference();
-      
+  
       //verify no refs in storage
       
       refIds = getReferenceIdsOrderedByPageOrd(queue.getChannelID());
@@ -121,9 +116,6 @@
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -143,7 +135,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null); 
-         refs[i].releaseMemoryReference();
       }
       
       //verify no refs in storage
@@ -154,10 +145,7 @@
       //Verify no msgs in storage
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
-      
-      //Verify 100 msgs in store
-      assertEquals(109, ms.size());
-      
+          
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -178,8 +166,7 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, false, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], null);
-      refs[109].releaseMemoryReference();
-      
+    
       //verify 10 refs in storage
       
       refIds = getReferenceIdsOrderedByPageOrd(queue.getChannelID());
@@ -191,9 +178,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -213,7 +197,6 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, false, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], null);
-      refs[110].releaseMemoryReference();
       
       //verify 10 refs in storage
       
@@ -226,9 +209,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -250,7 +230,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }      
       
       //verify 20 refs in storage
@@ -264,9 +243,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 119);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -289,7 +265,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }  
       
       //verify 30 refs in storage
@@ -303,9 +278,6 @@
       assertEquals(30, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -328,7 +300,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }  
       
       //verify 40 refs in storage
@@ -342,9 +313,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -365,7 +333,6 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, false, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], null);
-      refs[140].releaseMemoryReference();
       
       //verify 40 refs in storage
       
@@ -378,9 +345,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -412,9 +376,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -449,9 +410,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -485,10 +443,7 @@
       msgIds = getMessageIds();
       assertEquals(21, msgIds.size()); 
       assertSameIds(msgIds, refs, 120, 140);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+        
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -519,10 +474,7 @@
       msgIds = getMessageIds();
       assertEquals(1, msgIds.size()); 
       assertSameIds(msgIds, refs, 140, 140);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -552,9 +504,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -584,9 +533,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -616,9 +562,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -639,7 +582,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify 0 ref in storage
@@ -650,10 +592,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
+   
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -675,7 +614,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify 0 ref in storage
@@ -687,9 +625,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -710,7 +645,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify 20 ref in storage
@@ -723,10 +657,7 @@
       msgIds = getMessageIds();
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+        
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -759,9 +690,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -791,9 +719,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -825,9 +750,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 231, 240);
       
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -859,9 +781,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -890,10 +809,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
+    
       //Verify 0 deliveries
       assertEquals(0, queue.getDeliveringCount());
       
@@ -924,9 +840,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_TTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_NP_TTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -81,7 +81,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], tx); 
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -94,9 +93,6 @@
       List msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -117,8 +113,7 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, false, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], tx);
-      refs[99].releaseMemoryReference();
-      
+
       tx.commit();
       
       //verify no refs in storage
@@ -130,9 +125,6 @@
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -154,7 +146,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx); 
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -166,10 +157,7 @@
       //Verify no msgs in storage
       msgIds = getMessageIds();
       assertTrue(msgIds.isEmpty());
-      
-      //Verify 109 msgs in store
-      assertEquals(109, ms.size());
-      
+
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -191,7 +179,6 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, false, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], tx);
-      refs[109].releaseMemoryReference();
       tx.commit();
       
       //verify 10 refs in storage
@@ -205,9 +192,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -228,7 +212,6 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, false, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], tx);
-      refs[110].releaseMemoryReference();
       tx.commit();
       
       //verify 10 refs in storage
@@ -242,9 +225,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 109);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -267,7 +247,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }      
       tx.commit();
       
@@ -282,9 +261,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 119);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -305,7 +281,6 @@
          Message m = CoreMessageFactory.createCoreMessage(i, true, null);
          MessageReference ref = ms.reference(m);
          queue.handle(null, ref, tx);     
-         ref.releaseMemoryReference();
       }  
       tx.rollback();
    
@@ -318,7 +293,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }  
       tx.commit();
       
@@ -333,9 +307,6 @@
       assertEquals(30, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -348,9 +319,7 @@
       //Verify no deliveries
       assertEquals(0, queue.getDeliveringCount());
             
-      
-      
-      
+                  
       //Send 10 more refs
       
       tx = tr.createTransaction();
@@ -359,7 +328,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);      
-         refs[i].releaseMemoryReference();
       }  
       tx.commit();
       
@@ -374,9 +342,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -398,7 +363,6 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, false, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], tx);
-      refs[140].releaseMemoryReference();
       tx.commit();
       
       //verify 40 refs in storage
@@ -412,9 +376,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -446,9 +407,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -483,9 +441,6 @@
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 100, 139);
       
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -519,9 +474,6 @@
       assertEquals(21, msgIds.size()); 
       assertSameIds(msgIds, refs, 120, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -553,9 +505,6 @@
       assertEquals(1, msgIds.size()); 
       assertSameIds(msgIds, refs, 140, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -585,9 +534,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -616,10 +562,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
+
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -648,10 +591,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-      
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
+  
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -673,7 +613,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -686,9 +625,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -711,7 +647,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -724,9 +659,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
       
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -748,7 +680,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, false, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -763,9 +694,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -796,10 +724,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-  
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
+   
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -829,9 +754,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -863,9 +785,6 @@
       assertEquals(10, msgIds.size()); 
       assertSameIds(msgIds, refs, 231, 240);
       
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -897,9 +816,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 221, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -926,9 +842,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
       //Verify 70 refs in queue
       assertEquals(70, queue.memoryRefCount());  
       
@@ -952,10 +865,7 @@
       //Verify 0 msgs in storage
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
-
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
+  
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_2PCTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -79,7 +79,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -99,9 +98,6 @@
       assertEquals(99, msgIds.size());
       assertSameIds(msgIds, refs, 0, 98);
       
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -121,7 +117,6 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, true, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], tx);
-      refs[99].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -140,9 +135,6 @@
       assertEquals(100, msgIds.size());
       assertSameIds(msgIds, refs, 0, 99);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -164,7 +156,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);  
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -184,9 +175,6 @@
       assertEquals(109, msgIds.size());
       assertSameIds(msgIds, refs, 0, 108);
       
-      //Verify 109 msgs in store
-      assertEquals(109, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -208,7 +196,6 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, true, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], null);
-      refs[109].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -227,10 +214,7 @@
       msgIds = getMessageIds();
       assertEquals(110, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 109);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+       
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -250,7 +234,6 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, true, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], null);
-      refs[110].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -270,9 +253,6 @@
       assertEquals(111, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 110);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -294,7 +274,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);   
-         refs[i].releaseMemoryReference();
       }     
       tx.prepare();
       tx.commit();
@@ -315,9 +294,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 119);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -337,7 +313,6 @@
          Message m = CoreMessageFactory.createCoreMessage(i, true, null);
          MessageReference ref = ms.reference(m);
          queue.handle(null, ref, tx);       
-         ref.releaseMemoryReference();
       }  
       tx.prepare();
       tx.rollback();
@@ -350,7 +325,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }  
       tx.prepare();
       tx.commit();
@@ -371,9 +345,6 @@
       assertEquals(130, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -396,7 +367,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);      
-         refs[i].releaseMemoryReference();
       }  
       tx.prepare();
       tx.commit();
@@ -417,9 +387,7 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -440,7 +408,6 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, true, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], null);
-      refs[140].releaseMemoryReference();
       tx.prepare();
       tx.commit();
       
@@ -460,9 +427,6 @@
       assertEquals(141, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 140);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -498,9 +462,6 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 1, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -540,9 +501,6 @@
       assertEquals(122, msgIds.size()); 
       assertSameIds(msgIds, refs, 19, 140);
       
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -581,9 +539,6 @@
       assertEquals(121, msgIds.size()); 
       assertSameIds(msgIds, refs, 20, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -620,9 +575,6 @@
       assertEquals(101, msgIds.size()); 
       assertSameIds(msgIds, refs, 40, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -657,10 +609,7 @@
       msgIds = getMessageIds();
       assertEquals(100, msgIds.size()); 
       assertSameIds(msgIds, refs, 41, 140); 
-      
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
+
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -696,9 +645,6 @@
       assertEquals(80, msgIds.size()); 
       assertSameIds(msgIds, refs, 61, 140); 
       
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -733,10 +679,7 @@
       msgIds = getMessageIds();
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 140);  
-      
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
+
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -758,7 +701,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -775,10 +717,7 @@
       msgIds = getMessageIds();
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 160);
-      
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
+
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -801,7 +740,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -819,9 +757,6 @@
       assertEquals(60, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 180); 
       
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -843,7 +778,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       tx.prepare();
       tx.commit();
@@ -864,9 +798,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -904,9 +835,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -942,9 +870,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -981,9 +906,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
             
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -1020,9 +942,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -1056,10 +975,7 @@
       msgIds = getMessageIds();
       assertEquals(70, msgIds.size()); 
       assertSameIds(msgIds, refs, 171, 240); 
-
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
+  
       //Verify 70 refs in queue
       assertEquals(70, queue.memoryRefCount());  
       
@@ -1089,9 +1005,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_NTTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -77,7 +77,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify no unloaded refs in storage
@@ -94,10 +93,7 @@
       List msgIds = getMessageIds();
       assertEquals(99, msgIds.size());
       assertSameIds(msgIds, refs, 0, 98);
-      
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
+       
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -116,8 +112,7 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, true, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], null);
-      refs[99].releaseMemoryReference();
-      
+
       //verify no unloaded refs in storage
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -133,9 +128,6 @@
       assertEquals(100, msgIds.size());
       assertSameIds(msgIds, refs, 0, 99);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -156,7 +148,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }
       
       //verify no unloaded refs in storage
@@ -174,9 +165,6 @@
       assertEquals(109, msgIds.size());
       assertSameIds(msgIds, refs, 0, 108);
       
-      //Verify 109 msgs in store
-      assertEquals(109, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -194,8 +182,6 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, true, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], null);           
-      refs[109].releaseMemoryReference();
-      
       //verify 10 unloaded refs in storage
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -212,9 +198,6 @@
       assertEquals(110, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 109);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -234,8 +217,7 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, true, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], null);
-      refs[110].releaseMemoryReference();
-      
+ 
       //verify 10 unloaded refs in storage
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -252,9 +234,6 @@
       assertEquals(111, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 110);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -276,7 +255,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);        
-         refs[i].releaseMemoryReference();
       }      
       
       //verify 20 unloaded refs in storage
@@ -294,10 +272,7 @@
       msgIds = getMessageIds();
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 119);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+       
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -320,7 +295,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
       }  
       
       //verify 30 unloaded refs in storage
@@ -339,9 +313,6 @@
       assertEquals(130, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -364,7 +335,7 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);         
-         refs[i].releaseMemoryReference();
+
       }  
       
       //verify 40 unloaded refs in storage
@@ -383,9 +354,6 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -406,8 +374,7 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, true, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], null);
-      refs[140].releaseMemoryReference();
-      
+
       //verify 40 unloaded refs in storage
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -424,9 +391,6 @@
       assertEquals(141, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 140);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -463,9 +427,6 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 1, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -503,10 +464,7 @@
       msgIds = getMessageIds();
       assertEquals(122, msgIds.size()); 
       assertSameIds(msgIds, refs, 19, 140);
-      
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
+
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -545,9 +503,6 @@
       assertEquals(121, msgIds.size()); 
       assertSameIds(msgIds, refs, 20, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -584,9 +539,6 @@
       assertEquals(101, msgIds.size()); 
       assertSameIds(msgIds, refs, 40, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -622,9 +574,6 @@
       assertEquals(100, msgIds.size()); 
       assertSameIds(msgIds, refs, 41, 140); 
       
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -659,10 +608,7 @@
       msgIds = getMessageIds();
       assertEquals(80, msgIds.size()); 
       assertSameIds(msgIds, refs, 61, 140); 
-      
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
+       
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -697,9 +643,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 140);  
       
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -720,7 +663,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -735,10 +677,7 @@
       msgIds = getMessageIds();
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 160);
-      
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
+          
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -760,7 +699,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       refIds = getPagedReferenceIds(queue.getChannelID());
@@ -776,9 +714,6 @@
       assertEquals(60, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 180); 
       
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -799,7 +734,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], null);
-         refs[i].releaseMemoryReference();
       }
       
       //verify 20 unloaded ref in storage
@@ -818,9 +752,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -858,9 +789,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -896,9 +824,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -935,9 +860,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
             
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -973,10 +895,7 @@
       msgIds = getMessageIds();
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -1011,9 +930,6 @@
       assertEquals(70, msgIds.size()); 
       assertSameIds(msgIds, refs, 171, 240); 
 
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
       //Verify 70 refs in queue
       assertEquals(70, queue.memoryRefCount());  
       
@@ -1043,9 +959,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_P_TTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -79,7 +79,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -98,9 +97,6 @@
       assertEquals(99, msgIds.size());
       assertSameIds(msgIds, refs, 0, 98);
       
-      //Verify 99 msgs in store
-      assertEquals(99, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -120,7 +116,6 @@
       msgs[99] = CoreMessageFactory.createCoreMessage(99, true, null);
       refs[99] = ms.reference(msgs[99]);
       queue.handle(null, refs[99], tx);
-      refs[99].releaseMemoryReference();
       tx.commit();
       
       //verify no unloaded refs in storage
@@ -138,9 +133,6 @@
       assertEquals(100, msgIds.size());
       assertSameIds(msgIds, refs, 0, 99);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -162,7 +154,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -181,9 +172,6 @@
       assertEquals(109, msgIds.size());
       assertSameIds(msgIds, refs, 0, 108);
       
-      //Verify 109 msgs in store
-      assertEquals(109, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -205,7 +193,6 @@
       msgs[109] = CoreMessageFactory.createCoreMessage(109, true, null);
       refs[109] = ms.reference(msgs[109]);
       queue.handle(null, refs[109], tx);
-      refs[109].releaseMemoryReference();
       tx.commit();
       
       //verify 10 unloaded refs in storage
@@ -224,9 +211,6 @@
       assertEquals(110, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 109);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -246,7 +230,6 @@
       msgs[110] = CoreMessageFactory.createCoreMessage(110, true, null);
       refs[110] = ms.reference(msgs[110]);
       queue.handle(null, refs[110], tx);
-      refs[110].releaseMemoryReference();
       tx.commit();
       
       //verify 10 unloaded refs in storage
@@ -265,9 +248,6 @@
       assertEquals(111, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 110);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -289,7 +269,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }      
       tx.commit();
       
@@ -309,9 +288,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 119);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -334,7 +310,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);         
-         refs[i].releaseMemoryReference();
       }  
       tx.commit();
       
@@ -354,9 +329,6 @@
       assertEquals(130, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 129);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -376,7 +348,6 @@
          Message m = CoreMessageFactory.createCoreMessage(i, true, null);
          MessageReference ref = ms.reference(m);
          queue.handle(null, ref, tx);         
-         ref.releaseMemoryReference();
       }  
       tx.rollback();
       
@@ -388,7 +359,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx); 
-         refs[i].releaseMemoryReference();
       }  
       tx.commit();
       
@@ -408,9 +378,6 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 139);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -431,7 +398,6 @@
       msgs[140] = CoreMessageFactory.createCoreMessage(140, true, null);
       refs[140] = ms.reference(msgs[140]);
       queue.handle(null, refs[140], tx);
-      refs[140].releaseMemoryReference();
       tx.commit();
       
       //verify 40 unloaded refs in storage
@@ -450,9 +416,6 @@
       assertEquals(141, msgIds.size()); 
       assertSameIds(msgIds, refs, 0, 140);
       
-      //Verify 101 msgs in store
-      assertEquals(101, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -488,9 +451,6 @@
       assertEquals(140, msgIds.size()); 
       assertSameIds(msgIds, refs, 1, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 99 refs in queue
       assertEquals(99, queue.memoryRefCount());
       
@@ -530,9 +490,6 @@
       assertEquals(122, msgIds.size()); 
       assertSameIds(msgIds, refs, 19, 140);
       
-      //Verify 82 msgs in store
-      assertEquals(82, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(81, queue.memoryRefCount());
       
@@ -570,10 +527,7 @@
       msgIds = getMessageIds();
       assertEquals(121, msgIds.size()); 
       assertSameIds(msgIds, refs, 20, 140);
-      
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
+         
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -610,9 +564,6 @@
       assertEquals(101, msgIds.size()); 
       assertSameIds(msgIds, refs, 40, 140);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -648,9 +599,6 @@
       assertEquals(100, msgIds.size()); 
       assertSameIds(msgIds, refs, 41, 140); 
       
-      //Verify 81 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 81 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -686,9 +634,6 @@
       assertEquals(80, msgIds.size()); 
       assertSameIds(msgIds, refs, 61, 140); 
       
-      //Verify 80 msgs in store
-      assertEquals(80, ms.size());
-      
       //Verify 80 refs in queue
       assertEquals(80, queue.memoryRefCount());
       
@@ -724,9 +669,6 @@
       assertEquals(20, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 140);  
       
-      //Verify 20 msgs in store
-      assertEquals(20, ms.size());
-      
       //Verify 20 refs in queue
       assertEquals(20, queue.memoryRefCount());
       
@@ -748,7 +690,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -764,10 +705,7 @@
       msgIds = getMessageIds();
       assertEquals(40, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 160);
-      
-      //Verify 40 msgs in store
-      assertEquals(40, ms.size());
-      
+        
       //Verify 40 refs in queue
       assertEquals(40, queue.memoryRefCount());
       
@@ -790,7 +728,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -807,9 +744,6 @@
       assertEquals(60, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 180); 
       
-      //Verify 60 msgs in store
-      assertEquals(60, ms.size());
-      
       //Verify 60 refs in queue
       assertEquals(60, queue.memoryRefCount());
       
@@ -831,7 +765,6 @@
          msgs[i] = CoreMessageFactory.createCoreMessage(i, true, null);
          refs[i] = ms.reference(msgs[i]);
          queue.handle(null, refs[i], tx);
-         refs[i].releaseMemoryReference();
       }
       tx.commit();
       
@@ -851,9 +784,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -891,9 +821,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -929,9 +856,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
   
-      //Verify 120 msgs in store
-      assertEquals(120, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -968,9 +892,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);      
             
-      //Verify 110 msgs in store
-      assertEquals(110, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -1007,9 +928,6 @@
       assertEquals(120, msgIds.size()); 
       assertSameIds(msgIds, refs, 121, 240);
       
-      //Verify 100 msgs in store
-      assertEquals(100, ms.size());
-      
       //Verify 100 refs in queue
       assertEquals(100, queue.memoryRefCount());
       
@@ -1044,9 +962,6 @@
       assertEquals(70, msgIds.size()); 
       assertSameIds(msgIds, refs, 171, 240); 
 
-      //Verify 70 msgs in store
-      assertEquals(70, ms.size());
-      
       //Verify 70 refs in queue
       assertEquals(70, queue.memoryRefCount());  
       
@@ -1076,9 +991,6 @@
       msgIds = getMessageIds();
       assertEquals(0, msgIds.size()); 
 
-      //Verify 0 msgs in store
-      assertEquals(0, ms.size());
-      
       //Verify 0 refs in queue
       assertEquals(0, queue.memoryRefCount());
       

Modified: trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/core/paging/SingleChannel_ReloadTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -80,8 +80,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
       
       //Send 50 p messages
@@ -92,8 +90,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
 
       List refIds = getReferenceIdsOrderedByPageOrd(queue.getChannelID());
@@ -179,8 +175,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
       
       //Send 50 p messages
@@ -191,8 +185,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
 
       List refIds = getReferenceIdsOrderedByPageOrd(queue.getChannelID());
@@ -272,8 +264,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
       
       //Send 50 p messages
@@ -284,8 +274,6 @@
          refs[i] = ms.reference(msgs[i]);
                 
          queue.handle(null, refs[i], null); 
-         
-         refs[i].releaseMemoryReference();
       }
 
       List refIds = getReferenceIdsOrderedByPageOrd(queue.getChannelID());

Modified: trunk/tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -121,6 +121,8 @@
 	      TextMessage tm = (TextMessage)durable.receive(1000);
 	      assertEquals("k", tm.getText());
 	
+	      log.info("*** consuming");
+	      
 	      Message m = durable.receive(1000);
 	      assertNull(m);
 	      

Modified: trunk/tests/src/org/jboss/test/messaging/jms/JMSTestCase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/JMSTestCase.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/JMSTestCase.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -109,19 +109,11 @@
 		//A few sanity checks
 		
 		if (ServerManagement.isStarted(0))
-		{
-			if (!ServerManagement.isRemote())
-			{		
-				SimpleMessageStore ms = (SimpleMessageStore)ServerManagement.getMessageStore();  
-				
-				if (ms.messageIds().size() != 0)
-				{
-					ms.dump();
-					fail("There are messages in the message store");
-				}
+		{			
+			if (checkNoMessageData())
+			{
+				fail("Message Data exists");
 			}
-			
-			checkNoMessageData();
 		}
 		
 		//This will tell us if any connections have been left open

Modified: trunk/tests/src/org/jboss/test/messaging/jms/MessageCleanupTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/MessageCleanupTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/MessageCleanupTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -87,9 +87,7 @@
       if (ServerManagement.isRemote()) return;
       
       SimpleMessageStore ms = (SimpleMessageStore)ServerManagement.getMessageStore();      
-      
-      assertEquals(0, ms.messageIds().size());      
-      
+        
       Connection conn = cf.createConnection();
       
       Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
@@ -104,9 +102,7 @@
       {
          prod.send(sess.createMessage());
       }
-      
-      assertEquals(100, ms.messageIds().size());
-      
+        
       //50 Should be paged onto disk
       
       assertEquals(50, getReferenceIds().size());
@@ -117,8 +113,6 @@
       
       cons.close();
       
-      assertEquals(0, ms.messageIds().size());
-      
       assertEquals(0, getReferenceIds().size());
       
       assertEquals(0, getMessageIds().size());
@@ -151,8 +145,6 @@
       
       SimpleMessageStore ms = (SimpleMessageStore)ServerManagement.getMessageStore();
       
-      assertEquals(100, ms.messageIds().size());
-      
       assertEquals(100, getReferenceIds().size());
       
       assertEquals(50, getMessageIds().size());
@@ -161,17 +153,13 @@
       
       cons1.close();
       cons2.close();
-      
-      assertEquals(100, ms.messageIds().size());
-      
+       
       assertEquals(50, getReferenceIds().size());
       
       assertEquals(50, getMessageIds().size());
       
       sess.unsubscribe("sub1");
-      
-      assertEquals(0, ms.messageIds().size());
-      
+        
       assertEquals(0, getReferenceIds().size());
       
       assertEquals(0, getMessageIds().size());
@@ -215,8 +203,6 @@
       
       SimpleMessageStore ms = (SimpleMessageStore)ServerManagement.getMessageStore();
       
-      assertEquals(100, ms.messageIds().size());
-      
       assertEquals(50, getReferenceIds().size());
       
       assertEquals(50, getMessageIds().size());
@@ -225,8 +211,6 @@
       
       conn.close();
       
-      assertEquals(0, ms.messageIds().size());
-      
       assertEquals(0, getReferenceIds().size());
       
       assertEquals(0, getMessageIds().size());
@@ -269,9 +253,7 @@
       }
       
       SimpleMessageStore ms = (SimpleMessageStore)ServerManagement.getMessageStore();
-      
-      assertEquals(100, ms.messageIds().size());
-      
+
       assertEquals(100, getReferenceIds().size());
       
       assertEquals(50, getMessageIds().size());
@@ -279,9 +261,7 @@
       //Now we close the connection
       
       conn.close();
-      
-      assertEquals(0, ms.messageIds().size());
-      
+        
       assertEquals(0, getReferenceIds().size());
       
       assertEquals(0, getMessageIds().size());

Deleted: trunk/tests/src/org/jboss/test/messaging/jms/ReferencingTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/ReferencingTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/ReferencingTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -1,394 +0,0 @@
-/*
-  * JBoss, Home of Professional Open Source
-  * Copyright 2005, JBoss Inc., and individual contributors as indicated
-  * 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.test.messaging.jms;
-
-import javax.jms.Connection;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
-import org.jboss.jms.message.MessageProxy;
-import org.jboss.messaging.core.contract.MessageReference;
-import org.jboss.messaging.core.contract.MessageStore;
-import org.jboss.messaging.core.impl.message.SimpleMessageReference;
-import org.jboss.test.messaging.tools.ServerManagement;
-
-/**
- * 
- * A ReferencingTest.
- * 
- * @author <a href="tim.fox at jboss.com">Tim Fox</a>
- * @version $Revision$
- *
- * $Id$
- */
-public class ReferencingTest extends JMSTestCase
-{
-   // Constants -----------------------------------------------------
-
-   // Static --------------------------------------------------------
-   
-   // Attributes ----------------------------------------------------
-
-   // Constructors --------------------------------------------------
-
-   public ReferencingTest(String name)
-   {
-      super(name);
-   }
-
-   // Public --------------------------------------------------------
-   
-   public void testAutoAck1() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-  
-      TextMessage m2 = (TextMessage)cons.receive();
-       
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testAutoAck2() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-                  
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      
-      assertNotNull(m2);
-      
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testClientAck1() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-          
-      m2.acknowledge();
-      
-      ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testClientAck2() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-                  
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-      
-      m2.acknowledge();
-      
-      ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testRedelivery() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-                  
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-      
-      sess.recover();
-      
-      TextMessage m3 = (TextMessage)cons.receive();
-      
-      assertNotNull(m3);
-      assertEquals(m.getText(), m3.getText());
-      
-      ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-            
-      m2.acknowledge();
-      
-      ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testTransactionCommit() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(true, Session.SESSION_TRANSACTED);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-                        
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      sess.commit();
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      SimpleMessageReference ref = (SimpleMessageReference)store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertEquals(2, ref.getInMemoryChannelCount());
-      
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-      
-      sess.commit();
-      
-      ref = (SimpleMessageReference)store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void testTransactionRollback() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(true, Session.SESSION_TRANSACTED);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-                        
-      conn.start();
-      
-      TextMessage m = sess.createTextMessage("wibble");
-      
-      prod.send(m);
-      sess.commit();
-      
-      TextMessage m2 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m2);
-      assertEquals(m.getText(), m2.getText());
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-      
-      sess.rollback();
-      
-      TextMessage m3 = (TextMessage)cons.receive();
-      
-      assertNotNull(m3);
-      assertEquals(m.getText(), m3.getText());
-      
-      ref = store.reference(((MessageProxy)m3).getMessage().getMessageID());
-      assertEquals(((MessageProxy)m).getMessage().getMessageID(), ref.getMessage().getMessageID());
-      
-      ref.releaseMemoryReference();
-      
-      sess.commit();
-      
-      ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-   public void cancelTest() throws Exception
-   {
-      MessageStore store = ServerManagement.getMessageStore();
-      
-      Connection conn = cf.createConnection();
-      
-      Session sess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
-      
-      MessageProducer prod = sess.createProducer(queue1);
-      
-      MessageConsumer cons = sess.createConsumer(queue1);
-      
-      conn.start();
-      
-      TextMessage m1 = sess.createTextMessage("wibble");
-      TextMessage m2 = sess.createTextMessage("wibble");
-      
-      prod.send(m1);
-      prod.send(m2);
-      
-      TextMessage m3 = (TextMessage)cons.receive(1000);
-      
-      assertNotNull(m3);
-      assertEquals(m1.getText(), m3.getText());
-      
-      TextMessage m4 = (TextMessage)cons.receive();
-      
-      assertNotNull(m4);
-      assertEquals(m1.getText(), m4.getText());
-      
-      sess.recover();
-      
-      TextMessage m5 = (TextMessage)cons.receive();
-      
-      assertNotNull(m5);
-      assertEquals(m1.getText(), m5.getText());
-      
-      TextMessage m6 = (TextMessage)cons.receive();
-      
-      assertNotNull(m6);
-      assertEquals(m1.getText(), m6.getText()); 
-      
-      m6.acknowledge();
-      
-      MessageReference ref = store.reference(((MessageProxy)m2).getMessage().getMessageID());
-      
-      assertNull(ref);
-      
-      conn.close();
-   }
-   
-      
-}
-
-

Modified: trunk/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -718,6 +718,8 @@
 
          ServerManagement.startServerPeer();
          
+         log.info("Restarted the server");
+         
          deployAndLookupAdministeredObjects();
                   
          conn3 = cf.createXAConnection();

Modified: trunk/tests/src/org/jboss/test/messaging/jms/server/destination/QueueManagementTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/server/destination/QueueManagementTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/server/destination/QueueManagementTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -271,6 +271,8 @@
          }
          
          conn.close();
+         
+         ServerManagement.invoke(destObjectName, "removeAllMessages", new Object[0], new String[0]);
       }
       finally
       {
@@ -811,12 +813,14 @@
       assertNotNull(html);
       
       assertTrue(html.indexOf("QueueMessageCounter") != -1);
+      
+      ServerManagement.invoke(destObjectName, "removeAllMessages", new Object[0], new String[0]);
                   
       ServerManagement.undeployQueue("QueueMessageCounter");
       
       ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), "disableMessageCounters", null, null);
       
-      conn.close();
+      conn.close();            
    }
    
    public void testConsumersCount() throws Exception

Modified: trunk/tests/src/org/jboss/test/messaging/jms/server/destination/TopicManagementTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/server/destination/TopicManagementTest.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/server/destination/TopicManagementTest.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -484,9 +484,9 @@
          TopicSession s = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
 
          // Create 2 durable subscription and 2 non-durable subscription
-         s.createDurableSubscriber(topic, "SubscriberA");
+         MessageConsumer cons1 = s.createDurableSubscriber(topic, "SubscriberA");
          
-         s.createDurableSubscriber(topic, "SubscriberB", "wibble is null", false);
+         MessageConsumer cons2 = s.createDurableSubscriber(topic, "SubscriberB", "wibble is null", false);
          
          s.createSubscriber(topic);
          
@@ -583,7 +583,18 @@
          assertEquals(null, sub4.getSelector());
          assertEquals(null, sub4.getName());
          
+         cons1.close();
          
+         cons2.close();     
+         
+         s.unsubscribe("SubscriberA");
+         
+         s.unsubscribe("SubscriberB"); 
+         
+         conn.close();
+         
+         removeAllMessages("TopicSubscriptionList", false, 0); 
+         
       }
       finally
       {
@@ -678,6 +689,8 @@
             conn.close();
          }
       
+         this.removeAllMessages("TopicSubscriptionList", false, 0);
+         
          ServerManagement.undeployTopic("TopicSubscriptionList");
       }
    }
@@ -863,6 +876,8 @@
             conn.close();
          }
          
+         this.removeAllMessages("TopicMessageList", false, 0);
+         
          ServerManagement.undeployTopic("TopicMessageList");
       
       }

Modified: trunk/tests/src/org/jboss/test/messaging/jms/server/destination/base/DestinationManagementTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/server/destination/base/DestinationManagementTestBase.java	2007-08-21 04:19:48 UTC (rev 3019)
+++ trunk/tests/src/org/jboss/test/messaging/jms/server/destination/base/DestinationManagementTestBase.java	2007-08-21 15:46:38 UTC (rev 3020)
@@ -450,7 +450,7 @@
       
       conn.close();
             
-      // destroy it
+      // destroy it      
 
       Boolean b = (Boolean)ServerManagement.invoke(serverPeerObjectName, destroyMethod,
                                                    new Object[] { destinationName },
@@ -469,7 +469,6 @@
       }
       
       //Make sure no bindings exist
-      //ServerManagement.gets
 
       Set set = ServerManagement.query(destObjectName);
       assertTrue(set.isEmpty());




More information about the jboss-cvs-commits mailing list