SOLR-15071: Fix ArrayIndexOutOfBoundsException in contrib/ltr SolrFeatureScorer (#2196)

This commit is contained in:
Christine Poerschke 2021-01-22 13:34:58 +00:00 committed by GitHub
parent fb88b0268a
commit 32e95ddb3f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 7 deletions

View File

@ -366,6 +366,9 @@ Bug Fixes
* SOLR-15073: Fix ClassCastException in SystemInfoHandler.getSecurityInfo. (Nikolay Ivanov, Christine Poerschke)
* SOLR-15071: Fix ArrayIndexOutOfBoundsException in contrib/ltr SolrFeatureScorer.
(Florin Babes, Ovidiu Mihalcea, David Smiley, Christine Poerschke)
Other Changes
---------------------

View File

@ -27,7 +27,6 @@ import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryVisitor;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.TwoPhaseIterator;
import org.apache.lucene.search.Weight;
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.RamUsageEstimator;
@ -365,10 +364,9 @@ public abstract class Feature extends Query implements Accountable {
return in.iterator();
}
@Override
public TwoPhaseIterator twoPhaseIterator() {
return in.twoPhaseIterator();
}
// Currently (Q1 2021) we intentionally don't delegate twoPhaseIterator()
// because it doesn't always work and we don't yet know why, please see
// SOLR-15071 for more details.
@Override
public int advanceShallow(int target) throws IOException {

View File

@ -21,7 +21,6 @@ import org.apache.solr.ltr.TestRerankBase;
import org.apache.solr.ltr.model.LinearModel;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
public class TestEdisMaxSolrFeature extends TestRerankBase {
@ -75,7 +74,6 @@ public class TestEdisMaxSolrFeature extends TestRerankBase {
assertJQ("/query" + query.toQueryString(), "/response/numFound/==4");
}
@Ignore("SOLR-15071")
@Test
public void testEdisMaxSolrFeatureCustomMM() throws Exception {
loadFeature(

View File

@ -30,6 +30,9 @@ public class TestFeature extends SolrTestCase {
for (final Method scorerClassMethod : Scorer.class.getDeclaredMethods()) {
try {
// the FilterFeatureScorer may simply inherit Scorer's default implementation
if (scorerClassMethod.getName().equals("twoPhaseIterator")) continue;
// the FilterFeatureScorer's implementation does not influence its parent Weight
if (scorerClassMethod.getName().equals("getWeight")) continue;