[jira] [Commented] (SOLR-3449) QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when has maxDoc=0 Segment
[ https://issues.apache.org/jira/browse/SOLR-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15538838#comment-15538838 ] Alexandre Rafalovitch commented on SOLR-3449: - I believe this functionality has now been rewritten several times. Can we close this issue and open a new one if somebody will hit this again? > QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when > has maxDoc=0 Segment > --- > > Key: SOLR-3449 > URL: https://issues.apache.org/jira/browse/SOLR-3449 > Project: Solr > Issue Type: Bug > Components: search >Affects Versions: 3.5, 3.6 >Reporter: Linbin Chen > Fix For: 3.6.3 > > Attachments: SOLR-3449.patch > > > have index > {code} > Segment name=_9, offest=[docBase=0, maxDoc=245] idx=0 > Segment name=_a, offest=[docBase=245, maxDoc=3] idx=1 > Segment name=_b, offest=[docBase=248, maxDoc=0] idx=2 > Segment name=_c, offest=[docBase=248, maxDoc=1] idx=3 > Segment name=_d, offest=[docBase=249, maxDoc=0] idx=4 > Segment name=_e, offest=[docBase=249, maxDoc=1] idx=5 > Segment name=_f, offest=[docBase=250, maxDoc=0] idx=6 > Segment name=_g, offest=[docBase=250, maxDoc=3] idx=7 > Segment name=_h, offest=[docBase=253, maxDoc=0] idx=8 > {code} > maxDoc=0 's Segment maybe create by mergeIndexes。(can make sure maxDoc=0 's > segment not merge, but when couldn't control merge indexes) > when use fsv=true get sort values, hit docId=249 throw > ArrayIndexOutOfBoundsException > {code} > 2012-5-11 14:28:28 org.apache.solr.common.SolrException log > ERROR: java.lang.ArrayIndexOutOfBoundsException: 0 > at > org.apache.lucene.search.FieldComparator$LongComparator.copy(FieldComparator.java:600) > at > org.apache.solr.handler.component.QueryComponent.doFieldSortValues(QueryComponent.java:463) > at > org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:400) > {code} > reason: > {code} > //idx 012345678 > //int[] maxDocs={245, 3, 0, 1, 0, 1, 0, 3, 0}; > int[] offsets = { 0, 245, 248, 248, 249, 249, 250, 250, 253}; > org.apache.solr.search.SolrIndexReader.readerIndex(249, offsets) return idx=4 > not 5。 > {code} > correct idx=5。 > patch > {code} > Index: solr/core/src/java/org/apache/solr/search/SolrIndexReader.java > === > --- solr/core/src/java/org/apache/solr/search/SolrIndexReader.java > (revision 1337028) > +++ solr/core/src/java/org/apache/solr/search/SolrIndexReader.java > (working copy) > @@ -138,6 +138,16 @@ >} >else { > // exact match on the offset. > + //skip equal offest > + for(int i=mid+1; i<=high; i++) { > + if(doc == offsets[i]) { > + //skip offests[i] == doc > + mid = i; > + } else { > + //stop skip offest > + break; > + } > + } > return mid; >} > } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-3449) QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when has maxDoc=0 Segment
[ https://issues.apache.org/jira/browse/SOLR-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13469462#comment-13469462 ] Yonik Seeley commented on SOLR-3449: Hmmm, that's interesting... I don't ever recall seeing 0 document segments before. I wonder if this could possibly be a problem in the 4x line? SolrIndexReader no longer exists in 4.0, but the equivalent functionality to locate a segment in lucene could have the same issues (if it's possible to have 0 document sub-readers in 4x). QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when has maxDoc=0 Segment --- Key: SOLR-3449 URL: https://issues.apache.org/jira/browse/SOLR-3449 Project: Solr Issue Type: Bug Components: search Affects Versions: 3.5, 3.6 Reporter: Linbin Chen Fix For: 3.6.2 Attachments: SOLR-3449.patch have index {code} Segment name=_9, offest=[docBase=0, maxDoc=245] idx=0 Segment name=_a, offest=[docBase=245, maxDoc=3] idx=1 Segment name=_b, offest=[docBase=248, maxDoc=0] idx=2 Segment name=_c, offest=[docBase=248, maxDoc=1] idx=3 Segment name=_d, offest=[docBase=249, maxDoc=0] idx=4 Segment name=_e, offest=[docBase=249, maxDoc=1] idx=5 Segment name=_f, offest=[docBase=250, maxDoc=0] idx=6 Segment name=_g, offest=[docBase=250, maxDoc=3] idx=7 Segment name=_h, offest=[docBase=253, maxDoc=0] idx=8 {code} maxDoc=0 's Segment maybe create by mergeIndexes。(can make sure maxDoc=0 's segment not merge, but when couldn't control merge indexes) when use fsv=true get sort values, hit docId=249 throw ArrayIndexOutOfBoundsException {code} 2012-5-11 14:28:28 org.apache.solr.common.SolrException log ERROR: java.lang.ArrayIndexOutOfBoundsException: 0 at org.apache.lucene.search.FieldComparator$LongComparator.copy(FieldComparator.java:600) at org.apache.solr.handler.component.QueryComponent.doFieldSortValues(QueryComponent.java:463) at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:400) {code} reason: {code} //idx 012345678 //int[] maxDocs={245, 3, 0, 1, 0, 1, 0, 3, 0}; int[] offsets = { 0, 245, 248, 248, 249, 249, 250, 250, 253}; org.apache.solr.search.SolrIndexReader.readerIndex(249, offsets) return idx=4 not 5。 {code} correct idx=5。 patch {code} Index: solr/core/src/java/org/apache/solr/search/SolrIndexReader.java === --- solr/core/src/java/org/apache/solr/search/SolrIndexReader.java (revision 1337028) +++ solr/core/src/java/org/apache/solr/search/SolrIndexReader.java (working copy) @@ -138,6 +138,16 @@ } else { // exact match on the offset. + //skip equal offest + for(int i=mid+1; i=high; i++) { + if(doc == offsets[i]) { + //skip offests[i] == doc + mid = i; + } else { + //stop skip offest + break; + } + } return mid; } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org
[jira] [Commented] (SOLR-3449) QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when has maxDoc=0 Segment
[ https://issues.apache.org/jira/browse/SOLR-3449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13466545#comment-13466545 ] Bruce Butterfield commented on SOLR-3449: - This patch fixed an issue in our system; we do lots of merges and were getting sporadic ArrayIndexOutOfBounds execeptions when including any sort parameters to the query. Please incorporate this into 3.6.2. QueryComponent.doFieldSortValues throw ArrayIndexOutOfBoundsException when has maxDoc=0 Segment --- Key: SOLR-3449 URL: https://issues.apache.org/jira/browse/SOLR-3449 Project: Solr Issue Type: Bug Components: search Affects Versions: 3.5, 3.6 Reporter: Linbin Chen Fix For: 3.6.2 Attachments: SOLR-3449.patch have index {code} Segment name=_9, offest=[docBase=0, maxDoc=245] idx=0 Segment name=_a, offest=[docBase=245, maxDoc=3] idx=1 Segment name=_b, offest=[docBase=248, maxDoc=0] idx=2 Segment name=_c, offest=[docBase=248, maxDoc=1] idx=3 Segment name=_d, offest=[docBase=249, maxDoc=0] idx=4 Segment name=_e, offest=[docBase=249, maxDoc=1] idx=5 Segment name=_f, offest=[docBase=250, maxDoc=0] idx=6 Segment name=_g, offest=[docBase=250, maxDoc=3] idx=7 Segment name=_h, offest=[docBase=253, maxDoc=0] idx=8 {code} maxDoc=0 's Segment maybe create by mergeIndexes。(can make sure maxDoc=0 's segment not merge, but when couldn't control merge indexes) when use fsv=true get sort values, hit docId=249 throw ArrayIndexOutOfBoundsException {code} 2012-5-11 14:28:28 org.apache.solr.common.SolrException log ERROR: java.lang.ArrayIndexOutOfBoundsException: 0 at org.apache.lucene.search.FieldComparator$LongComparator.copy(FieldComparator.java:600) at org.apache.solr.handler.component.QueryComponent.doFieldSortValues(QueryComponent.java:463) at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:400) {code} reason: {code} //idx 012345678 //int[] maxDocs={245, 3, 0, 1, 0, 1, 0, 3, 0}; int[] offsets = { 0, 245, 248, 248, 249, 249, 250, 250, 253}; org.apache.solr.search.SolrIndexReader.readerIndex(249, offsets) return idx=4 not 5。 {code} correct idx=5。 patch {code} Index: solr/core/src/java/org/apache/solr/search/SolrIndexReader.java === --- solr/core/src/java/org/apache/solr/search/SolrIndexReader.java (revision 1337028) +++ solr/core/src/java/org/apache/solr/search/SolrIndexReader.java (working copy) @@ -138,6 +138,16 @@ } else { // exact match on the offset. + //skip equal offest + for(int i=mid+1; i=high; i++) { + if(doc == offsets[i]) { + //skip offests[i] == doc + mid = i; + } else { + //stop skip offest + break; + } + } return mid; } } {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira - To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org