This is only happening in a specific scenario when a host application server failbacks, so what it does is stops a service that manages derby network server, and restarts it.

There is no second shutdown, because if that was happening I would see duplicate debug message that tell me that the code is about to execute shutdown.

This is done in master and slave derby replication environment. This does not happen always during shutdown of derby.

Thanks,
Oskar


From: Katherine Marsden <kmarsdenderby@sbcglobal.net>
To: Derby Discussion <derby-user@db.apache.org>
Sent: Wednesday, January 30, 2013 2:16 PM
Subject: Re: NullPointerException when Shuting Down Derby

On 1/30/2013 8:38 AM, Oskar Zinger wrote:
Hi Kathey,

Here is what happens...

Yes, this is a multi-threaded system. No, only one shutdown request is happening. I have not tried with deregister=true.

The new finding is...

This NullPointerException is only happening in a Single CPU (or single Core) system. When the system and Kernel is upgraded to 2 CPU / core system - the NullPointerException no longer happens, also the same has been tried on a 4 CPU / core system and it does not happen there again. So strangely this is only happening on a single processor system.

I feel that there should be a check for null in org.apache.derby.impl.store.raw.xact.XactFactory.add() method to check for ttab for null.

It seems to me that there is something hapenning that we don't understand. Although I would certainly accept a patch to put a null check here, my guess is that there might be another NPE  that  you will hit down the line if you fix that one,  so worth taking a little time to understand what is going on and try to get a stand alone reproduction if there is a bug.    It has the feel of two shutdowns at once or maybe some post commit action still happening during the shutdown.

Can you describe what is going on when this happens and try to make a  reproduction you can post?
I'd say go ahead and file a Jira and put the information there and attach logs and such for help from the community as you debug.  It would be helpful too to use debug  jars so we get line numbers in the stack trace.
 
Best

Kathey




Regards,
Oskar


From: Katherine Marsden <kmarsdenderby@sbcglobal.net>
To: Derby Discussion <derby-user@db.apache.org>
Cc: Oskar Zinger <oskarzn@yahoo.com>
Sent: Tuesday, January 29, 2013 12:22 AM
Subject: Re: NullPointerException when Shuting Down Derby

On 1/28/2013 3:04 PM, Oskar Zinger wrote:
I just upgraded to 10.8.3 and I am still running into the same NullPointerException (NPE).

This is actually different, it comes from:
org.apache.derby.impl.store.raw.xact.XactFactory.add(Unknown Source)


Hi Oskar,

Thank you for upgrading to the latest. That always makes things easier to debug.
I guess the next step is to understand how you get into this state.
Is there a stand alone reproduction that you can post in Jira?
Is there something in the log prior to this NPE that might give us an indication of what was going on when you got the NPE?

Is your program multi-threaded? Is there possibly more than one thread shutting down at once?  Do you have the same problem if you use deregister=true?


Best

Kathey


Thanks,
Oskar


From: Katherine Marsden <kmarsdenderby@sbcglobal.net>
To: Derby Discussion <derby-user@db.apache.org>
Cc: Oskar Zinger <oskarzn@yahoo.com>
Sent: Monday, January 28, 2013 4:28 PM
Subject: Re: NullPointerException when Shuting Down Derby

On 1/28/2013 12:52 PM, Oskar Zinger wrote:
When I do the following it sometimes returns a NullPointerException:

      DriverManager.getConnection("jdbc:derby:;shutdown=true;deregister=false");

Here is the exception stack trace:

Caused by: java.lang.NullPointerException
        at org.apache.derby.impl.store.raw.xact.XactFactory.add(Unknown Source)
        at org.apache.derby.impl.store.raw.xact.XactFactory.pushTransactionContext(Unknown Source)
        at org.apache.derby.impl.store.raw.xact.XactFactory.startInternalTransaction(Unknown Source)
        at org.apache.derby.impl.store.raw.log.LogToFile.checkpointWithTran(Unknown Source)
        at org.apache.derby.impl.store.raw.log.LogToFile.checkpoint(Unknown Source)
        at org.apache.derby.impl.store.raw.RawStore.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.services.monitor.BaseMonitor.shutdown(Unknown Source)
        at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
        at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source)
        at java.sql.DriverManager.getConnection(DriverManager.java:399)
        at java.sql.DriverManager.getConnection(DriverManager.java:350)

Does anyone know why this is happening?

I am using Derby 10.8.2.3

Thanks,
Oskar Zinger

https://issues.apache.org/jira/browse/DERBY-5916 was backported to 10.8 with revision 1395186 and looks similar
I suggest you pick up 10.8.3 that has that fix.