You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-dev@lucene.apache.org by "Jayson Minard (JIRA)" <ji...@apache.org> on 2009/01/09 12:30:59 UTC

[jira] Created: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
-----------------------------------------------------------------------------------------

                 Key: SOLR-951
                 URL: https://issues.apache.org/jira/browse/SOLR-951
             Project: Solr
          Issue Type: Bug
          Components: search
    Affects Versions: 1.3.1
            Reporter: Jayson Minard
            Priority: Critical


Running this query:

{code}
http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&shards=test1:8985/solr,test2:8985/solr
{code}

causes this exception:

{code}
java.lang.NullPointerException
	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
{code}

which is at this area of the code in the aggregator, but not the root cause...

{code}
 private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
    FacetInfo fi = rb._facetInfo;

    for (ShardResponse srsp: sreq.responses) {
      // int shardNum = rb.getShardNum(srsp.shard);
      NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
      NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      

      for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
        String key = facet_fields.getName(i);
        DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
        if (dff == null) continue;

        NamedList shardCounts = (NamedList)facet_fields.getVal(i);

        for (int j=0; j<shardCounts.size(); j++) {
          String name = shardCounts.getName(j);
          long count = ((Number)shardCounts.getVal(j)).longValue();
          ShardFacetCount sfc = dff.counts.get(name);
          sfc.count += count;
        }
      }
    }
  }
{code}

The shard actually has an error on it, which is:

{code}
Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&version=2.2&fl=id,score&start=0&q=*:*&facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&fsv=true} hits=0 status=0 QTime=265 
Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&wt=javabin&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&rows=0&SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis,inventions,mechanical+properties,man,computer+programs,optimization,construction,positioning,fluid+flow,circuits,design+engineering,images,joining,networks,standards,control+systems,microstructure,computation,conferences,forming,electronics,electric+potential,assembly,dynamics,simulation,semiconductors,sensors,fluid+dynamics,walls,channels,patents,copper,voltage,contact,finite+element+method,genes,thin+films,electrodes,management,automotive+components,iron,housing,coating,density,aluminum,carbon,deposition,fluids,glass,silicon,marketing,monitoring,temperature+effects,semiconductor+devices,joints,reduction,frames,magnetic+fields,diffusion,automotive+engineering,tools,polymers,oxidation,steels,lasers,lithium,morphology,crystal+structure,automobiles,vehicles,exposure,heating,safety,proteins,water+quality,computational+fluid+dynamics,arrays,education,coatings,nickel,architecture,rivers,heat+treatment,discharge,deformation,heat+transfer,statistical+analysis,accuracy,stability,bacteria,damage,tubes,errors,corrosion,nonlinearity,automation,toxicity,integrated+circuits,lymphocytes+t,escherichia+coli,dna,databases,terminals,catalysts,noise,degradation,effluents,ceramics,nucleotide+sequence,numerical+analysis,oxides,cleaning,dynamical+systems,streams,switches,motors,contamination,remote+sensing,water+pollution,containers,air+pollution,fracture+mechanics,approximation&version=2.2} hits=0 status=0 QTime=2 

{code}

Other related information:

