Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-9616

Solr throws exception when expand=true on empty result

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 6.2.1, 6.3
    • Fix Version/s: 6.4, 7.0
    • Security Level: Public (Default Security Level. Issues are Public)
    • Labels:
      None

      Description

      When i run a query with expand=true with field collapsing and the result set is empty an exception is thrown:

      solr:8984/solr/core_en/select?&fq=

      {!collapse field=pid}

      &expand=true&expand.rows=10

      Produces:

      "error":{
      "msg":"Index: 0, Size: 0",
      "trace":"java.lang.IndexOutOfBoundsException: Index: 0, Size: 0\n\tat java.util.ArrayList.rangeCheck(ArrayList.java:653)\n\tat java.util.ArrayList.get(ArrayList.java:429)\n\tat java.util.Collections$UnmodifiableList.get(Collections.java:1309)\n\tat org.apache.solr.handler.component.ExpandComponent.process(ExpandComponent.java:269)\n\tat org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:293)\n\tat org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:156)\n\tat org.apache.solr.core.SolrCore.execute(SolrCore.java:2036)\n\tat org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:657)\n\tat org.apache.solr.servlet.HttpSolrCall.call(HttpSolrCall.java:464)\n\tat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:257)\n\tat org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:208)\n\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)\n\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1160)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1092)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)\n\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:518)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)\n\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:246)\n\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:156)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)\n\tat java.lang.Thread.run(Thread.java:745)\n",
      "code":500}}

      Instead i would assume to get an empty result.

      Is this a bug?

        Issue Links

          Activity

          Hide
          timo.schmidt Timo Hund added a comment -

          The behaviour is the same in 6.1.0

          Show
          timo.schmidt Timo Hund added a comment - The behaviour is the same in 6.1.0
          Hide
          timo.schmidt Timo Hund added a comment -

          6.0.0 is not affected

          Show
          timo.schmidt Timo Hund added a comment - 6.0.0 is not affected
          Hide
          githubbot ASF GitHub Bot added a comment -

          GitHub user timohund opened a pull request:

          https://github.com/apache/lucene-solr/pull/106

          SOLR-9616 Return empty result, when expand component is used with empty result set.

          This pull request:

          • Add's early return in expand component, when there is nothing to expand
          • Add's a regression test for SOLR-9616

          Since i am very new to the code i am not sure if this has any other side effects, by checking the other tests it looks good for me, but help is appreciated.

          You can merge this pull request into a Git repository by running:

          $ git pull https://github.com/timohund/lucene-solr SOLR-9616

          Alternatively you can review and apply these changes as the patch at:

          https://github.com/apache/lucene-solr/pull/106.patch

          To close this pull request, make a commit to your master/trunk branch
          with (at least) the following in the commit message:

          This closes #106


          commit 692dec547d22b366099fc328507a847f1e0cf2c8
          Author: Timo Schmidt <timo.hund@yahoo.com>
          Date: 2016-10-31T13:53:52Z

          SOLR-9616 Return empty result, when expand component is used with empty result set.

          • Add's early return in expand component, when there is nothing to expand
          • Add's a regression test for SOLR-9616

          Show
          githubbot ASF GitHub Bot added a comment - GitHub user timohund opened a pull request: https://github.com/apache/lucene-solr/pull/106 SOLR-9616 Return empty result, when expand component is used with empty result set. This pull request: Add's early return in expand component, when there is nothing to expand Add's a regression test for SOLR-9616 Since i am very new to the code i am not sure if this has any other side effects, by checking the other tests it looks good for me, but help is appreciated. You can merge this pull request into a Git repository by running: $ git pull https://github.com/timohund/lucene-solr SOLR-9616 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/lucene-solr/pull/106.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #106 commit 692dec547d22b366099fc328507a847f1e0cf2c8 Author: Timo Schmidt <timo.hund@yahoo.com> Date: 2016-10-31T13:53:52Z SOLR-9616 Return empty result, when expand component is used with empty result set. Add's early return in expand component, when there is nothing to expand Add's a regression test for SOLR-9616
          Hide
          joel.bernstein Joel Bernstein added a comment -

          This is quite a nasty bug. Wondering if this is a recent regression, as the expand component has been around quite a long time in Solr 4.

          Show
          joel.bernstein Joel Bernstein added a comment - This is quite a nasty bug. Wondering if this is a recent regression, as the expand component has been around quite a long time in Solr 4.
          Hide
          joel.bernstein Joel Bernstein added a comment -

          Ah just read the above comments, looks like the bug was introduced in 6.1?

          Show
          joel.bernstein Joel Bernstein added a comment - Ah just read the above comments, looks like the bug was introduced in 6.1?
          Hide
          joel.bernstein Joel Bernstein added a comment -

          Timo Hund, in looking through the stack track trace and reviewing the code, it appears that the index you were searching on was empty. Was that the case?

          Show
          joel.bernstein Joel Bernstein added a comment - Timo Hund , in looking through the stack track trace and reviewing the code, it appears that the index you were searching on was empty. Was that the case?
          Hide
          timo.schmidt Timo Hund added a comment -

          Joel Bernstein, yes as you described it happens with an empty index and seems to be introduced with 6.0

          Show
          timo.schmidt Timo Hund added a comment - Joel Bernstein, yes as you described it happens with an empty index and seems to be introduced with 6.0
          Hide
          githubbot ASF GitHub Bot added a comment -

          Github user timohund commented on the issue:

          https://github.com/apache/lucene-solr/pull/106

          Is there anything that i can do, to help to resolve this issue?

          Show
          githubbot ASF GitHub Bot added a comment - Github user timohund commented on the issue: https://github.com/apache/lucene-solr/pull/106 Is there anything that i can do, to help to resolve this issue?
          Hide
          timo.schmidt Timo Hund added a comment - - edited

          Joel Bernstein Is there anything i can do to help? This issue might block our release. I also checked with 6.3.0 again and the problem exists there as well.

          Show
          timo.schmidt Timo Hund added a comment - - edited Joel Bernstein Is there anything i can do to help? This issue might block our release. I also checked with 6.3.0 again and the problem exists there as well.
          Hide
          hossman Hoss Man added a comment -

          I'm not in a position to apply/test the patch right now, but a quick read looks straight forward and the test seems solid: +1 from me.

          Show
          hossman Hoss Man added a comment - I'm not in a position to apply/test the patch right now, but a quick read looks straight forward and the test seems solid: +1 from me.
          Hide
          ichattopadhyaya Ishan Chattopadhyaya added a comment -

          Hoss Man, I can take a look.

          Show
          ichattopadhyaya Ishan Chattopadhyaya added a comment - Hoss Man , I can take a look.
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit e64bcb37ffe9ccbe1c88cb451ff147de774aec8e in lucene-solr's branch refs/heads/master from Ishan Chattopadhyaya
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=e64bcb3 ]

          SOLR-9616 Solr throws exception when expand=true on empty index

          Show
          jira-bot ASF subversion and git services added a comment - Commit e64bcb37ffe9ccbe1c88cb451ff147de774aec8e in lucene-solr's branch refs/heads/master from Ishan Chattopadhyaya [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=e64bcb3 ] SOLR-9616 Solr throws exception when expand=true on empty index
          Hide
          jira-bot ASF subversion and git services added a comment -

          Commit 0c3fb754454d5bb43c4511a68ae4d362c9fb40bf in lucene-solr's branch refs/heads/branch_6x from Ishan Chattopadhyaya
          [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=0c3fb75 ]

          SOLR-9616 Solr throws exception when expand=true on empty index

          Show
          jira-bot ASF subversion and git services added a comment - Commit 0c3fb754454d5bb43c4511a68ae4d362c9fb40bf in lucene-solr's branch refs/heads/branch_6x from Ishan Chattopadhyaya [ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=0c3fb75 ] SOLR-9616 Solr throws exception when expand=true on empty index
          Hide
          ichattopadhyaya Ishan Chattopadhyaya added a comment -

          Thanks Timo Hund!

          Show
          ichattopadhyaya Ishan Chattopadhyaya added a comment - Thanks Timo Hund !

            People

            • Assignee:
              ichattopadhyaya Ishan Chattopadhyaya
              Reporter:
              timo.schmidt Timo Hund
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development