[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: http://jira.jboss.org/jira/browse/JBMESSAGING-808 - Fail

clebert.suconic@jboss.com do-not-reply at jboss.com
Tue Feb 6 13:27:59 EST 2007


I'm about to commit the fix for http://jira.jboss.org/jira/browse/JBMESSAGING-809

But I realized something..

If I disable the retry detection (I mean... the query to verify the duplication). I get a PrimaryKey duplication exception... but the JDBCPersistentManager can always perform the update after a retry:

I don't have any other thread receiving messages (the receive would happen afterwards the send is completed). I don't know what would delete the reference allowing the retry to work.

11:23:01,267 WARN  @WorkerThread#1[127.0.0.1:45094] [JDBCPersistenceManager] SQLException caught - assuming deadlock detected, try:1
  | java.sql.BatchUpdateException: Duplicate entry '10-4353' for key 1
  |         at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:648)
  |         at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:517)
  |         at org.jboss.messaging.core.plugin.JDBCPersistenceManager.updateWithRetry(JDBCPersistenceManager.java:3454)
  |         at org.jboss.messaging.core.plugin.JDBCPersistenceManager.updateWithRetryBatch(JDBCPersistenceManager.java:3337)
  |         at org.jboss.messaging.core.plugin.JDBCPersistenceManager.handleBeforeCommit1PC(JDBCPersistenceManager.java:2021)
  |         at org.jboss.messaging.core.plugin.JDBCPersistenceManager$TransactionCallback.beforeCommit(JDBCPersistenceManager.java:3709)
  |         at org.jboss.messaging.core.tx.Transaction.commit(Transaction.java:201)
  |         at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendTransaction(ServerConnectionEndpoint.java:436)
  |         at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.org$jboss$jms$server$endpoint$advised$ConnectionAdvised$sendTransaction$aop(ConnectionAdvised.java:99)
  |         at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
  |         at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
  |         at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
  |         at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.sendTransaction(ConnectionAdvised.java)
  |         at org.jboss.jms.wireformat.ConnectionSendTransactionRequest.serverInvoke(ConnectionSendTransactionRequest.java:81)
  |         at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:125)
  |         at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:715)
  |         at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:553)
  |         at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:378)
  |         at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:158)
  | 11:23:01,268 WARN  @WorkerThread#1[127.0.0.1:45094] [JDBCPersistenceManager] Trying again after a pause
  | 11:23:01,765 WARN  @WorkerThread#1[127.0.0.1:45094] [JDBCPersistenceManager] Update worked after retry
  | 11:23:01,766 TRACE @WorkerThread#1[127.0.0.1:45094] [JDBCPersistenceManager] Batch update INSERT INTO JMS_MESSAGE_REFERENCE (CHANNELID, MESSAGEID, TRANSACTIONID, STATE, ORD, PAGE_ORD, DELIVERYCOUNT, RELIABLE, SCHED_DELIVERY) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?), inserted
  | total of 0 rows
  | 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4012074#4012074

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4012074



More information about the jboss-dev-forums mailing list