cleanupOnError does not log the original exception if it encounters an error on 
cleanup
---------------------------------------------------------------------------------------

                 Key: DERBY-3992
                 URL: https://issues.apache.org/jira/browse/DERBY-3992
             Project: Derby
          Issue Type: Bug
          Components: Services
    Affects Versions: 10.5.0.0
            Reporter: Kathey Marsden


Recently I encountered a couple of cases where we encountered an error on 
cleanupOnError so the original exception that caused the cleanup action was 
lost.  It would be useful if the exception passed to cleanupOnError was logged 
regardless of whether there was a subsequent exception on cleanup.

Here are a couple sample traces.  The first was from a user site.
----------------------------------------------------------------
New exception raised during cleanup null
java.lang.NullPointerException
        at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
        at org.apache.derby.impl.store.raw.log.LogToFile.flush(Unknown Source)
        at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.flush(Unknown Source)
        at org.apache.derby.impl.store.raw.data.CachedPage.writePage(Unknown 
Source)
        at org.apache.derby.impl.store.raw.data.CachedPage.clean(Unknown Source)
        at org.apache.derby.impl.services.cache.CachedItem.clean(Unknown Source)
        at org.apache.derby.impl.services.cache.Clock.cleanCache(Unknown Source)
        at org.apache.derby.impl.services.cache.Clock.cleanAll(Unknown Source)
        at org.apache.derby.impl.services.cache.Clock.shutdown(Unknown Source)
        at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.stop(Unknown Source)
        at org.apache.derby.impl.services.monitor.TopService.stop(Unknown 
Source)
        at org.apache.derby.impl.services.monitor.TopService.shutdown(Unknown 
Source)
        at org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(Unknown 
Source)
        at org.apache.derby.impl.db.DatabaseContextImpl.cleanupOnError(Unknown 
Source)
        at 
org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(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.<init>(Unknown Source)
        at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:562)
        at java.sql.DriverManager.getConnection(DriverManager.java:186)

The second was from a run on IBM 1.6 of store/encryptDatabaseTest1.sql. 
I can't reproduce the error.
New exception raised during cleanup name can't be null
java.lang.NullPointerException: name can't be null
        at java.io.FilePermission.init(FilePermission.java:183)
        at java.io.FilePermission.<init>(FilePermission.java:267)
        at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
        at java.io.File.list(File.java:983)
        at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(BaseDataFileFactory.java:2640)
        at 
java.security.AccessController.doPrivileged(AccessController.java:251)
        at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.removeStubs(BaseDataFileFactory.java:1591)
        at 
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.stop(BaseDataFileFactory.java:499)
        at 
org.apache.derby.impl.services.monitor.TopService.stop(TopService.java:405)
        at 
org.apache.derby.impl.services.monitor.TopService.shutdown(TopService.java:349)
        at 
org.apache.derby.impl.services.monitor.BaseMonitor.shutdown(BaseMonitor.java:239)
        at 
org.apache.derby.impl.db.DatabaseContextImpl.cleanupOnError(DatabaseContextImpl.java:60)
        at 
org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(ContextManager.java:332)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(TransactionResourceImpl.java:419)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:584)
        at 
org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Driver40.java:68)
        at org.apache.derby.jdbc.InternalDriver.connect(InternalDriver.java:238)
        at 
org.apache.derby.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:119)
        at java.sql.DriverManager.getConnection(DriverManager.java:316)
        at java.sql.DriverManager.getConnection(DriverManager.java:297)
        at org.apache.derby.impl.tools.ij.ij.dynamicConnection(ij.java:1329)
        at org.apache.derby.impl.tools.ij.ij.ConnectStatement(ij.java:1179)
        at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1007)
        at 
org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:328)
        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:248)
        at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
        at org.apache.derby.impl.tools.ij.Main.main(Main.java:73)
        at org.apache.derby.tools.ij.main(ij.java:59)


In both cases it would have been useful to have the original exception


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to