lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Grant Ingersoll (Commented) (JIRA)" <>
Subject [jira] [Commented] (SOLR-1730) Solr fails to start if QueryElevationComponent config is missing
Date Wed, 07 Dec 2011 17:52:43 GMT


Grant Ingersoll commented on SOLR-1730:

The NPE is due to the fact that we initListeners() then we call getSearcher() which creates
the new searcher and registers a Future/Callable on those listeners passing in "this" (i.e.
the partially constructed core that is about to fail), then later, when the core fails, there
is still an thread/future/callable waiting to fire off the newSearcher event which it does
as soon as the CountDownLatch is released.  Little does it know, the core is actually dead.
 I don't particularly think we need to fix this other than to perhaps document it here, as
I think, since things are undefined at this point b/c the core is dead, that we shouldn't
care too much about these side consequences.
> Solr fails to start if QueryElevationComponent config is missing
> ----------------------------------------------------------------
>                 Key: SOLR-1730
>                 URL:
>             Project: Solr
>          Issue Type: Bug
>          Components: SearchComponents - other
>    Affects Versions: 1.4
>            Reporter: Mark Miller
>            Assignee: Grant Ingersoll
>              Labels: newdev
>             Fix For: 3.6, 4.0
>         Attachments: SOLR-1730.patch
> QueryElevationComponent tries to do preload some data if its config file does not exist:
> {code}
>         if (!exists){
>           // preload the first data
>           RefCounted<SolrIndexSearcher> searchHolder = null;
>           try {
>             searchHolder = core.getNewestSearcher(false);
>             IndexReader reader = searchHolder.get().getReader();
>             getElevationMap( reader, core );
>           } finally {
>             if (searchHolder != null) searchHolder.decref();
>           }
>         }
> {code}
> This does not work though, as asking for the newest searcher causes a request to be submitted
to Solr before its ready to handle it:
> {code}
>      [java] SEVERE: java.lang.NullPointerException
>      [java] 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(
>      [java] 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(
>      [java] 	at org.apache.solr.core.SolrCore.execute(
>      [java] 	at org.apache.solr.core.QuerySenderListener.newSearcher(
>      [java] 	at org.apache.solr.core.SolrCore$
>      [java] 	at java.util.concurrent.FutureTask$Sync.innerRun(
>      [java] 	at
> {code}
> The SearchHandler has not yet been core informed (as the QueryElevationComponent causes
this as its getting core informed right before the SearchHandler) and so its components arraylist
is still null.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message