* The facet being selected is a multi-valued field
* The facet is a dynamic field and passes a dynamic rule
* The facet exists and the log shows the 2nd follow-on querying asking for shard values 
* When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
* Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
* Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
* In a non-distributed search, the tag/exclude works fine for the same facets.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Jayson Minard (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jayson Minard updated SOLR-951:
-------------------------------

    Comment: was deleted

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.3.1
>            Reporter: Jayson Minard
>            Priority: Critical
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shalin Shekhar Mangar resolved SOLR-951.
----------------------------------------

    Resolution: Fixed

Committed revision 733656.

Thanks Jayson!

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.4
>            Reporter: Jayson Minard
>            Assignee: Shalin Shekhar Mangar
>            Priority: Critical
>             Fix For: 1.4
>
>         Attachments: SOLR-951.patch
>
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shalin Shekhar Mangar updated SOLR-951:
---------------------------------------

        Fix Version/s: 1.4
             Assignee: Shalin Shekhar Mangar
    Affects Version/s:     (was: 1.3.1)
                       1.4

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.4
>            Reporter: Jayson Minard
>            Assignee: Shalin Shekhar Mangar
>            Priority: Critical
>             Fix For: 1.4
>
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Jayson Minard (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12662344#action_12662344 ] 

Jayson Minard commented on SOLR-951:
------------------------------------

ok so if the string being parsed is:

{code}
{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet
{code}

And this enters parseLocalParams() in QueryParsing...

It would see the "{!" and then start parsing the remainder "terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet" using the first getId call which succeeds and finds "terms" and then the "=" via the peek, and then enters the if that sees the "$" and decides to dereference the parameter.  It immediately calls getId() again which pulls out "$SubjectTerms_mfacet__termsex" and then loops to the top of the loop and calls getId() a second time picking up the final "=" which is then an error.  So, something is missing in the parameters.  Is "ex=t1" another parameter and should have a delimiter?  Ah, it should have a space between there somewhere.  So the parsing is fine, but the creation of the string isn't.  Searching upwards the stack trace now.

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.3.1
>            Reporter: Jayson Minard
>            Priority: Critical
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Shalin Shekhar Mangar (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Shalin Shekhar Mangar updated SOLR-951:
---------------------------------------

    Attachment: SOLR-951.patch

# Modified TestDistributedSearch to reproduce the bug
# Fixed bug in FacetComponent's refinement query generation for local params

I'll commit this shortly.

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.4
>            Reporter: Jayson Minard
>            Assignee: Shalin Shekhar Mangar
>            Priority: Critical
>             Fix For: 1.4
>
>         Attachments: SOLR-951.patch
>
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Jayson Minard (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12662337#action_12662337 ] 

Jayson Minard commented on SOLR-951:
------------------------------------

Ok, looking at QueryParsing.java and ...

parseLocalParams() finds the start of an ID and then calls getId() to retrieve it, but getId() doesn't know when to end (i.e. on "=" or "}") so it eats until it hits an unexpected java identifier character (in this case "=") and bombs with the exception.  

THere either needs to be a special getId() function that knows when to quit nicely, or getId() changed to have valid end tokens where it stops politely rather than as an error.

I'm testing the quick variant function just for the localParams to work around this for now.

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.3.1
>            Reporter: Jayson Minard
>            Priority: Critical
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Jayson Minard (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jayson Minard updated SOLR-951:
-------------------------------

    Description: 
Running this query:

{code}
http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
shards=test1:8985/solr,test2:8985/solr
{code}

causes this exception:

{code}
java.lang.NullPointerException
	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
{code}

which is at this area of the code in the aggregator, but not the root cause...

{code}
 private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
    FacetInfo fi = rb._facetInfo;

    for (ShardResponse srsp: sreq.responses) {
      // int shardNum = rb.getShardNum(srsp.shard);
      NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
      NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      

      for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
        String key = facet_fields.getName(i);
        DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
        if (dff == null) continue;

        NamedList shardCounts = (NamedList)facet_fields.getVal(i);

        for (int j=0; j<shardCounts.size(); j++) {
          String name = shardCounts.getName(j);
          long count = ((Number)shardCounts.getVal(j)).longValue();
          ShardFacetCount sfc = dff.counts.get(name);
          sfc.count += count;
        }
      }
    }
  }
{code}

The shard actually has an error on it, which is:

{code}
Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
version=2.2&fl=id,score&start=0&q=*:*&
facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
fsv=true} hits=0 status=0 QTime=265 
Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
wt=javabin&
fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
rows=0&
SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
version=2.2} hits=0 status=0 QTime=2 

{code}

Other related information:

* The facet being selected is a multi-valued field
* The facet is a dynamic field and passes a dynamic rule
* The facet exists and the log shows the 2nd follow-on querying asking for shard values 
* When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
* Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
* Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
* In a non-distributed search, the tag/exclude works fine for the same facets.



  was:
Running this query:

{code}
http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&shards=test1:8985/solr,test2:8985/solr
{code}

causes this exception:

{code}
java.lang.NullPointerException
	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
{code}

which is at this area of the code in the aggregator, but not the root cause...

{code}
 private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
    FacetInfo fi = rb._facetInfo;

    for (ShardResponse srsp: sreq.responses) {
      // int shardNum = rb.getShardNum(srsp.shard);
      NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
      NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      

      for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
        String key = facet_fields.getName(i);
        DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
        if (dff == null) continue;

        NamedList shardCounts = (NamedList)facet_fields.getVal(i);

        for (int j=0; j<shardCounts.size(); j++) {
          String name = shardCounts.getName(j);
          long count = ((Number)shardCounts.getVal(j)).longValue();
          ShardFacetCount sfc = dff.counts.get(name);
          sfc.count += count;
        }
      }
    }
  }
{code}

