Return-Path: Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: (qmail 82084 invoked from network); 30 Jan 2008 18:35:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Jan 2008 18:35:58 -0000 Received: (qmail 35169 invoked by uid 500); 30 Jan 2008 18:35:48 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 35131 invoked by uid 500); 30 Jan 2008 18:35:48 -0000 Mailing-List: contact derby-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: Delivered-To: mailing list derby-dev@db.apache.org Received: (qmail 35122 invoked by uid 99); 30 Jan 2008 18:35:48 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Jan 2008 10:35:48 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 30 Jan 2008 18:35:28 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 9A76E71426E for ; Wed, 30 Jan 2008 10:35:35 -0800 (PST) Message-ID: <26207689.1201718135630.JavaMail.jira@brutus> Date: Wed, 30 Jan 2008 10:35:35 -0800 (PST) From: "Mike Matrigali (JIRA)" To: derby-dev@db.apache.org Subject: [jira] Updated: (DERBY-3362) ControlRow NPE In-Reply-To: <20824241.1201638274436.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DERBY-3362?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mike Matrigali updated DERBY-3362: ---------------------------------- if possible could you post the whole derby.log. I am trying to figure out what in the transaction may be causing the null pointer. Kinds of things I am looking for is huge numbers of deletes in the transaction, ddl in the transaction like alter table, compress table, drop/create index. All of these are of course supposed to be supported but just trying to guess at how to reproduce this. Maybe you could try with JIT disabled to try and get a line number for the Nullpointer? of course if you could post a standalone repro that would be most help. > ControlRow NPE > -------------- > > Key: DERBY-3362 > URL: https://issues.apache.org/jira/browse/DERBY-3362 > Project: Derby > Issue Type: Bug > Affects Versions: 10.3.2.1 > Reporter: James Alan Shepherd > > I have a NPE in Derby 10.3.2.1 (10.3.1.4 does not show this behaviour) that is probably the same one discussed in DERBY-3216 > FATAL 38406 [Main] (Start.java:153) - Start FAILED > org.springframework.transaction.TransactionSystemException: Could not commit JDBC transaction; nested exception is java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > Caused by: > java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source) > at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:238) > at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:199) > at org.springframework.jdbc.datasource.DataSourceTransactionManager.doCommit(DataSourceTransactionManager.java:245) > at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:651) > at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:621) > at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:146) > at com.aaa.bbb.cccFactory$ddd.add(cccFactory.java:324) > at com.aaa.eee.fff.ggg.reload(ggg.java:44) > at com.aaa.eee.fff.ggg.startup(ggg.java:57) > at com.aaa.eee.fff.Start.startupEee(Start.java:170) > at com.aaa.eee.fff.Start.startup(Start.java:146) > at com.aaa.start.Starter.startup(Starter.java:264) > at com.aaa.start.Main.startup(Main.java:270) > at com.aaa.start.Main.main(Main.java:199) > Caused by: java.sql.SQLException: Java exception: ': java.lang.NullPointerException'. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) > ... 21 more > Caused by: java.lang.NullPointerException > at org.apache.derby.impl.store.access.btree.ControlRow.getControlRowForPage(Unknown Source) > at org.apache.derby.impl.store.access.btree.ControlRow.get(Unknown Source) > at org.apache.derby.impl.store.access.btree.ControlRow.get(Unknown Source) > at org.apache.derby.impl.store.access.btree.BTreePostCommit.purgeRowLevelCommittedDeletes(Unknown Source) > at org.apache.derby.impl.store.access.btree.BTreePostCommit.performWork(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.postTermination(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.completeCommit(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source) > at org.apache.derby.impl.store.access.RAMTransaction.commit(Unknown Source) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCommit(Unknown Source) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.userCommit(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.commit(Unknown Source) > ... 15 more > and derby.log: > 2008-01-28 08:26:36.148 GMT Thread[Main,5,main] (XID = 1888), (SESSIONID = 2), (DATABASE = directory:myDB), (DRDAID = null), Executing prepared statement: SELECT COUNT(*) FROM ZZZ WHERE nID IS NULL :End prepared statement > 2008-01-28 08:26:36.150 GMT Thread[Main,5,main] (XID = 1888), (SESSIONID = 2), (DATABASE = directory:myDB), (DRDAID = null), Committing > 2008-01-28 08:26:36.188 GMT Thread[Main,5,main] (XID = 1888), (SESSIONID = 2), (DATABASE = directory:myDB), (DRDAID = null), Cleanup action starting > 2008-01-28 08:26:36.188 GMT Thread[Main,5,main] (XID = 1888), (SESSIONID = 2), (DATABASE = directory:myDB), (DRDAID = null), Failed Statement is: null with 2 parameters begin parameter #1: 1 :end parameter begin parameter #2: 1 :end param > eter > java.lang.NullPointerException > at org.apache.derby.impl.store.access.btree.ControlRow.getControlRowForPage(Unknown Source) > at org.apache.derby.impl.store.access.btree.ControlRow.get(Unknown Source) > at org.apache.derby.impl.store.access.btree.ControlRow.get(Unknown Source) > at org.apache.derby.impl.store.access.btree.BTreePostCommit.purgeRowLevelCommittedDeletes(Unknown Source) > at org.apache.derby.impl.store.access.btree.BTreePostCommit.performWork(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.postTermination(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.completeCommit(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source) > at org.apache.derby.impl.store.raw.xact.Xact.commit(Unknown Source) > at org.apache.derby.impl.store.access.RAMTransaction.commit(Unknown Source) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.doCommit(Unknown Source) > at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.userCommit(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.commit(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.commit(Unknown Source) > at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:238) > at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.commit(PoolingDataSource.java:199) > at org.springframework.jdbc.datasource.DataSourceTransactionManager.doCommit(DataSourceTransactionManager.java:245) > at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:651) > at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:621) > at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:146) > at com.aaa.bbb.cccFactory$ddd.add(cccFactory.java:324) > at com.aaa.eee.fff.ggg.reload(ggg.java:44) > at com.aaa.eee.fff.ggg.startup(ggg.java:57) > at com.aaa.eee.fff.Start.startupEee(Start.java:170) > at com.aaa.eee.fff.Start.startup(Start.java:146) > at com.aaa.start.Starter.startup(Starter.java:264) > at com.aaa.start.Main.startup(Main.java:270) > at com.aaa.start.Main.main(Main.java:199) > Cleanup action completed > This is a long transaction that has suddenly started throwing a NPE. > Nothing strange happens during the transaction, but on closing I get > the NPE. > If I reorder some of the statements in the transaction (keeping > functional equivalence) the NPE is sometimes not thrown. > I have already moved any table/index create statements to a different (previously committed) transaction. (I have had a few NPE before and locking issues that led me to this practice). > For a while I thought that shutting down derby after creating tables solved the problem, but this has been proven false. > I have tried to run with a sane version, but then I am blocked by too many DERBY-3360. > Also: > On occasion the transaction DOES commit. Or seems to, but then Derby becomes unresponsive, the db files do not grow, but CPU rises and new connections can connect but get no response to commands. I don't know if this is really connected or not, but I thought I would mention it, as this unresponsive problem is what I am supposed to be diagnosing. When I say seems to commit, I mean that sometimes commit returns, sometimes it doesn't. Not very helpful, I know. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.