Return-Path: X-Original-To: apmail-db-derby-dev-archive@www.apache.org Delivered-To: apmail-db-derby-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6CD869274 for ; Wed, 2 May 2012 14:53:12 +0000 (UTC) Received: (qmail 96849 invoked by uid 500); 2 May 2012 14:53:12 -0000 Delivered-To: apmail-db-derby-dev-archive@db.apache.org Received: (qmail 96769 invoked by uid 500); 2 May 2012 14:53:12 -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 96762 invoked by uid 99); 2 May 2012 14:53:12 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 May 2012 14:53:12 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 02 May 2012 14:53:09 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id 0DB1442BAB0 for ; Wed, 2 May 2012 14:52:48 +0000 (UTC) Date: Wed, 2 May 2012 14:52:48 +0000 (UTC) From: "Knut Anders Hatlen (JIRA)" To: derby-dev@db.apache.org Message-ID: <619622133.17283.1335970368057.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1220732079.16602.1335954170774.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Updated] (DERBY-5736) NullPointerException in GenericTriggerExecutor.executeSPS() caused by OutOfMemoryError MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/DERBY-5736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Knut Anders Hatlen updated DERBY-5736: -------------------------------------- Issue & fix info: Patch Available Regression tests passed. > NullPointerException in GenericTriggerExecutor.executeSPS() caused by OutOfMemoryError > -------------------------------------------------------------------------------------- > > Key: DERBY-5736 > URL: https://issues.apache.org/jira/browse/DERBY-5736 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.9.0.0 > Environment: java version "1.7.0_02" > Java(TM) SE Runtime Environment (build 1.7.0_02-b13) > Java HotSpot(TM) Server VM (build 22.0-b10, mixed mode) > Oracle Solaris 11.1 X86 > Reporter: Knut Anders Hatlen > Assignee: Knut Anders Hatlen > Attachments: d5736-1a.diff > > > If I run TriggerTest with the flags -server and -Xmx150M passed to the JVM, I fairly consistently see a NPE being thrown: > java.lang.NullPointerException > at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:221) > at org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:114) > at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:281) > at org.apache.derby.impl.sql.execute.UpdateResultSet.fireAfterTriggers(UpdateResultSet.java:818) > at org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:280) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:443) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:324) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1715) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1370) > at org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.testBlobInTriggerTable(TriggerTest.java:880) > at org.apache.derbyTesting.functionTests.tests.lang.TriggerTest.testBlobInTriggerTable(TriggerTest.java:779) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:601) > at junit.framework.TestCase.runTest(TestCase.java:164) > at junit.framework.TestCase.runBare(TestCase.java:130) > at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:113) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:120) > at junit.framework.TestSuite.runTest(TestSuite.java:230) > at junit.framework.TestSuite.run(TestSuite.java:225) > at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24) > at junit.extensions.TestSetup$1.protect(TestSetup.java:21) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.extensions.TestSetup.run(TestSetup.java:25) > at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57) > at junit.textui.TestRunner.doRun(TestRunner.java:121) > at junit.textui.TestRunner.start(TestRunner.java:185) > at junit.textui.TestRunner.main(TestRunner.java:143) > In derby.log, there is an OOME right before the NPE: > java.lang.OutOfMemoryError: Java heap space > at org.apache.derby.impl.jdbc.LOBStreamControl.updateData(LOBStreamControl.java:154) > at org.apache.derby.impl.jdbc.LOBStreamControl.write(LOBStreamControl.java:247) > at org.apache.derby.impl.jdbc.LOBStreamControl.(LOBStreamControl.java:89) > at org.apache.derby.impl.jdbc.EmbedBlob.(EmbedBlob.java:189) > at org.apache.derby.impl.jdbc.EmbedResultSet.getBlob(EmbedResultSet.java:4072) > at org.apache.derby.impl.jdbc.EmbedResultSet.getObject(EmbedResultSet.java:1704) > at org.apache.derby.exe.ac56961bb1x0137x0d04x3d17x00005ffb0f6356.e0(Unknown Source) > at org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:139) > at org.apache.derby.impl.sql.execute.RowResultSet.getNextRowCore(RowResultSet.java:148) > at org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(DMLWriteResultSet.java:127) > at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:507) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:443) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeSubStatement(GenericPreparedStatement.java:313) > at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:176) > at org.apache.derby.impl.sql.execute.RowTriggerExecutor.fireTrigger(RowTriggerExecutor.java:114) > (...) > The code that fails with NPE, is this call to cleanupOnError() in a catch block in GenericTriggerExecutor.executeSPS(): > /* retrieve the current active SC */ > StatementContext sc = lcc.getStatementContext(); > > /* make sure that the cleanup is on the new SC */ > if (active_sc != sc) > { > sc.cleanupOnError(e); > } -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira