You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/11/03 22:41:28 UTC

svn commit: r1405426 - in /lucene/dev/branches/branch_4x: ./ lucene/ lucene/core/ lucene/core/src/java/org/apache/lucene/index/ lucene/core/src/java/org/apache/lucene/util/ lucene/core/src/test/org/apache/lucene/index/

Author: mikemccand
Date: Sat Nov  3 21:41:27 2012
New Revision: 1405426

URL: http://svn.apache.org/viewvc?rev=1405426&view=rev
Log:
LUCENE-4529: fix test bug, null out the first buffer in Int/ByteBlockPool on reset

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/lucene/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/   (props changed)
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/TermsHash.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/IntBlockPool.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java?rev=1405426&r1=1405425&r2=1405426&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java Sat Nov  3 21:41:27 2012
@@ -582,6 +582,9 @@ class DocumentsWriterPerThread {
           infoStream.message("DWPT", "flush: write " + delCount + " deletes gen=" + flushedSegment.segmentInfo.getDelGen());
         }
 
+        // TODO: we should prune the segment if it's 100%
+        // deleted... but merge will also catch it.
+
         // TODO: in the NRT case it'd be better to hand
         // this del vector over to the
         // shortly-to-be-opened SegmentReader and let it

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/TermsHash.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/TermsHash.java?rev=1405426&r1=1405425&r2=1405426&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/TermsHash.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/TermsHash.java Sat Nov  3 21:41:27 2012
@@ -90,8 +90,8 @@ final class TermsHash extends InvertedDo
   // Clear all state
   void reset() {
     // we don't reuse so we drop everything and don't fill with 0
-    intPool.reset(); 
-    bytePool.reset();
+    intPool.reset(false, false); 
+    bytePool.reset(false, false);
   }
 
   @Override

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java?rev=1405426&r1=1405425&r2=1405426&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/ByteBlockPool.java Sat Nov  3 21:41:27 2012
@@ -21,8 +21,6 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.lucene.store.DataOutput;
-import org.apache.lucene.util.IntBlockPool.SliceReader;
-import org.apache.lucene.util.IntBlockPool.SliceWriter;
 
 import static org.apache.lucene.util.RamUsageEstimator.NUM_BYTES_OBJECT_REF;
 
@@ -183,6 +181,7 @@ public final class ByteBlockPool {
        buffer = buffers[0];
      } else {
        bufferUpto = -1;
+       buffers[0] = null;
        byteUpto = BYTE_BLOCK_SIZE;
        byteOffset = -BYTE_BLOCK_SIZE;
        buffer = null;

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/IntBlockPool.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/IntBlockPool.java?rev=1405426&r1=1405425&r2=1405426&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/IntBlockPool.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/util/IntBlockPool.java Sat Nov  3 21:41:27 2012
@@ -121,22 +121,23 @@ public final class IntBlockPool {
      
       if (bufferUpto > 0 || !reuseFirst) {
         final int offset = reuseFirst ? 1 : 0;  
-       // Recycle all but the first buffer
-       allocator.recycleIntBlocks(buffers, offset, 1+bufferUpto);
-       Arrays.fill(buffers, offset, bufferUpto+1, null);
-     }
-     if (reuseFirst) {
-       // Re-use the first buffer
-       bufferUpto = 0;
-       intUpto = 0;
-       intOffset = 0;
-       buffer = buffers[0];
-     } else {
-       bufferUpto = -1;
-       intUpto = INT_BLOCK_SIZE;
-       intOffset = -INT_BLOCK_SIZE;
-       buffer = null;
-     }
+        // Recycle all but the first buffer
+        allocator.recycleIntBlocks(buffers, offset, 1+bufferUpto);
+        Arrays.fill(buffers, offset, bufferUpto+1, null);
+      }
+      if (reuseFirst) {
+        // Re-use the first buffer
+        bufferUpto = 0;
+        intUpto = 0;
+        intOffset = 0;
+        buffer = buffers[0];
+      } else {
+        bufferUpto = -1;
+        buffers[0] = null;
+        intUpto = INT_BLOCK_SIZE;
+        intOffset = -INT_BLOCK_SIZE;
+        buffer = null;
+      }
     }
   }
   

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java?rev=1405426&r1=1405425&r2=1405426&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestStressIndexing2.java Sat Nov  3 21:41:27 2012
@@ -114,7 +114,7 @@ public class TestStressIndexing2 extends
       Directory dir1 = newDirectory();
       Directory dir2 = newDirectory();
       if (VERBOSE) {
-        System.out.println("  nThreads=" + nThreads + " iter=" + iter + " range=" + range + " doPooling=" + doReaderPooling + " maxThreadStates=" + maxThreadStates + " sameFieldOrder=" + sameFieldOrder + " mergeFactor=" + mergeFactor);
+        System.out.println("  nThreads=" + nThreads + " iter=" + iter + " range=" + range + " doPooling=" + doReaderPooling + " maxThreadStates=" + maxThreadStates + " sameFieldOrder=" + sameFieldOrder + " mergeFactor=" + mergeFactor + " maxBufferedDocs=" + maxBufferedDocs);
       }
       Map<String,Document> docs = indexRandom(nThreads, iter, range, dir1, maxThreadStates, doReaderPooling);
       if (VERBOSE) {
@@ -334,9 +334,10 @@ public class TestStressIndexing2 extends
     if (fields == null) {
       // make sure r1 is in fact empty (eg has only all
       // deleted docs):
+      Bits liveDocs = MultiFields.getLiveDocs(r1);
       DocsEnum docs = null;
       while(termsEnum.next() != null) {
-        docs = _TestUtil.docs(random(), termsEnum, null, docs, 0);
+        docs = _TestUtil.docs(random(), termsEnum, liveDocs, docs, 0);
         while(docs.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {
           fail("r1 is not empty but r2 is");
         }