[jboss-cvs] JBoss Messaging SVN: r8247 - in branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664: integration/EAP4/etc/server/default/deploy and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Apr 1 05:38:30 EDT 2011
Author: raggz
Date: 2011-04-01 05:38:30 -0400 (Fri, 01 Apr 2011)
New Revision: 8247
Added:
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroup.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroupMonitor.java
Modified:
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/db2-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mssql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mysql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/ndb-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/oracle-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/postgresql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/sybase-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/db2-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mssql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mysql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/ndb-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/oracle-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/postgresql-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/sybase-persistence-service.xml
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/jms/message/JBossMessage.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java
branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java
Log:
Back port of fix JBMessaging-1664
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/db2-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/db2-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/db2-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -60,7 +60,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mssql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mssql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mssql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mysql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mysql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/mysql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/ndb-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/ndb-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/ndb-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/oracle-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/oracle-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/oracle-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -60,7 +60,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/postgresql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/postgresql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/postgresql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
@@ -183,4 +183,4 @@
]]></attribute>
</mbean>
-</server>
\ No newline at end of file
+</server>
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/sybase-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/sybase-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/AS5/etc/server/default/deploy/sybase-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -61,7 +61,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/db2-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/db2-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/db2-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -60,7 +60,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mssql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mssql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mssql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mysql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mysql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/mysql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/ndb-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/ndb-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/ndb-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/oracle-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/oracle-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/oracle-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -60,7 +60,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/postgresql-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/postgresql-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/postgresql-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -56,7 +56,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
@@ -272,4 +272,4 @@
]]></attribute>
</mbean>
-</server>
\ No newline at end of file
+</server>
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/sybase-persistence-service.xml
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/sybase-persistence-service.xml 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/integration/EAP4/etc/server/default/deploy/sybase-persistence-service.xml 2011-04-01 09:38:30 UTC (rev 8247)
@@ -61,7 +61,7 @@
ROLLBACK_MESSAGE_REF1=DELETE FROM JBM_MSG_REF WHERE TRANSACTION_ID=? AND STATE='+'
ROLLBACK_MESSAGE_REF2=UPDATE JBM_MSG_REF SET STATE='C', TRANSACTION_ID = NULL WHERE TRANSACTION_ID=? AND STATE='-'
LOAD_PAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD
- LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD
+ LOAD_UNPAGED_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
LOAD_REFS=SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' AND CHANNEL_ID = ? ORDER BY ORD
UPDATE_REFS_NOT_PAGED=UPDATE JBM_MSG_REF SET PAGE_ORD = NULL WHERE PAGE_ORD BETWEEN ? AND ? AND CHANNEL_ID=?
SELECT_MIN_MAX_PAGE_ORD=SELECT MIN(PAGE_ORD), MAX(PAGE_ORD) FROM JBM_MSG_REF WHERE CHANNEL_ID = ?
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/jms/message/JBossMessage.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/jms/message/JBossMessage.java 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/jms/message/JBossMessage.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -111,7 +111,11 @@
//Used when bridging a message
public static final String JBOSS_MESSAGING_BRIDGE_MESSAGE_ID_LIST = "JBM_BRIDGE_MSG_ID_LIST";
-
+
+ //Used in ordering group
+ public static final String JBOSS_MESSAGING_ORDERING_GROUP_ID = "JBM_ORDERING_GROUP_ID";
+
+
private static final Logger log = Logger.getLogger(JBossMessage.class);
// Static --------------------------------------------------------
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/ChannelSupport.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/ChannelSupport.java 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/ChannelSupport.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -86,6 +86,7 @@
protected volatile boolean active;
+ protected OrderingGroupMonitor monitor = new OrderingGroupMonitor();
//TODO - I would like to get rid of this - the only reason we still keep a count of
//refs being delivered is because many tests require this
//Having to keep this count requires synchronization between delivery thread and acknowledgement
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/JDBCPersistenceManager.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -36,6 +36,7 @@
import org.jboss.messaging.util.StreamUtils;
import org.jboss.messaging.util.Util;
+import javax.jms.Session;
import javax.sql.DataSource;
import javax.transaction.TransactionManager;
import javax.transaction.xa.Xid;
@@ -979,6 +980,8 @@
ps.close();
ps = conn.prepareStatement(getSQLStatement("LOAD_UNPAGED_REFS"));
+
+ ps.setFetchSize(number);
ps.setLong(1, channelID);
@@ -989,23 +992,34 @@
List<ReferenceInfo> refsToUpdate = new ArrayList<ReferenceInfo>();
int count = 0;
+ boolean inMemSwitch = false;
+ boolean nonPageFlag = true;
while (rs.next())
{
+ rs.getObject(4);
+ inMemSwitch = rs.wasNull();
+ if (nonPageFlag && (!inMemSwitch))
+ {
+ nonPageFlag = false;
+ }
+
long msgId = rs.getLong(1);
int deliveryCount = rs.getInt(2);
long sched = rs.getLong(3);
ReferenceInfo ri = new ReferenceInfo(msgId, deliveryCount, sched);
- if (count < number)
+ if ((count < number) && nonPageFlag)
{
refs.add(ri);
}
else
{
- refsToUpdate.add(ri);
+ if (inMemSwitch)
+ {
+ refsToUpdate.add(ri);
+ }
}
-
count++;
}
@@ -2614,8 +2628,8 @@
"SELECT MESSAGE_ID, DELIVERY_COUNT, PAGE_ORD, SCHED_DELIVERY FROM JBM_MSG_REF "
+ "WHERE CHANNEL_ID = ? AND PAGE_ORD BETWEEN ? AND ? ORDER BY PAGE_ORD");
map.put("LOAD_UNPAGED_REFS",
- "SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' "
- + "AND CHANNEL_ID = ? AND PAGE_ORD IS NULL ORDER BY ORD");
+ "SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY, PAGE_ORD FROM JBM_MSG_REF WHERE STATE = 'C' "
+ + "AND CHANNEL_ID = ? ORDER BY ORD");
map.put("LOAD_REFS",
"SELECT MESSAGE_ID, DELIVERY_COUNT, SCHED_DELIVERY FROM JBM_MSG_REF WHERE STATE = 'C' "
+ "AND CHANNEL_ID = ? ORDER BY ORD");
Added: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroup.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroup.java (rev 0)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroup.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -0,0 +1,291 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.core.impl;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.jms.JMSException;
+
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.contract.MessageReference;
+
+/**
+*
+* This class holds the states of messages in an ordering group.
+*
+* @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+*
+*/
+public class OrderingGroup
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+ private List<ReferenceHolder> sortedList = new LinkedList<ReferenceHolder>();
+
+ private HashMap<Long, ReferenceHolder> refMap = new HashMap<Long, ReferenceHolder>();
+
+ private String groupName;
+
+ // Static --------------------------------------------------------
+ private static final Logger log = Logger.getLogger(OrderingGroup.class);
+
+ // Constructors --------------------------------------------------
+ public OrderingGroup(String name)
+ {
+ groupName = name;
+ }
+
+ private OrderingGroup()
+ {
+ }
+
+ // Public --------------------------------------------------------
+ /**
+ * Adding a message to a list. As messages are coming in order, we can just put
+ * the message to the end of the list.
+ *
+ * @param ref The message reference to be added
+ *
+ * @throws JMSException
+ */
+ public boolean register(MessageReference ref)
+ {
+ Long mid = ref.getMessage().getMessageID();
+ ReferenceHolder holder = refMap.get(mid);
+ if (holder != null)
+ {
+ return true;
+ }
+ try
+ {
+ holder = new ReferenceHolder(mid);
+ }
+ catch (JMSException e)
+ {
+ log.error("error creating ReferenceHolder. ", e);
+ }
+ if (holder == null)
+ {
+ return false;
+ }
+ sortedList.add(holder);
+ refMap.put(mid, holder);
+ return true;
+ }
+
+ /**
+ * See if the ref be there and be the first
+ * Simply comparing the addresses simply doesn't work!
+ */
+ public int isAvailable(MessageReference ref)
+ {
+ if (sortedList.size() == 0) {
+ return OrderingGroupMonitor.OK;
+ }
+
+ ReferenceHolder holder = sortedList.get(0);
+ return holder.isAvailable(ref);
+ }
+
+ /**
+ * remove the message reference from the group
+ * Note: the ref will be removed if and only if the ref
+ * resides the first in the list, otherwise just ignore it.
+ */
+ public void unregister(MessageReference ref)
+ {
+ if (sortedList.size() == 0) {
+ return;
+ }
+ ReferenceHolder holder = sortedList.get(0);
+ if (holder == null)
+ {
+ return;
+ }
+ if (holder.matchMessage(ref))
+ {
+ long count = holder.releaseRef();
+ if (count == 0)
+ {
+ sortedList.remove(0);
+ refMap.remove(ref.getMessage().getMessageID());
+ }
+ }
+ }
+
+ /**
+ * check if there are more message available in the list.
+ */
+ public boolean hasPendingMessage()
+ {
+ boolean result = false;
+ if (sortedList.size() == 0)
+ {
+ return result;
+ }
+ result = sortedList.size() > 0;
+ return result;
+ }
+
+ /**
+ * Set the flag that the Message is being delivered.
+ * @param ref
+ */
+ public void markSending(MessageReference ref)
+ {
+ if (sortedList.size() == 0)
+ {
+ return;
+ }
+ ReferenceHolder holder = sortedList.get(0);
+ if (holder.matchMessage(ref))
+ {
+ holder.markSending();
+ }
+ }
+
+ public String getGroupName()
+ {
+ return groupName;
+ }
+
+ /**
+ * @param ref
+ */
+ public void unmarkSending(MessageReference ref)
+ {
+ if (sortedList.size() == 0)
+ {
+ return;
+ }
+ ReferenceHolder holder = sortedList.get(0);
+ if (holder.matchMessage(ref))
+ {
+ holder.unmarkSending();
+ }
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+
+ // Inner classes -------------------------------------------------
+
+}
+
+class ReferenceHolder
+{
+ private Long mid;
+
+ private long refCount;
+
+ private long pendingSentCount;
+
+ public ReferenceHolder(Long id) throws JMSException
+ {
+ mid = id;
+ refCount = 1;
+ pendingSentCount = 0;
+ }
+
+ public void markSending()
+ {
+ pendingSentCount++;
+ }
+
+ public long unmarkSending()
+ {
+ if (pendingSentCount > 0)
+ {
+ pendingSentCount--;
+ }
+ return pendingSentCount;
+ }
+
+ public boolean isPending()
+ {
+ return pendingSentCount > 0;
+ }
+
+ public int isAvailable(MessageReference exRef)
+ {
+ if (matchMessage(exRef))
+ {
+ if (pendingSentCount < refCount)
+ {
+ return OrderingGroupMonitor.OK;
+ }
+ return OrderingGroupMonitor.NOT_OK_BEING_SENT;
+ }
+ return OrderingGroupMonitor.NOT_OK_NOT_FIRST;
+ }
+
+ /**
+ * So far only allowed to register once.
+ */
+ public void addRef()
+ {
+ refCount++;
+ }
+
+ public long releaseRef()
+ {
+ if (refCount > 0)
+ {
+ refCount--;
+ }
+ return refCount;
+ }
+
+ /**
+ * decrease the ref count
+ * here we don't care about pendingSentCount here.
+ */
+ public long releaseSendnRef()
+ {
+ refCount--;
+ pendingSentCount--;
+ return refCount;
+ }
+
+ /**
+ * If the holder holds the same message as in the ref.
+ */
+ public boolean matchMessage(MessageReference newRef)
+ {
+ Long mid1 = newRef.getMessage().getMessageID();
+ return mid1.equals(mid);
+ }
+
+ public Long getMessageID()
+ {
+ return mid;
+ }
+
+}
Property changes on: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroup.java
___________________________________________________________________
Added: svn:executable
+ *
Added: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroupMonitor.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroupMonitor.java (rev 0)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroupMonitor.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -0,0 +1,237 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.messaging.core.impl;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.jms.JMSException;
+
+import org.jboss.jms.message.JBossMessage;
+import org.jboss.logging.Logger;
+import org.jboss.messaging.core.contract.Message;
+import org.jboss.messaging.core.contract.MessageReference;
+
+/**
+*
+* This class guards against any delivering of ordering group messages.
+*
+* @author <a href="mailto:hgao at redhat.com">Howard Gao</a>
+*
+*/
+public class OrderingGroupMonitor
+{
+
+ // Constants -----------------------------------------------------
+
+ // Attributes ----------------------------------------------------
+ private HashMap<String, OrderingGroup> orderingGroups = new HashMap<String, OrderingGroup>();
+
+ // Static --------------------------------------------------------
+ private static final Logger log = Logger.getLogger(OrderingGroupMonitor.class);
+
+ public static final int OK = 0;
+ public static final int NOT_OK_NOT_FIRST = 1;
+
+ public static final int NOT_OK_BEING_SENT = 2;
+
+ // Constructors --------------------------------------------------
+
+ // Public --------------------------------------------------------
+
+ /**
+ * Check the message is it is a member of an ordering group, if so,
+ * put it in; if not, do nothing.
+ * if the message is dropped due to maxSize being reached, it won't
+ * get registered.
+ */
+ public void registerMessage(MessageReference ref)
+ {
+ String grpName = extractGroupName(ref);
+ if (grpName == null)
+ {
+ return;
+ }
+ synchronized (orderingGroups)
+ {
+ OrderingGroup group = orderingGroups.get(grpName);
+ if (group == null)
+ {
+ group = new OrderingGroup(grpName);
+ orderingGroups.put(grpName, group);
+ }
+ group.register(ref);
+ }
+ }
+
+ /**
+ * If ref is not in our registry, just return OK.
+ * If in our registry, check if the ref is the first of the group.
+ * return OK if it is at the first place.
+ * otherwise return NOT_OK_BEING_SENT if the ref is being sent or
+ * NOT_OK_NOT_FIRST is the ref is not at the first place.
+ */
+ public int isAvailable(MessageReference ref)
+ {
+ int result = OK;
+ String grpName = extractGroupName(ref);
+ if (grpName != null)
+ {
+ synchronized (orderingGroups)
+ {
+ OrderingGroup group = orderingGroups.get(grpName);
+ if (group != null)
+ {
+ result = group.isAvailable(ref);
+ }
+ }
+ }
+ else
+ {
+ log.debug("message doesn't have group prop, fine by me");
+ }
+ return result;
+ }
+
+ /**
+ * This method indicates a messgae is completed.
+ * it is called when a message is acked, commited or rollback
+ * once the message is completed, the next one in a ordering
+ * group becomes deliverable.
+ * return if there is more messages available after this one.
+ */
+ public boolean messageCompleted(MessageReference ref)
+ {
+ String grpName = extractGroupName(ref);
+ if (grpName == null)
+ {
+ //not a ordering group message
+ return false;
+ }
+ synchronized (orderingGroups)
+ {
+ OrderingGroup group = orderingGroups.get(grpName);
+ if (group != null)
+ {
+ group.unregister(ref);
+ }
+ return this.hasMessageInQueue();
+ }
+ }
+
+ /**
+ * Check if there is any pending messages in any group.
+ */
+ private boolean hasMessageInQueue()
+ {
+ boolean result = false;
+ synchronized (orderingGroups)
+ {
+ Iterator<OrderingGroup> iter = orderingGroups.values().iterator();
+ while (iter.hasNext())
+ {
+ OrderingGroup group = iter.next();
+ if (group.hasPendingMessage())
+ {
+ result = true;
+ break;
+ }
+ }
+
+ }
+ return result;
+ }
+
+ /**
+ * reducing the refcount, if zero, remove it.
+ */
+ public void unmarkSending(MessageReference ref)
+ {
+ String grpName = extractGroupName(ref);
+ if (grpName == null)
+ {
+ return;
+ }
+ synchronized (orderingGroups)
+ {
+ OrderingGroup group = orderingGroups.get(grpName);
+ if (group != null)
+ {
+ group.unmarkSending(ref);
+ }
+ }
+ }
+
+ public void markSending(MessageReference ref)
+ {
+ String grpName = extractGroupName(ref);
+ if (grpName != null)
+ {
+ synchronized (orderingGroups)
+ {
+ OrderingGroup group = orderingGroups.get(grpName);
+ if (group != null)
+ {
+ group.markSending(ref);
+ }
+ }
+ }
+ }
+
+ // Package protected ---------------------------------------------
+
+ // Protected -----------------------------------------------------
+
+ // Private -------------------------------------------------------
+ private static String extractGroupName(MessageReference ref)
+ {
+ String name = null;
+ try
+ {
+ Message obj = ref.getMessage();
+ if (obj instanceof JBossMessage)
+ {
+ JBossMessage msg = (JBossMessage)ref.getMessage();
+ if (msg != null)
+ {
+ name = msg.getStringProperty(JBossMessage.JBOSS_MESSAGING_ORDERING_GROUP_ID);
+ }
+ }
+ }
+ catch (JMSException e)
+ {
+ }
+ return name;
+ }
+
+ /**
+ * check if the message has a group name
+ */
+ public static boolean isOrderingGroupMessage(MessageReference ref)
+ {
+ return extractGroupName(ref) != null;
+ }
+
+ // Inner classes -------------------------------------------------
+
+}
Property changes on: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/OrderingGroupMonitor.java
___________________________________________________________________
Added: svn:executable
+ *
Modified: branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java
===================================================================
--- branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java 2011-04-01 09:08:37 UTC (rev 8246)
+++ branches/Branch_JBossMessaging_1_4_0_SP3_CP04_JBMESSAGING_1664/src/main/org/jboss/messaging/core/impl/PagingChannelSupport.java 2011-04-01 09:38:30 UTC (rev 8247)
@@ -265,6 +265,9 @@
MessageReference ref = addFromRefInfo(info, refMap);
+ //https://jira.jboss.org/jira/browse/JBMESSAGING-1664
+ monitor.registerMessage(ref);
+
if (recoverable && ref.getMessage().isReliable())
{
loadedReliable = true;
More information about the jboss-cvs-commits
mailing list