1 Reply Latest reply on Mar 5, 2008 11:08 AM by marklittle

    JBESB-Internal/DeadLetterService PersistAction

    noel.rocher

      this action is based on the class "org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl"
      where the transaction isolation level is setup to Connection.TRANSACTION_READ_UNCOMMITTED :

      ...
       public boolean redeliver(URI uuid) throws MessageStoreException
       {
       boolean isDelivered=false;
       boolean error=false;
      
       Connection con = null;
       try
       {
       con = mgr.getConnection();
       con.setAutoCommit(false);
       con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
      
      ...
      


      This is producing only warnings but the exception make the redelivry to fail :
      ...
       catch (SQLException e)
       {
       if (logger.isDebugEnabled()) {
       logger.debug("Deadlocks may occur under normal processing");
       logger.debug(e.getMessage(), e);
       }
       error=true;
       }
      ...
      



      here is the sample logs in DEBUG level :
      2008-03-05 15:44:06,916 DEBUG [org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl] Deadlocks may occur under normal processing
      2008-03-05 15:44:06,916 DEBUG [org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl] READ_COMMITTED and SERIALIZABLE are the only valid transaction levels
      java.sql.SQLException: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
       at oracle.jdbc.driver.PhysicalConnection.setTransactionIsolation(PhysicalConnection.java:1608)
       at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.setJdbcTransactionIsolation(BaseWrapperManagedConnection.java:534)
       at org.jboss.resource.adapter.jdbc.WrappedConnection.setTransactionIsolation(WrappedConnection.java:390)
       at org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl.redeliver(DBMessageStoreImpl.java:372)
       at org.jboss.soa.esb.actions.MessageRedeliverer.process(MessageRedeliverer.java:74)
       at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:316)
       at org.jboss.soa.esb.listeners.ScheduleListener.onSchedule(ScheduleListener.java:121)
       at org.jboss.soa.esb.schedule.ScheduleProvider$ESBScheduledJob.execute(ScheduleProvider.java:217)
       at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
       at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
      2008-03-05 15:44:06,916 WARN [org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory] Error resetting transaction isolation
      java.sql.SQLException: READ_COMMITTED and SERIALIZABLE are the only valid transaction levels
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
       at oracle.jdbc.driver.PhysicalConnection.setTransactionIsolation(PhysicalConnection.java:1608)
       at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.cleanup(BaseWrapperManagedConnection.java:189)
       at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.returnConnection(InternalManagedConnectionPool.java:332)
       at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.returnConnection(JBossManagedConnectionPool.java:629)
       at org.jboss.resource.connectionmanager.BaseConnectionManager2.returnManagedConnection(BaseConnectionManager2.java:363)
       at org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.connectionClosed(TxConnectionManager.java:639)
       at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.closeHandle(BaseWrapperManagedConnection.java:266)
       at org.jboss.resource.adapter.jdbc.WrappedConnection.close(WrappedConnection.java:129)
       at org.jboss.internal.soa.esb.persistence.format.db.DBMessageStoreImpl.redeliver(DBMessageStoreImpl.java:435)
       at org.jboss.soa.esb.actions.MessageRedeliverer.process(MessageRedeliverer.java:74)
       at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:316)
       at org.jboss.soa.esb.listeners.ScheduleListener.onSchedule(ScheduleListener.java:121)
       at org.jboss.soa.esb.schedule.ScheduleProvider$ESBScheduledJob.execute(ScheduleProvider.java:217)
       at org.quartz.core.JobRunShell.run(JobRunShell.java:203)
       at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
      
      
      


      good candidate for Jira ?