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

Koji Sekiguchi commented on SOLR-3790:
--------------------------------------

Hmm, this is not good. I think storedHighlightFieldNames in SolrIndexSearcher 
could be initialized twice in getStoredHighlightFieldNames() method:

{code}
  public Collection<String> getStoredHighlightFieldNames() {
    if (storedHighlightFieldNames == null) {
      storedHighlightFieldNames = new LinkedList<String>();
      for (String fieldName : fieldNames) {
        try {
          SchemaField field = schema.getField(fieldName);
          if (field.stored() &&
                  ((field.getType() instanceof 
org.apache.solr.schema.TextField) ||
                  (field.getType() instanceof 
org.apache.solr.schema.StrField))) {
            storedHighlightFieldNames.add(fieldName);
          }
        } catch (RuntimeException e) { // getField() throws a SolrException, 
but it arrives as a RuntimeException
            log.warn("Field \"" + fieldName + "\" found in index, but not 
defined in schema.");
        }
      }
    }
    return storedHighlightFieldNames;
  }
{code}

I think the initialization block should go to constructor. Meanwhile, Aoki-san, 
you can avoid the bug by specifying the explicit field names for hl.fl 
parameter instead of using "*".
                
> NullPointerException and ConcurrentModificationException are thrown when 
> searching with highlighter
> ---------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-3790
>                 URL: https://issues.apache.org/jira/browse/SOLR-3790
>             Project: Solr
>          Issue Type: Bug
>          Components: highlighter
>    Affects Versions: 3.5
>         Environment: Ubuntu 12.04, Solr 3.5
>            Reporter: shou aoki
>
> Hi, Im using Solr 3.5.
> I found strange phenomenon in solr log.
> This phenomenon has two exceptions that NullPointerException and 
> ConcurrentModificationException.
> These exceptions are thrown by discrete threads.
> I think, The same two queries thrown at same time because error log recorded 
> at same time. But I can't reproduce it.
> Does anyone have the same phenomenon?
> {code}
> 2012-08-21 00:07:49,868 [qtp979682126-953] INFO  SolrCore - [c3] webapp=/solr 
> path=/select 
> params={hl.tag.post=[%02]&sort=score+desc&hl.tag.pre=[%01]&hl.fl=*&wt=javabin&hl=true&defType=normalizeQParser&rows=40&version=2&fl=score,*&hl.useFastVectorHighlighter=true&start=0&q=hoge&fq=((ap.l:"771")+AND+(*:*))}
>  hits=4 status=500 QTime=164 
> 2012-08-21 00:07:49,868 [qtp979682126-938] INFO  SolrCore - [c3] webapp=/solr 
> path=/select 
> params={hl.tag.post=[%02]&sort=score+desc&hl.tag.pre=[%01]&hl.fl=*&wt=javabin&hl=true&defType=normalizeQParser&rows=12&version=2&fl=score,*&hl.useFastVectorHighlighter=true&start=0&q=hoge&fq=((ap.l:"771")+AND+(*:*))}
>  hits=4 status=500 QTime=1094 
> 2012-08-21 00:07:49,873 [qtp979682126-953] ERROR SolrDispatchFilter - 
> java.util.ConcurrentModificationException
>         at 
> java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:778)
>         at java.util.LinkedList$ListItr.next(LinkedList.java:713)
>         at 
> org.apache.solr.highlight.SolrHighlighter.getHighlightFields(SolrHighlighter.java:106)
>         at 
> org.apache.solr.util.SolrPluginUtils.optimizePreFetchDocs(SolrPluginUtils.java:259)
>         at 
> org.apache.solr.handler.component.QueryComponent.doPrefetch(QueryComponent.java:478)
>         at 
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:385)
>         at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:194)
>         at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1372)
>         at 
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
>         at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
>         at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>         at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>         at org.eclipse.jetty.server.Server.handle(Server.java:350)
>         at 
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
>         at 
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:941)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
>         at 
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
>         at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
>         at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
>         at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>         at java.lang.Thread.run(Thread.java:679)
> 2012-08-21 00:07:49,873 [qtp979682126-938] ERROR SolrDispatchFilter - 
> java.lang.NullPointerException
>         at 
> org.apache.solr.highlight.SolrHighlighter.getHighlightFields(SolrHighlighter.java:107)
>         at 
> org.apache.solr.util.SolrPluginUtils.optimizePreFetchDocs(SolrPluginUtils.java:259)
>         at 
> org.apache.solr.handler.component.QueryComponent.doPrefetch(QueryComponent.java:478)
>         at 
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:385)
>         at 
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:194)
>         at 
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1372)
>         at 
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:356)
>         at 
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:252)
>         at 
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1337)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:486)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
>         at 
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
>         at 
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
>         at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
>         at 
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
>         at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>         at 
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>         at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>         at org.eclipse.jetty.server.Server.handle(Server.java:350)
>         at 
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
>         at 
> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:941)
>         at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
>         at 
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
>         at 
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
>         at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
>         at 
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>         at 
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>         at java.lang.Thread.run(Thread.java:679)
> {code}
> This is rarely accident? These are discrete bug?
> See: Similar phenomenon
> http://lucene.472066.n3.nabble.com/Null-Pointer-Exception-in-SOLR-td3954952.html

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to