[ 
https://issues.apache.org/jira/browse/DERBY-7059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17613791#comment-17613791
 ] 

Richard N. Hillegas commented on DERBY-7059:
--------------------------------------------

Thanks for that stack trace. It indicates that the thread which refreshes index 
statistics can't look up its execution context.

Derby context management is a tricky bit of code which I don't understand. 
Contexts are thread-specific state variables. A casual glance at one of the key 
classes (org.apache.derby.iapi.services.context.ContextService) suggests that 
there are many routes by which context lookup can fail silently and return 
null. Fortunately, bugs in this area are extremely rare. Unfortunately, your 
application seems to have stumbled across one of these rare bugs.

If I were debugging this problem, I would start by instrumenting ContextService 
and its sister classes so that a diagnostic trace is printed everywhere that 
context lookup fails and returns null. Fine-tuning this trace code may take a 
while because there may be bootstrap cases where context lookup is expected to 
return a null, flagging the need to run some initialization code. The signal we 
are looking for may be swamped by other diagnostic noise.

As a last resort, you may want to disable the thread which refreshes index 
statistics. You should be able to do this by setting the following property on 
the boot command line:

  -Dderby.storage.indexStats.auto=false

If you do that, you may need to manually refresh index statistics 
periodically--in order to maintain good query performance. For more 
information, see the "Working with cardinality statistics" section in the Derby 
Tuning Guide 
(https://db.apache.org/derby/docs/10.16/tuning/ctunstats46438.html).


> NullPointerException IndexRowGenerator.getExecutionFactory
> ----------------------------------------------------------
>
>                 Key: DERBY-7059
>                 URL: https://issues.apache.org/jira/browse/DERBY-7059
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.14.2.0
>            Reporter: Daniel Gonzalez
>            Priority: Major
>
> We have had a couple of customers which have experienced the crash show below 
> in the derby.index-stat-thread.
> We can't recreate the issue locally, but what may be the cause of this? Is 
> there anything in particular that may be provoking this?
>  
> {{java.lang.NullPointerException}}{{at 
> org.apache.derby.iapi.sql.dictionary.IndexRowGenerator.getExecutionFactory(Unknown
>  Source)}}{{at 
> org.apache.derby.iapi.sql.dictionary.IndexRowGenerator.getIndexRowTemplate(Unknown
>  Source)}}{{at 
> org.apache.derby.iapi.sql.dictionary.IndexRowGenerator.getNullIndexRow(Unknown
>  Source)}}{{at 
> org.apache.derby.impl.services.daemon.IndexStatisticsDaemonImpl.updateIndexStatsMinion(Unknown
>  Source)}}{{at 
> org.apache.derby.impl.services.daemon.IndexStatisticsDaemonImpl.generateStatistics(Unknown
>  Source)}}{{at 
> org.apache.derby.impl.services.daemon.IndexStatisticsDaemonImpl.processingLoop(Unknown
>  Source)}}{{at 
> org.apache.derby.impl.services.daemon.IndexStatisticsDaemonImpl.run(Unknown 
> Source)}}{{at java.lang.Thread.run(Thread.java:748)}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to