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

Problem with group paging (or JavaBinCodec conversion error for the request)

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 3.5, 3.6
    • Fix Version/s: None
    • Component/s: clients - java, search
    • Environment:

      Problem first encountered in running Solr 3.5 under Ubuntu. Now upgraded to Solr 3.6 but the problem is still present.

      Description

      With Solr 3.6 the following Solr request fails:
      (using the example configuration)

      SolrQuery solrQuery = new SolrQuery();
      solrQuery.setQuery("tshirt");
      solrQuery.setQueryType("search");
      solrQuery.add(GroupParams.GROUP, "true");
      solrQuery.add(GroupParams.GROUP_FORMAT, "grouped");
      solrQuery.add(GroupParams.GROUP_MAIN, "true");
      solrQuery.add(GroupParams.GROUP_FIELD, "manu_exact");
      solrQuery.setStart(30);
      solrQuery.setRows(30);

      org.apache.solr.client.solrj.SolrServerException: Error executing query
      at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:95) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:311) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      // at com.core.util.integration.solr.dao.SolrUtil.executeQuery(SolrUtil.java:204) ~[classes/:na]
      // at com.blapit.integration.v1.deals.restendpoints.endpoints.test.DealsByKeywordSearchEndpointFuncTest.test(DealsByKeywordSearchEndpointFuncTest.java:40) [classes/:na]
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_147-icedtea]
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_147-icedtea]
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_147-icedtea]
      at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_147-icedtea]
      at junit.framework.TestCase.runTest(TestCase.java:168) [junit-4.10.jar:na]
      at junit.framework.TestCase.runBare(TestCase.java:134) [junit-4.10.jar:na]
      at junit.framework.TestResult$1.protect(TestResult.java:110) [junit-4.10.jar:na]
      at junit.framework.TestResult.runProtected(TestResult.java:128) [junit-4.10.jar:na]
      at junit.framework.TestResult.run(TestResult.java:113) [junit-4.10.jar:na]
      at junit.framework.TestCase.run(TestCase.java:124) [junit-4.10.jar:na]
      at junit.framework.TestSuite.runTest(TestSuite.java:243) [junit-4.10.jar:na]
      at junit.framework.TestSuite.run(TestSuite.java:238) [junit-4.10.jar:na]
      at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) [junit-4.10.jar:na]
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) [.cp/:na]
      Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List
      at org.apache.solr.common.util.JavaBinCodec.readSolrDocumentList(JavaBinCodec.java:340) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:207) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readOrderedMap(JavaBinCodec.java:111) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:174) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:102) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.java:41) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:469) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      ... 22 common frames omitted

      If I change the start parameter to something else:

      org.apache.solr.client.solrj.SolrServerException: Error executing query
      at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:95) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.SolrServer.query(SolrServer.java:311) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      // at com.core.util.integration.solr.dao.SolrUtil.executeQuery(SolrUtil.java:204) ~[classes/:na]
      // at com.blapit.integration.v1.deals.restendpoints.endpoints.test.DealsByKeywordSearchEndpointFuncTest.test(DealsByKeywordSearchEndpointFuncTest.java:40) [classes/:na]
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_147-icedtea]
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_147-icedtea]
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_147-icedtea]
      at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_147-icedtea]
      at junit.framework.TestCase.runTest(TestCase.java:168) [junit-4.10.jar:na]
      at junit.framework.TestCase.runBare(TestCase.java:134) [junit-4.10.jar:na]
      at junit.framework.TestResult$1.protect(TestResult.java:110) [junit-4.10.jar:na]
      at junit.framework.TestResult.runProtected(TestResult.java:128) [junit-4.10.jar:na]
      at junit.framework.TestResult.run(TestResult.java:113) [junit-4.10.jar:na]
      at junit.framework.TestCase.run(TestCase.java:124) [junit-4.10.jar:na]
      at junit.framework.TestSuite.runTest(TestSuite.java:243) [junit-4.10.jar:na]
      at junit.framework.TestSuite.run(TestSuite.java:238) [junit-4.10.jar:na]
      at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83) [junit-4.10.jar:na]
      at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) [.cp/:na]
      at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) [.cp/:na]
      Caused by: java.lang.IndexOutOfBoundsException: Index: 16, Size: 14
      at java.util.ArrayList.rangeCheck(ArrayList.java:604) ~[na:1.7.0_147-icedtea]
      at java.util.ArrayList.get(ArrayList.java:382) ~[na:1.7.0_147-icedtea]
      at org.apache.solr.common.util.JavaBinCodec.readExternString(JavaBinCodec.java:708) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:178) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readSolrDocumentList(JavaBinCodec.java:340) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:207) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readOrderedMap(JavaBinCodec.java:111) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.readVal(JavaBinCodec.java:174) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.common.util.JavaBinCodec.unmarshal(JavaBinCodec.java:102) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.BinaryResponseParser.processResponse(BinaryResponseParser.java:41) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:469) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:249) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      at org.apache.solr.client.solrj.request.QueryRequest.process(QueryRequest.java:89) ~[apache-solr-solrj-3.6.0.jar:3.6.0 1310449 - rmuir - 2012-04-06 11:34:08]
      ... 22 common frames omitted

      The following observations might help finding the problem:
      1) The query works when not using SolrJ (remember Solr will append &wt=javabin&version=2 to the query sent to Solr) - thereby indicating that this is possibly not a problem with the group functionality itself but with the JavaBinCodec.
      2) The responses I get from the server using the JavaBinCodec differs between the requests (even though they all should return zero results) - so there is a difference in the response from a server which can't be parsed. Maybe these differences in the responses received from the server is correct and the error is in the clients JavaBinCodec?
      3) Still searching for a keyword but setting the start parameter to zero - the query succeeds.
      4) Not searching for a keyword all paging parameters work.

      Hope that helps... So iets either in the client's JavaBinCodec, the server's JavaBinCodec, or something in the group functionality itself. And the issue only appears (as indicated in 3 and 4 above) when doing keyword searches for pages that don't start at zero.

      Thank you very much for any help. Please let me know if I can assist with anything.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              dutoitns Serdyn du Toit
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: