You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/12/01 19:01:54 UTC

svn commit: r1642725 - in /lucene/dev/branches/lucene2878/lucene: codecs/src/java/org/apache/lucene/codecs/memory/ core/src/test/org/apache/lucene/search/posfilter/ test-framework/src/java/org/apache/lucene/util/

Author: romseygeek
Date: Mon Dec  1 18:01:54 2014
New Revision: 1642725

URL: http://svn.apache.org/r1642725
Log:
Fix DirectPostingsFormat pos exhaustion

Modified:
    lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java
    lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java
    lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java

Modified: lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java (original)
+++ lucene/dev/branches/lucene2878/lucene/codecs/src/java/org/apache/lucene/codecs/memory/DirectPostingsFormat.java Mon Dec  1 18:01:54 2014
@@ -1953,7 +1953,8 @@ public final class DirectPostingsFormat 
 
     @Override
     public int nextPosition() {
-      assert skipPositions > 0;
+      if (skipPositions <= 0)
+        return NO_MORE_POSITIONS;
       skipPositions--;
       pos = postings[upto++];
       if (hasOffsets) {
@@ -2301,6 +2302,8 @@ public final class DirectPostingsFormat 
     @Override
     public int nextPosition() {
       posUpto += posJump;
+      if (posUpto >= curPositions.length)
+        return NO_MORE_POSITIONS;
       return curPositions[posUpto];
     }
 

Modified: lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java (original)
+++ lucene/dev/branches/lucene2878/lucene/core/src/test/org/apache/lucene/search/posfilter/TestIntervalScoring.java Mon Dec  1 18:01:54 2014
@@ -17,16 +17,14 @@ package org.apache.lucene.search.posfilt
  * limitations under the License.
  */
 
+import java.io.IOException;
+
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.TextField;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.RegexpQuery;
 import org.apache.lucene.search.TopDocs;
-import org.apache.lucene.search.posfilter.OrderedNearQuery;
-import org.junit.Assert;
-
-import java.io.IOException;
 
 public class TestIntervalScoring extends IntervalTestBase {
 

Modified: lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1642725&r1=1642724&r2=1642725&view=diff
==============================================================================
--- lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/lucene2878/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Mon Dec  1 18:01:54 2014
@@ -92,7 +92,10 @@ import org.apache.lucene.index.*;
 import org.apache.lucene.index.IndexReader.ReaderClosedListener;
 import org.apache.lucene.index.TermsEnum.SeekStatus;
 import org.apache.lucene.search.AssertingIndexSearcher;
+import org.apache.lucene.search.DocIdSet;
 import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.search.Filter;
+import org.apache.lucene.search.FilterCachingPolicy;
 import org.apache.lucene.search.IndexSearcher;
 import org.apache.lucene.search.QueryUtils.FCInvisibleMultiReader;
 import org.apache.lucene.store.BaseDirectoryWrapper;
@@ -421,6 +424,19 @@ public abstract class LuceneTestCase ext
   static {
     CORE_DIRECTORIES = new ArrayList<>(FS_DIRECTORIES);
     CORE_DIRECTORIES.add("RAMDirectory");
+  }
+
+  /** A {@link org.apache.lucene.search.FilterCachingPolicy} that randomly caches. */
+  public static final FilterCachingPolicy MAYBE_CACHE_POLICY = new FilterCachingPolicy() {
+
+    @Override
+    public void onCache(Filter filter) {}
+
+    @Override
+    public boolean shouldCache(Filter filter, LeafReaderContext context, DocIdSet set) throws IOException {
+      return random().nextBoolean();
+    }
+
   };
   
   // -----------------------------------------------------------------