Uploaded image for project: 'Crucible'
  1. Crucible
  2. CRUC-6385

An SQLException can corrupt a connection in the connection pool and cause Crucible to became unstable

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Medium
    • 2.10.2, 3.0.0
    • 2.9.0, 2.10.0
    • None
    • None

    Description

      Observed using postgres. An SQLException being thrown and a transaction not being rolled back properly causes the connection to be returned to the connection pool in a bad state.

      Subsequent attempts to get the connection from the connection pool result in:

           [java] Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
           [java] 	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140)
           [java] 	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128)
           [java] 	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
           [java] 	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
           [java] 	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
           [java] 	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
           [java] 	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
           [java] 	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1616)
           [java] 	at org.hibernate.loader.Loader.doQuery(Loader.java:717)
           [java] 	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
           [java] 	at org.hibernate.loader.Loader.loadCollection(Loader.java:2082)
           [java] 	at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:62)
           [java] 	at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:628)
           [java] 	at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:83)
           [java] 	at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1853)
           [java] 	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:369)
           [java] 	at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:111)
           [java] 	at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:186)
           [java] 	at com.cenqua.crucible.model.ReviewParticipant.getCompletedFrxs(ReviewParticipant.java:221)
           [java] 	at com.cenqua.crucible.model.ReviewParticipant.getPercentageComplete(ReviewParticipant.java:239)
           [java] 	at sun.reflect.GeneratedMethodAccessor801.invoke(Unknown Source)
           [java] 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
           [java] 	at java.lang.reflect.Method.invoke(Method.java:597)
           [java] 	at javax.el.BeanELResolver.getValue(BeanELResolver.java:293)
           [java] 	... 185 more
           [java] Caused by: org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
           [java] 	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
           [java] 	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
           [java] 	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
           [java] 	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
           [java] 	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
           [java] 	at org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLQuery(AbstractJdbc2Connection.java:243)
           [java] 	at org.postgresql.jdbc2.AbstractJdbc2Connection.execSQLQuery(AbstractJdbc2Connection.java:235)
           [java] 	at org.postgresql.jdbc2.AbstractJdbc2Connection.getTransactionIsolation(AbstractJdbc2Connection.java:724)
           [java] 	at com.jolbox.bonecp.ConnectionHandle.getTransactionIsolation(ConnectionHandle.java:633)
           [java] 	at com.jolbox.bonecp.provider.BoneCPConnectionProvider.getConnection(BoneCPConnectionProvider.java:185)
           [java] 	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
           [java] 	... 204 more
      

      Attachments

        Issue Links

          Activity

            People

              lpater Lukasz Pater
              lpater Lukasz Pater
              Votes:
              6 Vote for this issue
              Watchers:
              12 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: