I tried to use Derby DB 10.0.2.1 as store for JMS messages. Because it is not
nativelly supported by JBoss 3.2.6 I am using (on Win 2000, JDK 1.5) I made my
own jms services (after removing original hsqldb-jdbc2-service.xml and
hsqldb-jdbc-state-service.xml).
My files follow (they are basicaly modified from existing examples):
derby-service.xml
| <?xml version="1.0" encoding="UTF-8"?>
|
| <!-- $Id: derby-service.xml,v 1.1.2.8 2004/08/20 09:52:22 ejort Exp $ -->
|
| <server>
|
| <!-- ====================================================================
-->
| <!-- Persistence and caching using HSQLDB
-->
| <!-- See docs/examples/jms for other configurations
-->
| <!-- ====================================================================
-->
|
| <!--
| | The destination manager is the core service within JBossMQ
| -->
| <mbean code="org.jboss.mq.server.jmx.DestinationManager"
name="jboss.mq:service=DestinationManager">
| <depends
optional-attribute-name="MessageCache">jboss.mq:service=MessageCache</depends>
| <depends
optional-attribute-name="PersistenceManager">jboss.mq:service=PersistenceManager</depends>
| <depends
optional-attribute-name="StateManager">jboss.mq:service=StateManager</depends>
| </mbean>
|
| <!--
| | The MessageCache decides where to put JBossMQ message that
| | are sitting around waiting to be consumed by a client.
| |
| | The memory marks are in Megabytes. Once the JVM memory usage hits
| | the high memory mark, the old messages in the cache will start
getting
| | stored in the DataDirectory. As memory usage gets closer to the
| | Max memory mark, the amount of message kept in the memory cache
aproaches 0.
| -->
| <mbean code="org.jboss.mq.server.MessageCache"
| name="jboss.mq:service=MessageCache">
| <attribute name="HighMemoryMark">50</attribute>
| <attribute name="MaxMemoryMark">60</attribute>
| <attribute
name="CacheStore">jboss.mq:service=PersistenceManager</attribute>
| </mbean>
|
| <!--
| | The jdbc2 PersistenceManager is the new improved JDBC implementation.
| | This implementation allows you to control how messages are stored in
| | the database.
| |
| | Use this PM if you want the reliablity a relational database can
offer
| | you. The default configuration is known to work with hsqldb, other
| | databases will requrie teaking of the SqlProperties e.g. changing
table
| | colum definitions to database supported types.
| |
| | Take care that the selected blob column type in jms_messages can
store
| | all message data. Some databases (e.g. mySQL) offer blob types with
| | different maximum capacity (e.g. mySQL-type BLOB=64K, LONGBLOB=2G).
| |
| | If you encouter problems with the configured BLOB_TYPE try a
different
| | setting. Valid settings are OBJECT_BLOB, BINARYSTREAM_BLOB and
BYTES_BLOB.
| -->
| <mbean code="org.jboss.mq.pm.jdbc2.PersistenceManager"
| name="jboss.mq:service=PersistenceManager">
| <depends
optional-attribute-name="ConnectionManager">jboss.jca:service=LocalTxCM,name=MyDS</depends>
| <attribute name="SqlProperties">
| BLOB_TYPE=BYTES_BLOB
| INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?)
| INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION,
MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?)
| SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS
| SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES
| SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM
JMS_MESSAGES WHERE DESTINATION=?
| SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES
WHERE MESSAGEID=? AND DESTINATION=?
| MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE
MESSAGEID=? AND DESTINATION=?
| UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE
MESSAGEID=? AND DESTINATION=?
| UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE
TXOP=?
| UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?,
TXOP=? WHERE TXOP=? AND TXID=?
| DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE
TXOP=? AND JMS_MESSAGES.TXID IN (SELECT TXID FROM JMS_TRANSACTIONS)
| DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ?
| DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND
TXOP=?
| DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXOP='T'
| DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND
DESTINATION=?
| CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER
NOT NULL, \
| DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), \
| MESSAGEBLOB BLOB, PRIMARY KEY (MESSAGEID, DESTINATION) )
| CREATE_IDX_MSGS_TXOP_TXID = CREATE INDEX JMS_MESSAGES_TXOP_TXID ON
JMS_MESSAGES (TXOP, TXID)
| CREATE_IDX_MSGS_DEST = CREATE INDEX JMS_MESSAGES_DESTINATION ON
JMS_MESSAGES (DESTINATION)
| CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER not
null, PRIMARY KEY (TXID) )
| CREATE_TABLES_ON_STARTUP = TRUE
| </attribute>
| </mbean>
|
| </server>
|
derby-state-service.xml
| <?xml version="1.0" encoding="UTF-8"?>
|
| <!-- $Id: hsqldb-jdbc-state-service.xml,v 1.1.2.2 2004/03/16 15:13:21 ejort
Exp $ -->
|
| <server>
|
| <!-- ====================================================================
-->
| <!-- JBossMQ State Management using HSQLDB
-->
| <!-- See docs/examples/jms for other configurations
-->
| <!-- ====================================================================
-->
|
| <!-- A Statemanager that stores state in the database -->
| <mbean code="org.jboss.mq.sm.jdbc.JDBCStateManager"
| name="jboss.mq:service=StateManager">
| <depends
optional-attribute-name="ConnectionManager">jboss.jca:service=LocalTxCM,name=TapDS</depends>
| <attribute name="SqlProperties">
| CREATE_TABLES_ON_STARTUP = TRUE
| CREATE_USER_TABLE = CREATE TABLE JMS_USERS (USERID VARCHAR(32) NOT
NULL, PASSWD VARCHAR(32) NOT NULL, \
| CLIENTID VARCHAR(128),
PRIMARY KEY(USERID))
| CREATE_ROLE_TABLE = CREATE TABLE JMS_ROLES (ROLEID VARCHAR(32) NOT
NULL, USERID VARCHAR(32) NOT NULL, \
| PRIMARY KEY(USERID,
ROLEID))
| CREATE_SUBSCRIPTION_TABLE = CREATE TABLE JMS_SUBSCRIPTIONS (CLIENTID
VARCHAR(128) NOT NULL, \
| SUBNAME VARCHAR(128) NOT
NULL, TOPIC VARCHAR(255) NOT NULL, \
| SELECTOR VARCHAR(255),
PRIMARY KEY(CLIENTID, SUBNAME))
| GET_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS
WHERE CLIENTID=? AND SUBNAME=?
| LOCK_SUBSCRIPTION = SELECT TOPIC, SELECTOR FROM JMS_SUBSCRIPTIONS
WHERE CLIENTID=? AND SUBNAME=?
| GET_SUBSCRIPTIONS_FOR_TOPIC = SELECT CLIENTID, SUBNAME, SELECTOR FROM
JMS_SUBSCRIPTIONS WHERE TOPIC=?
| INSERT_SUBSCRIPTION = INSERT INTO JMS_SUBSCRIPTIONS (CLIENTID,
SUBNAME, TOPIC, SELECTOR) VALUES(?,?,?,?)
| UPDATE_SUBSCRIPTION = UPDATE JMS_SUBSCRIPTIONS SET TOPIC=?,
SELECTOR=? WHERE CLIENTID=? AND SUBNAME=?
| REMOVE_SUBSCRIPTION = DELETE FROM JMS_SUBSCRIPTIONS WHERE CLIENTID=?
AND SUBNAME=?
| GET_USER_BY_CLIENTID = SELECT USERID, PASSWD, CLIENTID FROM JMS_USERS
WHERE CLIENTID=?
| GET_USER = SELECT PASSWD, CLIENTID FROM JMS_USERS WHERE USERID=?
| POPULATE.TABLES.01 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('guest', 'guest')
| POPULATE.TABLES.02 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('j2ee', 'j2ee')
| POPULATE.TABLES.03 = INSERT INTO JMS_USERS (USERID, PASSWD, CLIENTID)
VALUES ('john', 'needle', 'DurableSubscriberExample')
| POPULATE.TABLES.04 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('nobody', 'nobody')
| POPULATE.TABLES.05 = INSERT INTO JMS_USERS (USERID, PASSWD) VALUES
('dynsub', 'dynsub')
| POPULATE.TABLES.06 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('guest','guest')
| POPULATE.TABLES.07 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('j2ee','guest')
| POPULATE.TABLES.08 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('john','guest')
| POPULATE.TABLES.09 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('subscriber','john')
| POPULATE.TABLES.10 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('publisher','john')
| POPULATE.TABLES.11 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('publisher','dynsub')
| POPULATE.TABLES.12 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('durpublisher','john')
| POPULATE.TABLES.13 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('durpublisher','dynsub')
| POPULATE.TABLES.14 = INSERT INTO JMS_ROLES (ROLEID, USERID) VALUES
('noacc','nobody')
| </attribute>
| </mbean>
|
| </server>
|
derbydb-ds.xml
| <?xml version="1.0" encoding="UTF-8"?>
|
| <!-- $Id: derbydb-ds.xml,v 1.1 2004/11/25 12:05:26 pbe Exp $ -->
|
|
| <datasources>
| <local-tx-datasource>
| <jndi-name>MyDS</jndi-name>
| <!--
| <connection-url>jdbc:derby:derbydb</connection-url>
| <driver-class>org.apache.derby.jdbc.EmbeddedDriver</driver-class>
| <user-name>sa</user-name>
| <password>pass</password>
| </local-tx-datasource>
|
| </datasources>
|
My deployed application uses the same datasource through Hibernate 2.1.6. Its
configuration follows:
| <?xml version="1.0" encoding="utf-8"?>
|
| <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate
Configuration DTD//EN"
| "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
|
| <hibernate-configuration>
| <session-factory>
| <property
name="hibernate.connection.datasource">java:/MyDS</property>
|
| <property name="hibernate.connection.pool_size">100</property>
| <property name="hibernate.show_sql">false</property>
| <property
name="hibernate.dialect">net.sf.hibernate.dialect.DerbyDialect</property>
| <property
name="hibernate.transaction.factory_class">net.sf.hibernate.transaction.JTATransactionFactory</property>
| <property
name="hibernate.transaction.manager_lookup_class">net.sf.hibernate.transaction.JBossTransactionManagerLookup</property>
| <property name="jta.UserTransaction">UserTransaction</property>
|
| <!-- Mapping files -->
| <mapping resource="META-INF/obj1.hbm.xml"/>
| <mapping resource="META-INF/obj2.hbm.xml"/>
| </session-factory>
| </hibernate-configuration>
|
where Derby dialect was taken from
http://opensource.atlassian.com/projects/hibernate/browse/HB-1224?page=all
Now, when application runs (messaging intensive, DB intensive), after around
17000 messages processed it causes deadlock and sometimes duplicate key
exception. I should mention that during processing of messages, there are
usually sent new messages, but not always, because it normally ends. Better -
it is benchmark kind of application and some rounds were already finished and
it works reliably on different setups (DB, ...). I suspect it is by my setup of
Derby DB. What could be a problem? Can somebody help me to point me to the
place made a mistake or where it might be probably located?
Thank you very much.
Pavol
And yes, here is stacktrace.
| 2004-12-20 18:00:30,677 WARN [org.jboss.tm.TransactionImpl] XAException:
tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=sonic//85768, BranchQual=]
errorCode=XAER_RMERR
| org.jboss.mq.SpyXAException: - nested throwable:
(org.jboss.mq.SpyJMSException: Could not commit tx: 21746; - nested throwable:
(SQL Exception: A lock could not be obtained due to a deadlock, cycle of locks
& waiters is:
| Lock : ROW, JMS_MESSAGES, (33,1)
| Waiting XID : {23506287, S} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506292, S}
| Lock : ROW, JMS_MESSAGES, (152,1035)
| Waiting XID : {23506292, U} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506287, U}
| The selected victim is XID : 23506287))
| at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:88)
| at
org.jboss.tm.TransactionImpl.commitResources(TransactionImpl.java:1656)
| at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:396)
| at org.jboss.tm.TxManager.commit(TxManager.java:142)
| at
org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:361)
| at
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:877)
| at
org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
| at org.jboss.mq.SpySession.run(SpySession.java:351)
| at org.jboss.jms.asf.StdServerSession.run0(StdServerSession.java:200)
| at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
| at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: org.jboss.mq.SpyJMSException: Could not commit tx: 21746; -
nested throwable: (SQL Exception: A lock could not be obtained due to a
deadlock, cycle of locks & waiters is:
| Lock : ROW, JMS_MESSAGES, (33,1)
| Waiting XID : {23506287, S} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506292, S}
| Lock : ROW, JMS_MESSAGES, (152,1035)
| Waiting XID : {23506292, U} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506287, U}
| The selected victim is XID : 23506287)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:581)
| at org.jboss.mq.pm.Tx.commit(Tx.java:174)
| at org.jboss.mq.pm.TxManager.commitTx(TxManager.java:89)
| at
org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:504)
| at
org.jboss.mq.server.JMSServerInterceptorSupport.transact(JMSServerInterceptorSupport.java:186)
| at
org.jboss.mq.security.ServerSecurityInterceptor.transact(ServerSecurityInterceptor.java:182)
| at
org.jboss.mq.server.TracingInterceptor.transact(TracingInterceptor.java:438)
| at
org.jboss.mq.server.JMSServerInvoker.transact(JMSServerInvoker.java:186)
| at org.jboss.mq.il.jvm.JVMServerIL.transact(JVMServerIL.java:327)
| at org.jboss.mq.Connection.send(Connection.java:1213)
| at
org.jboss.mq.SpyXAResourceManager.commit(SpyXAResourceManager.java:159)
| at org.jboss.mq.SpyXAResource.commit(SpyXAResource.java:84)
| ... 11 more
| Caused by: SQL Exception: A lock could not be obtained due to a deadlock,
cycle of locks & waiters is:
| Lock : ROW, JMS_MESSAGES, (33,1)
| Waiting XID : {23506287, S} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506292, S}
| Lock : ROW, JMS_MESSAGES, (152,1035)
| Waiting XID : {23506292, U} , SA, DELETE FROM JMS_MESSAGES WHERE TXID=?
AND TXOP=?
| Granted XID : {23506287, U}
| The selected victim is XID : 23506287
| at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java)
| at
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java)
| at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java)
| at
org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:335)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.removeMarkedMessages(PersistenceManager.java:608)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.commitPersistentTx(PersistenceManager.java:574)
| ... 22 more
| 2004-12-20 18:00:32,224 WARN [org.jboss.tm.TransactionImpl] XAException:
tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=sonic//86041, BranchQual=]
errorCode=XAER_RMERR
| org.jboss.mq.SpyXAException: - nested throwable:
(org.jboss.mq.SpyTransactionRolledBackException: Transaction was rolled back.;
- nested throwable: (org.jboss.mq.SpyJMSException: Could not create tx: 21850;
- nested throwable: (SQL Exception: The statement was aborted because it would
have caused a duplicate key value in a unique or primary key constraint or
unique index identified by 'SQL041217064028740' defined on
'JMS_TRANSACTIONS'.)))
| at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:135)
| at
org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1556)
| at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:385)
| at org.jboss.tm.TxManager.commit(TxManager.java:142)
| at
org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:361)
| at
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:877)
| at
org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
| at org.jboss.mq.SpySession.run(SpySession.java:351)
| at org.jboss.jms.asf.StdServerSession.run0(StdServerSession.java:200)
| at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
| at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: org.jboss.mq.SpyTransactionRolledBackException: Transaction was
rolled back.; - nested throwable: (org.jboss.mq.SpyJMSException: Could not
create tx: 21850; - nested throwable: (SQL Exception: The statement was aborted
because it would have caused a duplicate key value in a unique or primary key
constraint or unique index identified by 'SQL041217064028740' defined on
'JMS_TRANSACTIONS'.))
| at
org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:490)
| at
org.jboss.mq.server.JMSServerInterceptorSupport.transact(JMSServerInterceptorSupport.java:186)
| at
org.jboss.mq.security.ServerSecurityInterceptor.transact(ServerSecurityInterceptor.java:182)
| at
org.jboss.mq.server.TracingInterceptor.transact(TracingInterceptor.java:438)
| at
org.jboss.mq.server.JMSServerInvoker.transact(JMSServerInvoker.java:186)
| at org.jboss.mq.il.jvm.JVMServerIL.transact(JVMServerIL.java:327)
| at org.jboss.mq.Connection.send(Connection.java:1213)
| at
org.jboss.mq.SpyXAResourceManager.prepare(SpyXAResourceManager.java:208)
| at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:131)
| ... 11 more
| Caused by: org.jboss.mq.SpyJMSException: Could not create tx: 21850; -
nested throwable: (SQL Exception: The statement was aborted because it would
have caused a duplicate key value in a unique or primary key constraint or
unique index identified by 'SQL041217064028740' defined on 'JMS_TRANSACTIONS'.)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.insertPersistentTx(PersistenceManager.java:743)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.remove(PersistenceManager.java:1026)
| at org.jboss.mq.server.BasicQueue.acknowledge(BasicQueue.java:536)
| at org.jboss.mq.server.JMSQueue.acknowledge(JMSQueue.java:123)
| at
org.jboss.mq.server.ClientConsumer.acknowledge(ClientConsumer.java:328)
| at
org.jboss.mq.server.JMSDestinationManager.acknowledge(JMSDestinationManager.java:536)
| at
org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:481)
| ... 19 more
| Caused by: SQL Exception: The statement was aborted because it would have
caused a duplicate key value in a unique or primary key constraint or unique
index identified by 'SQL041217064028740' defined on 'JMS_TRANSACTIONS'.
| at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java)
| at
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java)
| at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java)
| at
org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:335)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.addTXRecord(PersistenceManager.java:629)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.insertPersistentTx(PersistenceManager.java:738)
| ... 25 more
| 2004-12-20 18:00:32,224 ERROR [org.jboss.jms.asf.StdServerSession] failed
to commit/rollback
| org.jboss.tm.JBossRollbackException: Unable to commit,
tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=sonic//86041, BranchQual=]
status=STATUS_NO_TRANSACTION; - nested throwable: (org.jboss.mq.SpyXAException:
- nested throwable: (org.jboss.mq.SpyTransactionRolledBackException:
Transaction was rolled back.; - nested throwable:
(org.jboss.mq.SpyJMSException: Could not create tx: 21850; - nested throwable:
(SQL Exception: The statement was aborted because it would have caused a
duplicate key value in a unique or primary key constraint or unique index
identified by 'SQL041217064028740' defined on 'JMS_TRANSACTIONS'.))))
| at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:415)
| at org.jboss.tm.TxManager.commit(TxManager.java:142)
| at
org.jboss.jms.asf.StdServerSession.onMessage(StdServerSession.java:361)
| at
org.jboss.mq.SpyMessageConsumer.sessionConsumerProcessMessage(SpyMessageConsumer.java:877)
| at
org.jboss.mq.SpyMessageConsumer.addMessage(SpyMessageConsumer.java:159)
| at org.jboss.mq.SpySession.run(SpySession.java:351)
| at org.jboss.jms.asf.StdServerSession.run0(StdServerSession.java:200)
| at org.jboss.jms.asf.StdServerSession.run(StdServerSession.java:180)
| at
EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:748)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: org.jboss.mq.SpyXAException: - nested throwable:
(org.jboss.mq.SpyTransactionRolledBackException: Transaction was rolled back.;
- nested throwable: (org.jboss.mq.SpyJMSException: Could not create tx: 21850;
- nested throwable: (SQL Exception: The statement was aborted because it would
have caused a duplicate key value in a unique or primary key constraint or
unique index identified by 'SQL041217064028740' defined on
'JMS_TRANSACTIONS'.)))
| at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:135)
| at
org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1556)
| at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:385)
| ... 9 more
| Caused by: org.jboss.mq.SpyTransactionRolledBackException: Transaction was
rolled back.; - nested throwable: (org.jboss.mq.SpyJMSException: Could not
create tx: 21850; - nested throwable: (SQL Exception: The statement was aborted
because it would have caused a duplicate key value in a unique or primary key
constraint or unique index identified by 'SQL041217064028740' defined on
'JMS_TRANSACTIONS'.))
| at
org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:490)
| at
org.jboss.mq.server.JMSServerInterceptorSupport.transact(JMSServerInterceptorSupport.java:186)
| at
org.jboss.mq.security.ServerSecurityInterceptor.transact(ServerSecurityInterceptor.java:182)
| at
org.jboss.mq.server.TracingInterceptor.transact(TracingInterceptor.java:438)
| at
org.jboss.mq.server.JMSServerInvoker.transact(JMSServerInvoker.java:186)
| at org.jboss.mq.il.jvm.JVMServerIL.transact(JVMServerIL.java:327)
| at org.jboss.mq.Connection.send(Connection.java:1213)
| at
org.jboss.mq.SpyXAResourceManager.prepare(SpyXAResourceManager.java:208)
| at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:131)
| ... 11 more
| Caused by: org.jboss.mq.SpyJMSException: Could not create tx: 21850; -
nested throwable: (SQL Exception: The statement was aborted because it would
have caused a duplicate key value in a unique or primary key constraint or
unique index identified by 'SQL041217064028740' defined on 'JMS_TRANSACTIONS'.)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.insertPersistentTx(PersistenceManager.java:743)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.remove(PersistenceManager.java:1026)
| at org.jboss.mq.server.BasicQueue.acknowledge(BasicQueue.java:536)
| at org.jboss.mq.server.JMSQueue.acknowledge(JMSQueue.java:123)
| at
org.jboss.mq.server.ClientConsumer.acknowledge(ClientConsumer.java:328)
| at
org.jboss.mq.server.JMSDestinationManager.acknowledge(JMSDestinationManager.java:536)
| at
org.jboss.mq.server.JMSDestinationManager.transact(JMSDestinationManager.java:481)
| ... 19 more
| Caused by: SQL Exception: The statement was aborted because it would have
caused a duplicate key value in a unique or primary key constraint or unique
index identified by 'SQL041217064028740' defined on 'JMS_TRANSACTIONS'.
| at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java)
| at
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java)
| at
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java)
| at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java)
| at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java)
| at
org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:335)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.addTXRecord(PersistenceManager.java:629)
| at
org.jboss.mq.pm.jdbc2.PersistenceManager.insertPersistentTx(PersistenceManager.java:738)
| ... 25 more
|
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3859443#3859443
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3859443
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user