[ https://issues.apache.org/jira/browse/SOLR-13509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16858652#comment-16858652 ]
Munendra S N commented on SOLR-13509: ------------------------------------- [^SOLR-13509.patch] patch with some no-commit * Fixes the failing test case in Distributed debug component. Should the behavior be changed so that we return Qtime in debug irrespective of omitHeader=true or not? For now, adding QTime only when omitHeader=false and responseHeader!=null (current behavior) * I have made changes in {{CloudExitableDirectoryReaderTest.testCreepThenBite}} to randomly omitHeader as suggested. when omitHeader=true, we won't be able to verify if it is partial result or not. The test verifies that request doesn't fail with any NPE, need suggestions to improve this further * Also, Documentation need to be updated for timeAllowed(partial results) and omitHeader=true, if not already covered. With this combination, user wouldn't if it is partial result or not Approach-2 * {{CloudExitableDirectoryReaderTest.testCreepThenBite}} also covers query case but there is no NPE being thrown as null check is [done|https://github.com/apache/lucene-solr/commit/b8d569aff0c4417b0f9cd52d54455ab9b66236a1#diff-1001c35109fd3a79e4d10c55fd9f98fbR1171] . This could be done for FacetComponent and FacetModule too (only other components with support for timeAllowed) but then for any component which adds support for partial results, null check has to be explicitly added [~mkhludnev] Please suggest which would be a better approach > NullPointerException in JSON Facet if omitHeaders=true > ------------------------------------------------------ > > Key: SOLR-13509 > URL: https://issues.apache.org/jira/browse/SOLR-13509 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: Facet Module > Affects Versions: 8.1.1 > Environment: Solr 8.1.1 downloaded tar gz, started in cloud mode: > {code:java} > bin/solr start -e cloud -noprompt > bin/solr create -c techproducts -s 2 -rf 2 -d > server/solr/configsets/sample_techproducts_configs/conf -n > sample_techproducts_configs > bin/post -c techproducts example/exampledocs/*.xml{code} > Reporter: Markus Kalkbrenner > Assignee: Mikhail Khludnev > Priority: Major > Attachments: SOLR-13509.patch, SOLR-13509.patch, SOLR-13509.patch > > > The error exists in Solr 8.1.1 and didn't occur in Solr 8.0 and 7.x. > Running this simple JSON Facet against the techproducts example (in cloud > mode) succeeds as expected: > {code:java} > curl http://localhost:8983/solr/techproducts/select -d ' > q=*:*& > omitHeader=false& > json.facet={ > "max_price" : "max(price)" > }{code} > But as soon you omit Headers it results in a NullPointerException (which > didn't happen in earlier Solr versions): > {code:java} > curl http://localhost:8983/solr/techproducts/select -d ' > q=*:*& > omitHeader=true& > json.facet={ > "max_price" : "max(price)" > }' > {code} > Exception: > {noformat} > 2019-06-03 12:40:11.446 ERROR (qtp67730604-361) [c:techproducts s:shard2 > r:core_node7 x:techproducts_shard2_replica_n4] o.a.s.h.RequestHandlerBase > java.lang.NullPointerException > at > org.apache.solr.search.facet.FacetModule.handleResponses(FacetModule.java:284) > at > org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:423) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566) > at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756) > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at org.eclipse.jetty.server.Server.handle(Server.java:502) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) > at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) > at java.base/java.lang.Thread.run(Thread.java:834) > 2019-06-03 12:40:11.447 INFO (qtp67730604-361) [c:techproducts s:shard2 > r:core_node7 x:techproducts_shard2_replica_n4] o.a.s.c.S.Request > [techproducts_shard2_replica_n4] webapp=/solr path=/select > params={q=*:*&json.facet={%0a++"max_price"+:+"max(price)"%0a}&omitHeader=true} > hits=32 status=500 QTime=11 > 2019-06-03 12:40:11.447 ERROR (qtp67730604-361) [c:techproducts s:shard2 > r:core_node7 x:techproducts_shard2_replica_n4] o.a.s.s.HttpSolrCall > null:java.lang.NullPointerException > at > org.apache.solr.search.facet.FacetModule.handleResponses(FacetModule.java:284) > at > org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:423) > at > org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:199) > at org.apache.solr.core.SolrCore.execute(SolrCore.java:2566) > at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:756) > at org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:542) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:397) > at > org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:343) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1602) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1588) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1557) > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:220) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:335) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at org.eclipse.jetty.server.Server.handle(Server.java:502) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) > at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) > at java.base/java.lang.Thread.run(Thread.java:834) > {noformat} > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org