The shard actually has an error on it, which is:

{code}
Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&version=2.2&fl=id,score&start=0&q=*:*&facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&fsv=true} hits=0 status=0 QTime=265 
Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
	at org.mortbay.jetty.Server.handle(Server.java:285)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&wt=javabin&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&rows=0&SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis,inventions,mechanical+properties,man,computer+programs,optimization,construction,positioning,fluid+flow,circuits,design+engineering,images,joining,networks,standards,control+systems,microstructure,computation,conferences,forming,electronics,electric+potential,assembly,dynamics,simulation,semiconductors,sensors,fluid+dynamics,walls,channels,patents,copper,voltage,contact,finite+element+method,genes,thin+films,electrodes,management,automotive+components,iron,housing,coating,density,aluminum,carbon,deposition,fluids,glass,silicon,marketing,monitoring,temperature+effects,semiconductor+devices,joints,reduction,frames,magnetic+fields,diffusion,automotive+engineering,tools,polymers,oxidation,steels,lasers,lithium,morphology,crystal+structure,automobiles,vehicles,exposure,heating,safety,proteins,water+quality,computational+fluid+dynamics,arrays,education,coatings,nickel,architecture,rivers,heat+treatment,discharge,deformation,heat+transfer,statistical+analysis,accuracy,stability,bacteria,damage,tubes,errors,corrosion,nonlinearity,automation,toxicity,integrated+circuits,lymphocytes+t,escherichia+coli,dna,databases,terminals,catalysts,noise,degradation,effluents,ceramics,nucleotide+sequence,numerical+analysis,oxides,cleaning,dynamical+systems,streams,switches,motors,contamination,remote+sensing,water+pollution,containers,air+pollution,fracture+mechanics,approximation&version=2.2} hits=0 status=0 QTime=2 

{code}

Other related information:

* The facet being selected is a multi-valued field
* The facet is a dynamic field and passes a dynamic rule
* The facet exists and the log shows the 2nd follow-on querying asking for shard values 
* When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
* Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
* Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
* In a non-distributed search, the tag/exclude works fine for the same facets.




Added whitespace to snippets to break long lines.

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.3.1
>            Reporter: Jayson Minard
>            Priority: Critical
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (SOLR-951) Distributed query fails with tag / exclude pattern used for facets that are multi-valued.

Posted by "Jayson Minard (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/SOLR-951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12662349#action_12662349 ] 

Jayson Minard commented on SOLR-951:
------------------------------------

Ok,  FacetComponent.java creates the parameter that is passed down and adds the "__terms" that is at the end of the original tag.  Just below that on line 108 is the place where it appends the new parameters to the existing.

{code}
 if (dff.localParams != null) {
            facetCommand = commandPrefix+termsKey+dff.facetStr.substring(2);
          } else {
            facetCommand = commandPrefix+termsKey+'}'+dff.field;
          }
{code}

should have white space between the params, such as...

{code}
 if (dff.localParams != null) {
            facetCommand = commandPrefix+termsKey+" "+dff.facetStr.substring(2);
          } else {
            facetCommand = commandPrefix+termsKey+'}'+dff.field;
          }
{code}

I tested this fix and it no longer throws an exception, I have not tested that it ensures the tag/exclude feature still works though.

