Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-15920

SQL errors such as constraints should not be detected as fatal

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 6.0-HF01, 7.1
    • Component/s: Runtime

      Description

      Tranql is sorting connection errors. If the error is detected as fatal, the pool is immediately handled for reacting on the error which destroy the connection in the pool.

      By default transql is injecting the org.tranql.connector.jdbc.KnownSQLStateExceptionSorter which states too much errors as fatak such as the h2 constraint errors 23506 as fatal.

      2014-11-03 18:19:21,818 WARN  [Nuxeo-Work-default-4] [org.apache.geronimo.connector.outbound.GeronimoConnectionEventListener] connectionErrorOccurred called with null
      org.h2.jdbc.JdbcBatchUpdateException: Referential integrity constraint violation: "CONTENT_ID_HIERARCHY_FK: PUBLIC.CONTENT FOREIGN KEY(ID) REFERENCES PUBLIC.HIERARCHY(ID) ('f0958317-8400-4928-b5fe-59b6336a326c')"; SQL statement:
      INSERT INTO "CONTENT" ("ID", "NAME", "LENGTH", "DATA", "ENCODING", "DIGEST", "MIME-TYPE") VALUES (?, ?, ?, ?, ?, ?, ?) [23506-177]
      	at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1199)
      	at org.tranql.connector.jdbc.StatementHandle.executeBatch(StatementHandle.java:155)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.insertSimpleRows(JDBCRowMapper.java:592)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.writeCreates(JDBCRowMapper.java:504)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.write(JDBCRowMapper.java:474)
      	at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCMapperConnector.doInvoke(JDBCMapperConnector.java:22)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCMapperConnector.invoke(JDBCMapperConnector.java:62)
      	at com.sun.proxy.$Proxy64.write(Unknown Source)
      	at org.nuxeo.ecm.core.storage.sql.SoftRefCachingRowMapper.write(SoftRefCachingRowMapper.java:428)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.doFlush(SessionImpl.java:407)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.flush(SessionImpl.java:380)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.end(SessionImpl.java:1568)
      	at org.apache.geronimo.transaction.manager.WrapperNamedXAResource.end(WrapperNamedXAResource.java:61)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:569)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:548)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:408)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
      	at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
      	at org.nuxeo.runtime.jtajca.NuxeoContainer$UserTransactionImpl.commit(NuxeoContainer.java:582)
      	at org.nuxeo.runtime.transaction.TransactionHelper.commitOrRollbackTransaction(TransactionHelper.java:284)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransaction(AbstractWork.java:375)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransactionAndCheckExceptions(AbstractWork.java:312)
      	at org.nuxeo.ecm.core.work.AbstractWork.run(AbstractWork.java:280)
      	at org.nuxeo.ecm.core.work.WorkHolder.run(WorkHolder.java:52)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      org.h2.jdbc.JdbcSQLException: Referential integrity constraint violation: "CONTENT_ID_HIERARCHY_FK: PUBLIC.CONTENT FOREIGN KEY(ID) REFERENCES PUBLIC.HIERARCHY(ID) ('f0958317-8400-4928-b5fe-59b6336a326c')"; SQL statement:
      INSERT INTO "CONTENT" ("ID", "NAME", "LENGTH", "DATA", "ENCODING", "DIGEST", "MIME-TYPE") VALUES (?, ?, ?, ?, ?, ?, ?) [23506-177]
      	at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)
      	at org.h2.message.DbException.get(DbException.java:178)
      	at org.h2.message.DbException.get(DbException.java:154)
      	at org.h2.constraint.ConstraintReferential.checkRowOwnTable(ConstraintReferential.java:373)
      	at org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:315)
      	at org.h2.table.Table.fireConstraints(Table.java:909)
      	at org.h2.table.Table.fireAfterRow(Table.java:927)
      	at org.h2.command.dml.Insert.insertRows(Insert.java:162)
      	at org.h2.command.dml.Insert.update(Insert.java:115)
      	at org.h2.command.CommandContainer.update(CommandContainer.java:79)
      	at org.h2.command.Command.executeUpdate(Command.java:254)
      	at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:158)
      	at org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1184)
      	at org.tranql.connector.jdbc.StatementHandle.executeBatch(StatementHandle.java:155)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.insertSimpleRows(JDBCRowMapper.java:592)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.writeCreates(JDBCRowMapper.java:504)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCRowMapper.write(JDBCRowMapper.java:474)
      	at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCMapperConnector.doInvoke(JDBCMapperConnector.java:22)
      	at org.nuxeo.ecm.core.storage.sql.jdbc.JDBCMapperConnector.invoke(JDBCMapperConnector.java:62)
      	at com.sun.proxy.$Proxy64.write(Unknown Source)
      	at org.nuxeo.ecm.core.storage.sql.SoftRefCachingRowMapper.write(SoftRefCachingRowMapper.java:428)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.doFlush(SessionImpl.java:407)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.flush(SessionImpl.java:380)
      	at org.nuxeo.ecm.core.storage.sql.SessionImpl.end(SessionImpl.java:1568)
      	at org.apache.geronimo.transaction.manager.WrapperNamedXAResource.end(WrapperNamedXAResource.java:61)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:569)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.endResources(TransactionImpl.java:548)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:408)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255)
      	at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
      	at org.nuxeo.runtime.jtajca.NuxeoContainer$UserTransactionImpl.commit(NuxeoContainer.java:582)
      	at org.nuxeo.runtime.transaction.TransactionHelper.commitOrRollbackTransaction(TransactionHelper.java:284)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransaction(AbstractWork.java:375)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransactionAndCheckExceptions(AbstractWork.java:312)
      	at org.nuxeo.ecm.core.work.AbstractWork.run(AbstractWork.java:280)
      	at org.nuxeo.ecm.core.work.WorkHolder.run(WorkHolder.java:52)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      2014-11-03 18:19:21,824 ERROR [Nuxeo-Work-default-4] [org.apache.geronimo.transaction.manager.RollbackTask] Unexpected exception committing org.apache.geronimo.connector.outbound.LocalXAResource@19b86f6c; continuing to commit other RMs
      javax.transaction.xa.XAException
      	at org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:88)
      	at org.apache.geronimo.transaction.manager.RollbackTask.run(RollbackTask.java:63)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResources(TransactionImpl.java:584)
      	at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:265)
      	at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
      	at org.nuxeo.runtime.jtajca.NuxeoContainer$UserTransactionImpl.commit(NuxeoContainer.java:582)
      	at org.nuxeo.runtime.transaction.TransactionHelper.commitOrRollbackTransaction(TransactionHelper.java:284)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransaction(AbstractWork.java:375)
      	at org.nuxeo.ecm.core.work.AbstractWork.runWorkWithTransactionAndCheckExceptions(AbstractWork.java:312)
      	at org.nuxeo.ecm.core.work.AbstractWork.run(AbstractWork.java:280)
      	at org.nuxeo.ecm.core.work.WorkHolder.run(WorkHolder.java:52)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: javax.resource.spi.LocalTransactionException: Unable to rollback
      	at org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback(ManagedJDBCConnection.java:113)
      	at org.tranql.connector.AbstractManagedConnection$LocalTransactionImpl.rollback(AbstractManagedConnection.java:203)
      	at org.apache.geronimo.connector.outbound.LocalXAResource.rollback(LocalXAResource.java:86)
      	... 13 more
      Caused by: org.h2.jdbc.JdbcSQLException: The object is already closed [90007-177]
      	at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)
      	at org.h2.message.DbException.get(DbException.java:178)
      	at org.h2.message.DbException.get(DbException.java:154)
      	at org.h2.message.DbException.get(DbException.java:143)
      	at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1465)
      	at org.h2.jdbc.JdbcConnection.checkClosedForWrite(JdbcConnection.java:1453)
      	at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:486)
      	at org.tranql.connector.jdbc.ManagedJDBCConnection.localTransactionRollback(ManagedJDBCConnection.java:111)
      	... 15 more
      

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: