[ 
https://issues.apache.org/jira/browse/SOLR-7559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tim Hearn updated SOLR-7559:
----------------------------
    Description: 
When sending a query using the /mlt handler with faceting enabled, Solr returns 
an NPE.  The exception is as follows:

{quote}
at
org.apache.solr.request.SimpleFacets.getHeatmapCounts(SimpleFacets.java:1555)
at
org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:284)
at
org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:233)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984)
at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
{quote}

The issue appears to start in the MoreLikeThisHandler.java class, line 233:

{quote}
if (params.getBool(FacetParams.FACET, false)) {
  229           if (mltDocs.docSet == null) {
  230             rsp.add("facet_counts", null);
  231           } else {
  232             SimpleFacets f = new SimpleFacets(req, mltDocs.docSet, 
params);
  233             rsp.add("facet_counts", f.getFacetCounts());
  234           }
  235         }
{quote}

When the above constructor is used in the SimpleFacets class it sets the 
ResponseBuilder object in that class to null, which is what causes the NPE to 
be thrown when getHeatMapFacets() is called from getFacetCounts()

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}



  was:
When sending a query using the /mlt handler with faceting enabled, Solr returns 
an NPE.  The exception is as follows:

{quote}
at
org.apache.solr.request.SimpleFacets.getHeatmapCounts(SimpleFacets.java:1555)
at
org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:284)
at
org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:233)
at
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984)
at
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446)
at
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220)
at
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
at
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
at
org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
at
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
at
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
at
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
at
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
at
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
at
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
at
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
at
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
at org.eclipse.jetty.server.Server.handle(Server.java:368)
at
org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
at
org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
at
org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
at
org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at
org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
at
org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
at
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:745)
{quote}

The issue appears to start in the MoreLikeThisHandler.java class, line 233:

{quote}
if (params.getBool(FacetParams.FACET, false)) {
  229           if (mltDocs.docSet == null) {
  230             rsp.add("facet_counts", null);
  231           } else {
  232             SimpleFacets f = new SimpleFacets(req, mltDocs.docSet, 
params);
  233             rsp.add("facet_counts", f.getFacetCounts());
  234           }
  235         }
{qupte}

When the above constructor is used in the SimpleFacets class it sets the 
ResponseBuilder object in that class to null, which is what causes the NPE to 
be thrown when getHeatMapFacets() is called from getFacetCounts()

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}

{quote}
  129   public SimpleFacets(SolrQueryRequest req,
  130                       DocSet docs,
  131                       SolrParams params) {
  132     this(req,docs,params,null);
  133   }
  134 
  135   public SimpleFacets(SolrQueryRequest req,
  136                       DocSet docs,
  137                       SolrParams params,
  138                       ResponseBuilder rb) {
  139     this.req = req;
  140     this.searcher = req.getSearcher();
  141     this.docs = this.docsOrig = docs;
  142     this.params = orig = params;
  143     this.required = new RequiredSolrParams(params);
  144     this.rb = rb;
  145   }
  146 
{quote}




> Cannot use Faceting Feature while using/mlt handler
> ---------------------------------------------------
>
>                 Key: SOLR-7559
>                 URL: https://issues.apache.org/jira/browse/SOLR-7559
>             Project: Solr
>          Issue Type: Bug
>          Components: MoreLikeThis
>    Affects Versions: 5.1
>         Environment: windows 7 OS, Eclipse JDK 7
>            Reporter: Tim Hearn
>   Original Estimate: 10m
>  Remaining Estimate: 10m
>
> When sending a query using the /mlt handler with faceting enabled, Solr 
> returns an NPE.  The exception is as follows:
> {quote}
> at
> org.apache.solr.request.SimpleFacets.getHeatmapCounts(SimpleFacets.java:1555)
> at
> org.apache.solr.request.SimpleFacets.getFacetCounts(SimpleFacets.java:284)
> at
> org.apache.solr.handler.MoreLikeThisHandler.handleRequestBody(MoreLikeThisHandler.java:233)
> at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:143)
> at org.apache.solr.core.SolrCore.execute(SolrCore.java:1984)
> at
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:829)
> at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:446)
> at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:220)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
> at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
> at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
> at org.eclipse.jetty.server.Server.handle(Server.java:368)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
> at
> org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
> at
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
> at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
> at
> org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
> at
> org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
> at java.lang.Thread.run(Thread.java:745)
> {quote}
> The issue appears to start in the MoreLikeThisHandler.java class, line 233:
> {quote}
> if (params.getBool(FacetParams.FACET, false)) {
>   229           if (mltDocs.docSet == null) {
>   230             rsp.add("facet_counts", null);
>   231           } else {
>   232             SimpleFacets f = new SimpleFacets(req, mltDocs.docSet, 
> params);
>   233             rsp.add("facet_counts", f.getFacetCounts());
>   234           }
>   235         }
> {quote}
> When the above constructor is used in the SimpleFacets class it sets the 
> ResponseBuilder object in that class to null, which is what causes the NPE to 
> be thrown when getHeatMapFacets() is called from getFacetCounts()
> {quote}
>   129   public SimpleFacets(SolrQueryRequest req,
>   130                       DocSet docs,
>   131                       SolrParams params) {
>   132     this(req,docs,params,null);
>   133   }
>   134 
>   135   public SimpleFacets(SolrQueryRequest req,
>   136                       DocSet docs,
>   137                       SolrParams params,
>   138                       ResponseBuilder rb) {
>   139     this.req = req;
>   140     this.searcher = req.getSearcher();
>   141     this.docs = this.docsOrig = docs;
>   142     this.params = orig = params;
>   143     this.required = new RequiredSolrParams(params);
>   144     this.rb = rb;
>   145   }
>   146 
> {quote}
> {quote}
>   129   public SimpleFacets(SolrQueryRequest req,
>   130                       DocSet docs,
>   131                       SolrParams params) {
>   132     this(req,docs,params,null);
>   133   }
>   134 
>   135   public SimpleFacets(SolrQueryRequest req,
>   136                       DocSet docs,
>   137                       SolrParams params,
>   138                       ResponseBuilder rb) {
>   139     this.req = req;
>   140     this.searcher = req.getSearcher();
>   141     this.docs = this.docsOrig = docs;
>   142     this.params = orig = params;
>   143     this.required = new RequiredSolrParams(params);
>   144     this.rb = rb;
>   145   }
>   146 
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to