Hello, all:

While our application is shutting down, it is possible that some of its 
components may continue execution or even begin execution of the queries on the 
in-memory Derby DB. In such situation, Derby starts throwing all kinds of 
exceptions, including a Null Pointer Exception (pls see excerpt from our log 
below). Is it possible to have Derby shut down more gracefully, so that the 
application doesn't pester our error log files with these exceptions?

Of course, I may be able to work around by implementing an atomic reference 
counter, which gets incremented before a query is executed and decremented when 
it's done. And then, upon a request to shut down Derby, wait until that counter 
gets to 0 before sending the shutdown URL. But it seems kludgy to me and I 
would wish for a more elegant way for Derby itself to handle this, as it has 
the intimate knowledge of what's being executed and what's not.

Or, perhaps, you could recommend a better approach?

Thank you.
Pavel.

2012-01-12 16:15:23,224 [main] INFO  Executing Derby Shutdown Command: 
jdbc:derby:memory:geni;drop=true
2012-01-12 16:15:23,230 SQL Exception due to executing statement
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.ConnectionChild.handleException(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
        ...
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)
        ... 13 more
Caused by: java.lang.NullPointerException
        at java.util.LinkedList.remove(LinkedList.java:225)
        at 
org.apache.derby.impl.services.locks.LockControl.removeWaiter(Unknown Source)
        at 
org.apache.derby.impl.services.locks.LockControl.getNextWaiter(Unknown Source)
        at 
org.apache.derby.impl.services.locks.ConcurrentLockSet.lockObject(Unknown 
Source)
        at 
org.apache.derby.impl.services.locks.ConcurrentLockSet.zeroDurationLockObject(Unknown
 Source)
        at 
org.apache.derby.impl.services.locks.AbstractPool.zeroDurationlockObject(Unknown
 Source)
        at 
org.apache.derby.impl.services.locks.ConcurrentPool.zeroDurationlockObject(Unknown
 Source)
        at 
org.apache.derby.impl.store.raw.xact.RowLocking2nohold.lockRecordForRead(Unknown
 Source)
        at 
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.lockPositionForRead(Unknown
 Source)
        at 
org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchRows(Unknown
 Source)
        at 
org.apache.derby.impl.store.access.conglomerate.GenericScanController.fetchSet(Unknown
 Source)
        at 
org.apache.derby.impl.store.access.BackingStoreHashTableFromScan.<init>(Unknown 
Source)
        at 
org.apache.derby.impl.store.access.RAMTransaction.createBackingStoreHashtableFromScan(Unknown
 Source)
        at org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(Unknown 
Source)
        at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown 
Source)
        at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.GroupedAggregateResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ScrollInsensitiveResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
Source)
        ... 6 more
2012-01-12 16:15:23,231 SQL Exception due to executing statement
java.sql.SQLNonTransientConnectionException: Database 'memory:geni' shutdown.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(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.ConnectionChild.handleException(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
        ...
Caused by: java.sql.SQLException: Database 'memory:geni' shutdown.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
 Source)
        ... 12 more
Caused by: ERROR 08006: Database 'memory:geni' shutdown.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown 
Source)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.shutdownDatabaseException(Unknown
 Source)
        ... 9 more



Jefferies archives and monitors outgoing and incoming e-mail. The contents of 
this email, including any attachments, are confidential to the ordinary user of 
the email address to which it was addressed. If you are not the addressee of 
this email you may not copy, forward, disclose or otherwise use it or any part 
of it in any form whatsoever. This email may be produced at the request of 
regulators or in connection with civil litigation. Jefferies accepts no 
liability for any errors or omissions arising as a result of transmission. Use 
by other than intended recipients is prohibited. In the United Kingdom, 
Jefferies operates as Jefferies International Limited; registered in England: 
no. 1978621; registered office: Vintners Place, 68 Upper Thames Street, London 
EC4V 3BJ. Jefferies International Limited is authorised and regulated by the 
Financial Services Authority.

Reply via email to