You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/06/03 13:20:32 UTC

svn commit: r1599477 - in /lucene/dev/branches/branch_4x: lucene/ lucene/core/src/java/org/apache/lucene/codecs/lucene3x/ lucene/core/src/java/org/apache/lucene/store/ lucene/core/src/test/org/apache/lucene/codecs/lucene3x/ lucene/facet/src/test/org/ap...

Author: rmuir
Date: Tue Jun  3 11:20:31 2014
New Revision: 1599477

URL: http://svn.apache.org/r1599477
Log:
LUCENE-5727: Remove indexoutput.seek

Added:
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreflexRWSegmentTermEnum.java   (with props)
Modified:
    lucene/dev/branches/branch_4x/lucene/CHANGES.txt
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xFields.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/SegmentTermEnum.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/TermInfosReader.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexOutput.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java
    lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java
    lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene3x/TestTermInfosReaderIndex.java
    lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java
    lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWPostingsFormat.java
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/TermInfosWriter.java
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java
    lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/ThrottledIndexOutput.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/hdfs/NullIndexOutput.java

Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Tue Jun  3 11:20:31 2014
@@ -46,6 +46,8 @@ Changes in Backwards Compatibility Polic
 * LUCENE-4371: Removed IndexInputSlicer and Directory.createSlicer() and replaced
   with IndexInput.slice(). (Robert Muir)
 