> Distributed query fails with tag / exclude pattern used for facets that are multi-valued.
> -----------------------------------------------------------------------------------------
>
>                 Key: SOLR-951
>                 URL: https://issues.apache.org/jira/browse/SOLR-951
>             Project: Solr
>          Issue Type: Bug
>          Components: search
>    Affects Versions: 1.3.1
>            Reporter: Jayson Minard
>            Priority: Critical
>
> Running this query:
> {code}
> http://testserver:8985/solr/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on&facet=true&
> facet.field={!ex=t1}SubjectTerms_mfacet&fq={!tag=t1}SubjectTerms_mfacet:(testvalue)&
> shards=test1:8985/solr,test2:8985/solr
> {code}
> causes this exception:
> {code}
> java.lang.NullPointerException
> 	at org.apache.solr.handler.component.FacetComponent.refineFacets(FacetComponent.java:330)
> 	at org.apache.solr.handler.component.FacetComponent.handleResponses(FacetComponent.java:231)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:266)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:821)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:208)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> {code}
> which is at this area of the code in the aggregator, but not the root cause...
> {code}
>  private void refineFacets(ResponseBuilder rb, ShardRequest sreq) {
>     FacetInfo fi = rb._facetInfo;
>     for (ShardResponse srsp: sreq.responses) {
>       // int shardNum = rb.getShardNum(srsp.shard);
>       NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
>       NamedList facet_fields = (NamedList)facet_counts.get("facet_fields");      
>       for (int i=0; i<facet_fields.size(); i++) {  // !!!!!!!!!!!!!!!!! EXCEPTION LINE 330 !!!!!!!!!!!!!!!!!!!! 
>         String key = facet_fields.getName(i);
>         DistribFieldFacet dff = (DistribFieldFacet)fi.facets.get(key);
>         if (dff == null) continue;
>         NamedList shardCounts = (NamedList)facet_fields.getVal(i);
>         for (int j=0; j<shardCounts.size(); j++) {
>           String name = shardCounts.getName(j);
>           long count = ((Number)shardCounts.getVal(j)).longValue();
>           ShardFacetCount sfc = dff.counts.get(name);
>           sfc.count += count;
>         }
>       }
>     }
>   }
> {code}
> The shard actually has an error on it, which is:
> {code}
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&f.SubjectTerms_mfacet.facet.limit=160&wt=javabin&rows=10&
> version=2.2&fl=id,score&start=0&q=*:*&
> facet.field={!ex%3Dt1}SubjectTerms_mfacet&isShard=true&fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> fsv=true} hits=0 status=0 QTime=265 
> Jan 9, 2009 6:15:31 AM org.apache.solr.common.SolrException log
> SEVERE: Exception during facet counts:org.apache.lucene.queryParser.ParseException: Expected identifier at pos 37 str='{!terms=$SubjectTerms_mfacet__termsex=t1}SubjectTerms_mfacet'
> 	at org.apache.solr.search.QueryParsing$StrParser.getId(QueryParsing.java:564)
> 	at org.apache.solr.search.QueryParsing.parseLocalParams(QueryParsing.java:135)
> 	at org.apache.solr.search.QueryParsing.getLocalParams(QueryParsing.java:191)
> 	at org.apache.solr.request.SimpleFacets.parseParams(SimpleFacets.java:91)
> 	at org.apache.solr.request.SimpleFacets.getFacetFieldCounts(SimpleFacets.java:275)
> 	at org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:170)
> 	at org.apache.solr.handler.component.FacetComponent.process(FacetComponent.java:71)
> 	at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:171)
> 	at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
> 	at org.apache.solr.core.SolrCore.execute(SolrCore.java:1325)
> 	at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:303)
> 	at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:232)
> 	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
> 	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
> 	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
> 	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> 	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
> 	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> 	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
> 	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
> 	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> 	at org.mortbay.jetty.Server.handle(Server.java:285)
> 	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:502)
> 	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:835)
> 	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:641)
> 	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:202)
> 	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:378)
> 	at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
> 	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
> Jan 9, 2009 6:15:31 AM org.apache.solr.core.SolrCore execute
> INFO: [] webapp=/solr path=/select params={facet=true&q=*:*&
> facet.field={!terms%3D$SubjectTerms_mfacet__termsex%3Dt1}SubjectTerms_mfacet&isShard=true&
> wt=javabin&
> fq={!tag%3Dt1}SubjectTerms_mfacet:(testvalue)&
> rows=0&
> SubjectTerms_mfacet__terms=mathematical+models,mathematical+analysis&
> version=2.2} hits=0 status=0 QTime=2 
> {code}
> Other related information:
> * The facet being selected is a multi-valued field
> * The facet is a dynamic field and passes a dynamic rule
> * The facet exists and the log shows the 2nd follow-on querying asking for shard values 
> * When running a query for a single valued field it seems to work fine, only multi-valued fields seem to fail.  Not completely verified, but a few tests hint at this.
> * Tried facet names that were simple such as "ISBN" and if multi-valued, produces same error. 
> * Tried facet names with underscores to see if that was at issue, and if single valued, it succeeded.
> * In a non-distributed search, the tag/exclude works fine for the same facets.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.