[
https://issues.apache.org/jira/browse/DERBY-4676?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4676:
--------------------------------------
Attachment: D4676.java
Thanks, Seth.
I am able to reproduce the bug with the attached java class. The repro has two
threads running. One of them repeatedly inserts and deletes a record in a
table. The other thread repeatedly reads rows from the same table, using an
index on one of the columns.
Here's the exception I see on trunk:
$ java D4676
java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:95)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:142)
at org.apache.derby.impl.jdbc.Util.javaException(Util.java:299)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
at
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
at
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2269)
at
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
at
org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4321)
at
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:469)
at
org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:373)
at D4676$Reader.run(D4676.java:53)
Caused by: java.sql.SQLException: Java exception: ':
java.lang.NullPointerException'.
at
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:119)
at
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
... 10 more
Caused by: java.lang.NullPointerException
at
org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.fetch(GenericConglomerateController.java:291)
at
org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(IndexRowToBaseRowResultSet.java:389)
at
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:477)
at
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:429)
... 2 more
> NullPointerException on SELECT on INNER JOIN
> --------------------------------------------
>
> Key: DERBY-4676
> URL: https://issues.apache.org/jira/browse/DERBY-4676
> Project: Derby
> Issue Type: Bug
> Affects Versions: 10.5.3.0, 10.6.1.0
> Environment: Windows XP, same problem occurred using Apache Derby
> 10.5.3.0 and still with the newly release 10.6.1.0 version.
> For completeness, also noting using c3p0 0.9.1-pre10 and hibernate 3.0.5.
> Attempted trying later versions of both (c3p0 and hibernate) to see if this
> resulted in a workaround, but had no success.
> Reporter: Seth Katzman
> Attachments: 2010-05-25-applicationerror.log,
> 2010-05-25-derbyerror.log, D4676.java, derbyerror.log, error.log
>
>
> Running into a NullPointerException error in the Apache Derby database over
> multiple versions of the derby jars. From testing, this issue intermittently
> occurs during moderate load test scenarios, but has never occurred in
> production. This is using Derby as embedded and always occurs on the same
> statement as shown below and in the attachment. Following the error,
> hibernate throws an exception which results in the code attempting to
> rollback the transaction. The rollback fails as the NullPointerException
> appears to kill the connection.
> *** derby.log
> 2010-04-27 16:05:22.429 GMT Thread[SNMPDelayedStoreRunnable2Thread,5,main]
> (XID = 244546), (SESSIONID = 17), (DATABASE = db), (DRDAID = null), Cleanup
> action starting
> 2010-04-27 16:05:22.429 GMT Thread[SNMPDelayedStoreRunnable2Thread,5,main]
> (XID = 244546), (SESSIONID = 17), (DATABASE = db), (DRDAID = null), Failed
> Statement is: select nonprimary0_.componentid as componen1_1_,
> nonprimary0_.deviceid as deviceid1_, device1_.deviceid as deviceid0_,
> device1_.name as name3_0_, device1_.description as descript3_3_0_,
> device1_.device_type as device4_3_0_, device1_.managed_address as
> managed5_3_0_, device1_.csid as csid3_0_, device1_.url as url3_0_,
> device1_.date_written_to_db as date8_3_0_, device1_.valid as valid3_0_,
> device1_.invalid_reason as invalid10_3_0_, device1_.version as version3_0_
> from subsystem_callserver_map nonprimary0_ inner join device_data device1_ on
> nonprimary0_.deviceid=device1_.deviceid where nonprimary0_.componentid=? with
> 1 parameters begin parameter #1: 86b5b069-ca5c-4c38-9643-d9308c246100 :end
> parameter
> java.lang.NullPointerException
> at
> org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.fetch(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet.getNextRowCore(Unknown
> Source)
> at
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
> at
> com.mchange.v2.c3p0.impl.NewProxyResultSet.next(NewProxyResultSet.java:2859)
> at org.hibernate.loader.Loader.doQuery(Loader.java:408)
> at
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
> at org.hibernate.loader.Loader.loadCollection(Loader.java:1434)
> at
> org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:99)
> at
> org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:488)
> at
> org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
> at
> org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1430)
> at
> org.hibernate.collection.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:280)
> at
> org.hibernate.engine.PersistenceContext.initializeNonLazyCollections(PersistenceContext.java:796)
> at
> org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:223)
> at org.hibernate.loader.Loader.doList(Loader.java:1593)
> at org.hibernate.loader.Loader.list(Loader.java:1577)
> at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
> at
> org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
> at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
> at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
> at ooad.p.ga(p.java:288)
> at ooad.p.ga(p.java:117)
> at oo.c.gdc(c.java:119)
> at oo.d.c(d.java:805)
> at oo.d.c(d.java:785)
> at oo.d.c(d.java:766)
> at oodb.s.run(s.java:82)
> at java.lang.Thread.run(Thread.java:595)
> *** application log
> Apr 27 2010 12:05:22.476 -0400:
> %_JDBCExceptionReporter-3-org.hibernate.util.JDBCExceptionReporter: Java
> exception: ': java.lang.NullPointerException'.
> Apr 27 2010 12:05:22.492 -0400:
> %_JDBCTransaction-3-org.hibernate.transaction.JDBCTransaction: JDBC rollback
> failed
> java.sql.SQLException: No current connection.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
> at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Unknown Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(Unknown
> Source)
> at org.apache.derby.impl.jdbc.EmbedConnection.rollback(Unknown Source)
> at
> com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:755)
> at
> org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:163)
> at
> org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:142)
> at ooad.p.r(p.java:888)
> at ooad.p.ga(p.java:310)
> at ooad.p.ga(p.java:117)
> at oa.c.gdc(c.java:119)
> at oa.d.c(d.java:805)
> at oa.d.c(d.java:785)
> at oa.d.c(d.java:766)
> at ooad.s.run(s.java:82)
> at java.lang.Thread.run(Thread.java:595)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.