+* LUCENE-5727: Remove IndexOutput.seek (Robert Muir)
+
 API Changes
 
 * LUCENE-5725: MoreLikeThis#like now accetps multiple values per field.

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xFields.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xFields.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xFields.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xFields.java Tue Jun  3 11:20:31 2014
@@ -82,7 +82,7 @@ class Lucene3xFields extends FieldsProdu
     
     boolean success = false;
     try {
-      TermInfosReader r = new TermInfosReader(dir, info.name, fieldInfos, context, indexDivisor);    
+      TermInfosReader r = newTermInfosReader(dir, info.name, fieldInfos, context, indexDivisor);    
       if (indexDivisor == -1) {
         tisNoIndex = r;
       } else {
@@ -133,6 +133,11 @@ class Lucene3xFields extends FieldsProdu
   protected boolean sortTermsByUnicode() {
     return true;
   }
+  
+  // only overridden during testing
+  protected TermInfosReader newTermInfosReader(Directory dir, String name, FieldInfos fieldInfos, IOContext context, int indexDivisor) throws IOException {
+    return new TermInfosReader(dir, name, fieldInfos, context, indexDivisor);    
+  }
 
   @Override
   public Iterator<String> iterator() {

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/SegmentTermEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/SegmentTermEnum.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/SegmentTermEnum.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/SegmentTermEnum.java Tue Jun  3 11:20:31 2014
@@ -32,7 +32,7 @@ import org.apache.lucene.index.IndexForm
  * @lucene.experimental */
 
 @Deprecated
-final class SegmentTermEnum implements Cloneable,Closeable {
+class SegmentTermEnum implements Cloneable,Closeable {
   private IndexInput input;
   FieldInfos fieldInfos;
   long size;
@@ -90,7 +90,7 @@ final class SegmentTermEnum implements C
       if (format < FORMAT_CURRENT)
         throw new IndexFormatTooNewException(input, format, FORMAT_MINIMUM, FORMAT_CURRENT);
 
-      size = input.readLong();                    // read the size
+      size = readSize(input);                    // read the size
       
       indexInterval = input.readInt();
       skipInterval = input.readInt();
@@ -99,6 +99,11 @@ final class SegmentTermEnum implements C
       assert skipInterval > 0: "skipInterval=" + skipInterval + " is negative; must be > 0";
     }
   }
+  
+  // only overridden for testing
+  protected long readSize(IndexInput input) throws IOException {
+    return input.readLong();
+  }
 
   @Override
   protected SegmentTermEnum clone() {

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/TermInfosReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/TermInfosReader.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/TermInfosReader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/TermInfosReader.java Tue Jun  3 11:20:31 2014
@@ -27,6 +27,7 @@ import org.apache.lucene.index.IndexFile
 import org.apache.lucene.index.Term;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.CloseableThreadLocal;
 import org.apache.lucene.util.DoubleBarrelLRUCache;
@@ -40,7 +41,7 @@ import org.apache.lucene.util.IOUtils;
  * @lucene.experimental
  */
 @Deprecated
-final class TermInfosReader implements Closeable {
+class TermInfosReader implements Closeable {
   private final Directory directory;
   private final String segment;
   private final FieldInfos fieldInfos;
@@ -111,7 +112,7 @@ final class TermInfosReader implements C
       segment = seg;
       fieldInfos = fis;
 
-      origEnum = new SegmentTermEnum(directory.openInput(IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION),
+      origEnum = newSegmentTermEnum(directory.openInput(IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION),
                                                          context), fieldInfos, false);
       size = origEnum.size;
 
@@ -121,7 +122,7 @@ final class TermInfosReader implements C
         totalIndexInterval = origEnum.indexInterval * indexDivisor;
 
         final String indexFileName = IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION);
-        final SegmentTermEnum indexEnum = new SegmentTermEnum(directory.openInput(indexFileName,
+        final SegmentTermEnum indexEnum = newSegmentTermEnum(directory.openInput(indexFileName,
                                                                                    context), fieldInfos, true);
 
         try {
@@ -148,6 +149,11 @@ final class TermInfosReader implements C
       }
     }
   }
+  
+  // only overridden for testing
+  protected SegmentTermEnum newSegmentTermEnum(IndexInput input, FieldInfos fieldInfos, boolean isIndex) throws IOException {
+    return new SegmentTermEnum(input, fieldInfos, isIndex);
+  }
 
   public int getSkipInterval() {
     return origEnum.skipInterval;

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexOutput.java Tue Jun  3 11:20:31 2014
@@ -136,12 +136,6 @@ public abstract class BufferedIndexOutpu
   }
 
   @Override
-  public void seek(long pos) throws IOException {
-    flush();
-    bufferStart = pos;
-  }
-
-  @Override
   public abstract long length() throws IOException;
   
   /**

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java Tue Jun  3 11:20:31 2014
@@ -342,12 +342,6 @@ final class CompoundFileWriter implement
     }
 
     @Override
-    public void seek(long pos) throws IOException {
-      assert !closed;
-      delegate.seek(offset + pos);
-    }
-
-    @Override
     public long length() throws IOException {
       assert !closed;
       return delegate.length() - offset;

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java Tue Jun  3 11:20:31 2014
@@ -427,13 +427,6 @@ public abstract class FSDirectory extend
       }
     }
 
-    /** Random-access methods */
-    @Override
-    public void seek(long pos) throws IOException {
-      super.seek(pos);
-      file.seek(pos);
-    }
-
     @Override
     public long length() throws IOException {
       return file.length();

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java Tue Jun  3 11:20:31 2014
@@ -43,17 +43,9 @@ public abstract class IndexOutput extend
 
   /** Returns the current position in this file, where the next write will
    * occur.
-   * @see #seek(long)
    */
   public abstract long getFilePointer();
 
-  /** Sets current position in this file, where the next write will occur.
-   * @see #getFilePointer()
-   * @deprecated (4.1) This method will be removed in Lucene 5.0
-   */
-  @Deprecated
-  public abstract void seek(long pos) throws IOException;
-
   /** Returns the current checksum of bytes written so far */
   public abstract long getChecksum() throws IOException;
 

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMOutputStream.java Tue Jun  3 11:20:31 2014
@@ -117,19 +117,6 @@ public class RAMOutputStream extends Ind
   }
 
   @Override
-  public void seek(long pos) throws IOException {
-    // set the file length in case we seek back
-    // and flush() has not been called yet
-    setFileLength();
-    if (pos < bufferStart || pos >= bufferStart + bufferLength) {
-      currentBufferIndex = (int) (pos / BUFFER_SIZE);
-      switchCurrentBuffer();
-    }
-
-    bufferPosition = (int) (pos % BUFFER_SIZE);
-  }
-
-  @Override
   public long length() {
     return file.length;
   }

Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java Tue Jun  3 11:20:31 2014
@@ -64,13 +64,6 @@ final class RateLimitedIndexOutput exten
   }
 
   @Override
-  public void seek(long pos) throws IOException {
-    flush();
-    delegate.seek(pos);
-  }
-
-
-  @Override
   public void flush() throws IOException {
     try {
       super.flush();

Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene3x/TestTermInfosReaderIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene3x/TestTermInfosReaderIndex.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene3x/TestTermInfosReaderIndex.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/codecs/lucene3x/TestTermInfosReaderIndex.java Tue Jun  3 11:20:31 2014
@@ -102,10 +102,10 @@ public class TestTermInfosReaderIndex ex
     String segmentFileName = IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_INDEX_EXTENSION);
     long tiiFileLength = directory.fileLength(segmentFileName);
     IndexInput input = directory.openInput(segmentFileName, newIOContext(random()));
-    termEnum = new SegmentTermEnum(directory.openInput(IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), newIOContext(random())), fieldInfos, false);
+    termEnum = new PreflexRWSegmentTermEnum(directory.openInput(IndexFileNames.segmentFileName(segment, "", Lucene3xPostingsFormat.TERMS_EXTENSION), newIOContext(random())), fieldInfos, false);
     int totalIndexInterval = termEnum.indexInterval * indexDivisor;
     
-    SegmentTermEnum indexEnum = new SegmentTermEnum(input, fieldInfos, true);
+    SegmentTermEnum indexEnum = new PreflexRWSegmentTermEnum(input, fieldInfos, true);
     index = new TermInfosReaderIndex(indexEnum, indexDivisor, tiiFileLength, totalIndexInterval);
     indexEnum.close();
     input.close();

Modified: lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java Tue Jun  3 11:20:31 2014
@@ -167,7 +167,6 @@ public class SlowRAMDirectory extends RA
       io.writeBytes(b, offset, length);
     }
     
-    @Deprecated @Override public void seek(long pos) throws IOException { io.seek(pos); }
     @Override public void close() throws IOException { io.close(); }
     @Override public void flush() throws IOException { io.flush(); }
     @Override public long getFilePointer() { return io.getFilePointer(); }

Modified: lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java Tue Jun  3 11:20:31 2014
@@ -236,26 +236,6 @@ public class NativeUnixDirectory extends
       return filePos + bufferPos;
     }
 
-    // TODO: seek is fragile at best; it can only properly
-    // handle seek & then change bytes that fit entirely
-    // within one buffer
-    @Override
-    public void seek(long pos) throws IOException {
-      if (pos != getFilePointer()) {
-        dump();
-        final long alignedPos = pos & ALIGN_NOT_MASK;
-        filePos = alignedPos;
-        int n = (int) NativePosixUtil.pread(fos.getFD(), filePos, buffer);
-        if (n < bufferSize) {
-          buffer.limit(n);
-        }
-        //System.out.println("seek refill=" + n);
-        final int delta = (int) (pos - alignedPos);
-        buffer.position(delta);
-        bufferPos = delta;
-      }
-    }
-
     @Override
     public long length() {
       return fileLength + bufferPos;

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWPostingsFormat.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWPostingsFormat.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWPostingsFormat.java Tue Jun  3 11:20:31 2014
@@ -21,8 +21,12 @@ import java.io.IOException;
 
 import org.apache.lucene.codecs.FieldsConsumer;
 import org.apache.lucene.codecs.FieldsProducer;
+import org.apache.lucene.index.FieldInfos;
 import org.apache.lucene.index.SegmentWriteState;
 import org.apache.lucene.index.SegmentReadState;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.util.LuceneTestCase;
 
 /** Codec, only for testing, that can write and read the
@@ -69,6 +73,17 @@ class PreFlexRWPostingsFormat extends Lu
 
         return unicodeSortOrder;
       }
+
+      // we don't seek-on-write when testing
+      @Override
+      protected TermInfosReader newTermInfosReader(Directory dir, String name, FieldInfos fieldInfos, IOContext context, int indexDivisor) throws IOException {
+        return new TermInfosReader(dir, name, fieldInfos, context, indexDivisor) {
+          @Override
+          protected SegmentTermEnum newSegmentTermEnum(IndexInput input, FieldInfos fieldInfos, boolean isIndex) throws IOException {
+            return new PreflexRWSegmentTermEnum(input, fieldInfos, isIndex);
+          }
+        };
+      }
     };
   }
 }

Added: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreflexRWSegmentTermEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreflexRWSegmentTermEnum.java?rev=1599477&view=auto
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreflexRWSegmentTermEnum.java (added)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreflexRWSegmentTermEnum.java Tue Jun  3 11:20:31 2014
@@ -0,0 +1,40 @@
+package org.apache.lucene.codecs.lucene3x;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.io.IOException;
+
+import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.FieldInfos;
+import org.apache.lucene.store.IndexInput;
+
+// not an anonymous class so TestTermInfosReaderIndex can instantiate directly
+class PreflexRWSegmentTermEnum extends SegmentTermEnum {
+  PreflexRWSegmentTermEnum(IndexInput i, FieldInfos fis, boolean isi) throws IOException {
+    super(i, fis, isi);
+  }
+  
+  @Override
+  protected long readSize(IndexInput input) throws IOException {
+    long savedPosition = input.getFilePointer();
+    input.seek(input.length() - 8);
+    long size = input.readLong();
+    input.seek(savedPosition + 8); // we still left the 'hole'
+    return size;
+  }
+}

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/TermInfosWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/TermInfosWriter.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/TermInfosWriter.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/TermInfosWriter.java Tue Jun  3 11:20:31 2014
@@ -270,7 +270,8 @@ final class TermInfosWriter implements C
   /** Called to complete TermInfos creation. */
   public void close() throws IOException {
     try {
-      output.seek(4);          // write size after format
+      // the "real" 3.x seeked back to offset 4, and wrote 8 bytes there.
+      // we write 8 bytes at the end of the file
       output.writeLong(size);
     } finally {
       try {

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockDirectoryWrapper.java Tue Jun  3 11:20:31 2014
@@ -973,12 +973,6 @@ public class MockDirectoryWrapper extend
     }
 
     @Override
-    public void seek(long pos) throws IOException {
-      flush();
-      io.seek(pos);
-    }
-
-    @Override
     public void flush() throws IOException {
       try {
         super.flush();

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexOutputWrapper.java Tue Jun  3 11:20:31 2014
@@ -147,11 +147,6 @@ public class MockIndexOutputWrapper exte
   }
 
   @Override
-  public void seek(long pos) throws IOException {
-    delegate.seek(pos);
-  }
-
-  @Override
   public long length() throws IOException {
     return delegate.length();
   }

Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/ThrottledIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/ThrottledIndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/ThrottledIndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/util/ThrottledIndexOutput.java Tue Jun  3 11:20:31 2014
@@ -89,12 +89,6 @@ public class ThrottledIndexOutput extend
   }
 
   @Override
-  public void seek(long pos) throws IOException {
-    sleep(seekDelayMillis);
-    delegate.seek(pos);
-  }
-
-  @Override
   public long length() throws IOException {
     return delegate.length();
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/ReusedBufferedIndexOutput.java Tue Jun  3 11:20:31 2014
@@ -98,23 +98,6 @@ public abstract class ReusedBufferedInde
   protected abstract void seekInternal(long pos) throws IOException;
   
   @Override
-  public void seek(long pos) throws IOException {
-    if (pos > fileLength) {
-      fileLength = pos;
-    }
-
-    if (pos >= bufferStart && pos < (bufferStart + bufferLength))
-      bufferPosition = (int)(pos - bufferStart);  // seek within buffer
-    else {
-      flushBufferToCache();
-      bufferStart = pos;
-      bufferPosition = 0;
-      bufferLength = 0;
-      seekInternal(pos);
-    }
-  }
-  
-  @Override
   public long length() throws IOException {
     return fileLength;
   }

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/hdfs/NullIndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/hdfs/NullIndexOutput.java?rev=1599477&r1=1599476&r2=1599477&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/hdfs/NullIndexOutput.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/hdfs/NullIndexOutput.java Tue Jun  3 11:20:31 2014
@@ -49,12 +49,6 @@ public class NullIndexOutput extends Ind
     return length;
   }
   
-
-  @Override
-  public void seek(long pos) throws IOException {
-    this.pos = pos;
-  }
-  
   @Override
   public void writeByte(byte b) throws IOException {
     pos++;