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/02 19:21:41 UTC
svn commit: r1599274 - in /lucene/dev/branches/branch_4x: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/codecs/
lucene/core/src/java/org/apache/lucene/store/
lucene/core/src/test/org/apache/lucene/index/
lucene/core/src/test/org/apache...
Author: rmuir
Date: Mon Jun 2 17:21:40 2014
New Revision: 1599274
URL: http://svn.apache.org/r1599274
Log:
LUCENE-4371: Replace IndexInputSlicer with IndexInput.slice
Removed:
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/MockIndexInput.java
Modified:
lucene/dev/branches/branch_4x/ (props changed)
lucene/dev/branches/branch_4x/lucene/ (props changed)
lucene/dev/branches/branch_4x/lucene/CHANGES.txt
lucene/dev/branches/branch_4x/lucene/core/ (props changed)
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedChecksumIndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/Directory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FileSwitchDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMInputStream.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedDirectoryWrapper.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestFilterDirectory.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
lucene/dev/branches/branch_4x/lucene/facet/ (props changed)
lucene/dev/branches/branch_4x/lucene/facet/src/test/org/apache/lucene/facet/SlowRAMDirectory.java
lucene/dev/branches/branch_4x/lucene/misc/ (props changed)
lucene/dev/branches/branch_4x/lucene/misc/src/java/org/apache/lucene/store/NativeUnixDirectory.java
lucene/dev/branches/branch_4x/lucene/test-framework/ (props changed)
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryWrapper.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/MockIndexInputWrapper.java
lucene/dev/branches/branch_4x/solr/ (props changed)
lucene/dev/branches/branch_4x/solr/core/ (props changed)
lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/CustomBufferedIndexInput.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=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Mon Jun 2 17:21:40 2014
@@ -43,6 +43,9 @@ Changes in Backwards Compatibility Polic
top-level class: org.apache.lucene.util.AttributeFactory
(Uwe Schindler, Robert Muir)
+* LUCENE-4371: Removed IndexInputSlicer and Directory.createSlicer() and replaced
+ with IndexInput.slice(). (Robert Muir)
+
API Changes
* LUCENE-5711: MergePolicy accepts an IndexWriter instance
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/MultiLevelSkipListReader.java Mon Jun 2 17:21:40 2014
@@ -312,5 +312,9 @@ public abstract class MultiLevelSkipList
this.pos = (int) (pos - pointer);
}
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ throw new UnsupportedOperationException();
+ }
}
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedChecksumIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedChecksumIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedChecksumIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedChecksumIndexInput.java Mon Jun 2 17:21:40 2014
@@ -74,4 +74,9 @@ public class BufferedChecksumIndexInput
public IndexInput clone() {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ throw new UnsupportedOperationException();
+ }
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/BufferedIndexInput.java Mon Jun 2 17:21:40 2014
@@ -315,6 +315,11 @@ public abstract class BufferedIndexInput
return clone;
}
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return wrap("SlicedIndexInput(" + sliceDescription + " in " + this + ")", this, offset, length);
+ }
/**
* Flushes the in-memory buffer to the given output, copying at most
@@ -349,4 +354,62 @@ public abstract class BufferedIndexInput
}
}
+ /**
+ * Wraps a portion of a file with buffering.
+ */
+ public static BufferedIndexInput wrap(String description, IndexInput other, long offset, long length) {
+ return new SlicedIndexInput(description, other, offset, length);
+ }
+
+ /**
+ * Implementation of an IndexInput that reads from a portion of a file.
+ */
+ private static final class SlicedIndexInput extends BufferedIndexInput {
+ IndexInput base;
+ long fileOffset;
+ long length;
+
+ SlicedIndexInput(String sliceDescription, IndexInput base, long offset, long length) {
+ super("SlicedIndexInput(" + sliceDescription + " in " + base + " slice=" + offset + ":" + (offset+length) + ")", BufferedIndexInput.BUFFER_SIZE);
+ if (offset < 0 || length < 0) {
+ throw new IllegalArgumentException();
+ }
+ assert offset + length <= base.length();
+ this.base = base.clone();
+ this.fileOffset = offset;
+ this.length = length;
+ }
+
+ @Override
+ public SlicedIndexInput clone() {
+ SlicedIndexInput clone = (SlicedIndexInput)super.clone();
+ clone.base = base.clone();
+ clone.fileOffset = fileOffset;
+ clone.length = length;
+ return clone;
+ }
+
+ @Override
+ protected void readInternal(byte[] b, int offset, int len) throws IOException {
+ long start = getFilePointer();
+ if (start + len > length) {
+ throw new EOFException("read past EOF: " + this);
+ }
+ base.seek(fileOffset + start);
+ base.readBytes(b, offset, len, false);
+ }
+
+ @Override
+ protected void seekInternal(long pos) {}
+
+ @Override
+ public void close() throws IOException {
+ base.close();
+ }
+
+ @Override
+ public long length() {
+ return length;
+ }
+ }
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/ByteBufferIndexInput.java Mon Jun 2 17:21:40 2014
@@ -201,10 +201,8 @@ abstract class ByteBufferIndexInput exte
/**
* Creates a slice of this index input, with the given description, offset, and length. The slice is seeked to the beginning.
*/
+ @Override
public final ByteBufferIndexInput slice(String sliceDescription, long offset, long length) {
- if (isClone) { // well we could, but this is stupid
- throw new IllegalStateException("cannot slice() " + sliceDescription + " from a cloned IndexInput: " + this);
- }
final ByteBufferIndexInput clone = buildSlice(offset, length);
clone.sliceDescription = sliceDescription;
try {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/CompoundFileDirectory.java Mon Jun 2 17:21:40 2014
@@ -87,7 +87,7 @@ public final class CompoundFileDirectory
private final boolean openForWrite;
private static final Map<String,FileEntry> SENTINEL = Collections.emptyMap();
private final CompoundFileWriter writer;
- private final IndexInputSlicer handle;
+ private final IndexInput handle;
/**
* Create a new CompoundFileDirectory.
@@ -100,7 +100,7 @@ public final class CompoundFileDirectory
this.openForWrite = openForWrite;
if (!openForWrite) {
boolean success = false;
- handle = directory.createSlicer(fileName, context);
+ handle = directory.openInput(fileName, context);
try {
this.entries = readEntries(handle, directory, fileName);
success = true;
@@ -127,7 +127,7 @@ public final class CompoundFileDirectory
/** Helper method that reads CFS entries from an input stream */
private static final Map<String, FileEntry> readEntries(
- IndexInputSlicer handle, Directory dir, String name) throws IOException {
+ IndexInput handle, Directory dir, String name) throws IOException {
IndexInput stream = null;
ChecksumIndexInput entriesStream = null;
Map<String,FileEntry> mapping = null;
@@ -135,7 +135,7 @@ public final class CompoundFileDirectory
// otherwise it's the count (pre-3.1 indexes)
boolean success = false;
try {
- stream = handle.openFullSlice();
+ stream = handle.clone();
final int firstInt = stream.readVInt();
// impossible for 3.0 to have 63 files in a .cfs, CFS writer was not visible
// and separate norms/etc are outside of cfs.
@@ -276,7 +276,7 @@ public final class CompoundFileDirectory
if (entry == null) {
throw new FileNotFoundException("No sub-file with id " + id + " found (fileName=" + name + " files: " + entries.keySet() + ")");
}
- return handle.openSlice(name, entry.offset, entry.length);
+ return handle.slice(name, entry.offset, entry.length);
}
/** Returns an array of strings, one for each file in the directory. */
@@ -353,33 +353,6 @@ public final class CompoundFileDirectory
}
@Override
- public IndexInputSlicer createSlicer(final String name, IOContext context)
- throws IOException {
- ensureOpen();
- assert !openForWrite;
- final String id = IndexFileNames.stripSegmentName(name);
- final FileEntry entry = entries.get(id);
- if (entry == null) {
- throw new FileNotFoundException("No sub-file with id " + id + " found (fileName=" + name + " files: " + entries.keySet() + ")");
- }
- return new IndexInputSlicer() {
- @Override
- public void close() {
- }
-
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException {
- return handle.openSlice(sliceDescription, entry.offset + offset, length);
- }
-
- @Override
- public IndexInput openFullSlice() throws IOException {
- return openSlice("full-slice", 0, entry.length);
- }
- };
- }
-
- @Override
public String toString() {
return "CompoundFileDirectory(file=\"" + fileName + "\" in dir=" + directory + ")";
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/Directory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/Directory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/Directory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/Directory.java Mon Jun 2 17:21:40 2014
@@ -17,7 +17,6 @@ package org.apache.lucene.store;
* limitations under the License.
*/
-import java.io.EOFException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Closeable;
@@ -208,125 +207,8 @@ public abstract class Directory implemen
}
/**
- * Creates an {@link IndexInputSlicer} for the given file name.
- * IndexInputSlicer allows other {@link Directory} implementations to
- * efficiently open one or more sliced {@link IndexInput} instances from a
- * single file handle. The underlying file handle is kept open until the
- * {@link IndexInputSlicer} is closed.
- * <p>Throws {@link FileNotFoundException} or {@link NoSuchFileException}
- * if the file does not exist.
- *
- * @throws IOException
- * if an {@link IOException} occurs
- * @lucene.internal
- * @lucene.experimental
- */
- public IndexInputSlicer createSlicer(final String name, final IOContext context) throws IOException {
- ensureOpen();
- return new IndexInputSlicer() {
- private final IndexInput base = Directory.this.openInput(name, context);
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) {
- return new SlicedIndexInput("SlicedIndexInput(" + sliceDescription + " in " + base + ")", base, offset, length);
- }
- @Override
- public void close() throws IOException {
- base.close();
- }
- @Override
- public IndexInput openFullSlice() {
- return base.clone();
- }
- };
- }
-
- /**
* @throws AlreadyClosedException if this Directory is closed
*/
protected void ensureOpen() throws AlreadyClosedException {}
-
- /**
- * Allows to create one or more sliced {@link IndexInput} instances from a single
- * file handle. Some {@link Directory} implementations may be able to efficiently map slices of a file
- * into memory when only certain parts of a file are required.
- * @lucene.internal
- * @lucene.experimental
- */
- public abstract class IndexInputSlicer implements Closeable {
- /**
- * Returns an {@link IndexInput} slice starting at the given offset with the given length.
- */
- public abstract IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException;
-
- /**
- * Returns an {@link IndexInput} slice starting at offset <i>0</i> with a
- * length equal to the length of the underlying file
- * @deprecated Only for reading CFS files from 3.x indexes.
- */
- @Deprecated
- // can we remove this somehow?
- public abstract IndexInput openFullSlice() throws IOException;
- }
-
- /** Implementation of an IndexInput that reads from a portion of
- * a file.
- */
- private static final class SlicedIndexInput extends BufferedIndexInput {
- IndexInput base;
- long fileOffset;
- long length;
-
- SlicedIndexInput(final String sliceDescription, final IndexInput base, final long fileOffset, final long length) {
- this(sliceDescription, base, fileOffset, length, BufferedIndexInput.BUFFER_SIZE);
- }
-
- SlicedIndexInput(final String sliceDescription, final IndexInput base, final long fileOffset, final long length, int readBufferSize) {
- super("SlicedIndexInput(" + sliceDescription + " in " + base + " slice=" + fileOffset + ":" + (fileOffset+length) + ")", readBufferSize);
- this.base = base.clone();
- this.fileOffset = fileOffset;
- this.length = length;
- }
-
- @Override
- public SlicedIndexInput clone() {
- SlicedIndexInput clone = (SlicedIndexInput)super.clone();
- clone.base = base.clone();
- clone.fileOffset = fileOffset;
- clone.length = length;
- return clone;
- }
-
- /** Expert: implements buffer refill. Reads bytes from the current
- * position in the input.
- * @param b the array to read bytes into
- * @param offset the offset in the array to start storing bytes
- * @param len the number of bytes to read
- */
- @Override
- protected void readInternal(byte[] b, int offset, int len) throws IOException {
- long start = getFilePointer();
- if(start + len > length)
- throw new EOFException("read past EOF: " + this);
- base.seek(fileOffset + start);
- base.readBytes(b, offset, len, false);
- }
-
- /** Expert: implements seek. Sets current position in this file, where
- * the next {@link #readInternal(byte[],int,int)} will occur.
- * @see #readInternal(byte[],int,int)
- */
- @Override
- protected void seekInternal(long pos) {}
-
- /** Closes the stream to further operations. */
- @Override
- public void close() throws IOException {
- base.close();
- }
-
- @Override
- public long length() {
- return length;
- }
- }
+
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FileSwitchDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FileSwitchDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FileSwitchDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/FileSwitchDirectory.java Mon Jun 2 17:21:40 2014
@@ -171,10 +171,4 @@ public class FileSwitchDirectory extends
public IndexInput openInput(String name, IOContext context) throws IOException {
return getDirectory(name).openInput(name, context);
}
-
- @Override
- public IndexInputSlicer createSlicer(String name, IOContext context)
- throws IOException {
- return getDirectory(name).createSlicer(name, context);
- }
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/IndexInput.java Mon Jun 2 17:21:40 2014
@@ -82,4 +82,10 @@ public abstract class IndexInput extends
public IndexInput clone() {
return (IndexInput) super.clone();
}
+
+ /**
+ * Creates a slice of this index input, with the given description, offset, and length.
+ * The slice is seeked to the beginning.
+ */
+ public abstract IndexInput slice(String sliceDescription, long offset, long length) throws IOException;
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java Mon Jun 2 17:21:40 2014
@@ -196,29 +196,6 @@ public class MMapDirectory extends FSDir
return new MMapIndexInput("MMapIndexInput(path=\"" + file.toString() + "\")", c);
}
}
-
- @Override
- public IndexInputSlicer createSlicer(String name, IOContext context) throws IOException {
- final MMapIndexInput full = (MMapIndexInput) openInput(name, context);
- return new IndexInputSlicer() {
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException {
- ensureOpen();
- return full.slice(sliceDescription, offset, length);
- }
-
- @Override
- public IndexInput openFullSlice() throws IOException {
- ensureOpen();
- return full.clone();
- }
-
- @Override
- public void close() throws IOException {
- full.close();
- }
- };
- }
private final class MMapIndexInput extends ByteBufferIndexInput {
private final boolean useUnmapHack;
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java Mon Jun 2 17:21:40 2014
@@ -20,7 +20,6 @@ package org.apache.lucene.store;
import java.io.File;
import java.io.EOFException;
import java.io.IOException;
-import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException; // javadoc @link
import java.nio.channels.FileChannel;
@@ -83,40 +82,10 @@ public class NIOFSDirectory extends FSDi
return new NIOFSIndexInput("NIOFSIndexInput(path=\"" + path + "\")", fc, context);
}
- @Override
- public IndexInputSlicer createSlicer(final String name,
- final IOContext context) throws IOException {
- ensureOpen();
- final File path = new File(getDirectory(), name);
- final FileChannel descriptor = FileChannel.open(path.toPath(), StandardOpenOption.READ);
- return new Directory.IndexInputSlicer() {
-
- @Override
- public void close() throws IOException {
- descriptor.close();
- }
-
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) {
- return new NIOFSIndexInput("NIOFSIndexInput(" + sliceDescription + " in path=\"" + path + "\" slice=" + offset + ":" + (offset+length) + ")", descriptor, offset,
- length, BufferedIndexInput.bufferSize(context));
- }
-
- @Override
- public IndexInput openFullSlice() {
- try {
- return openSlice("full-slice", 0, descriptor.size());
- } catch (IOException ex) {
- throw new RuntimeException(ex);
- }
- }
- };
- }
-
/**
* Reads bytes with {@link FileChannel#read(ByteBuffer, long)}
*/
- protected static class NIOFSIndexInput extends BufferedIndexInput {
+ static final class NIOFSIndexInput extends BufferedIndexInput {
/**
* The maximum chunk size for reads of 16384 bytes.
*/
@@ -163,6 +132,11 @@ public class NIOFSDirectory extends FSDi
}
@Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return new NIOFSIndexInput(sliceDescription, channel, off + offset, length, getBufferSize());
+ }
+
+ @Override
public final long length() {
return end - off;
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java Mon Jun 2 17:21:40 2014
@@ -232,22 +232,6 @@ public class NRTCachingDirectory extends
return delegate.openInput(name, context);
}
}
-
- @Override
- public synchronized IndexInputSlicer createSlicer(final String name, final IOContext context) throws IOException {
- ensureOpen();
- if (VERBOSE) {
- System.out.println("nrtdir.openInput name=" + name);
- }
- if (cache.fileExists(name)) {
- if (VERBOSE) {
- System.out.println(" from cache");
- }
- return cache.createSlicer(name, context);
- } else {
- return delegate.createSlicer(name, context);
- }
- }
/** Close this directory, which flushes any cached files
* to the delegate and then closes the delegate. */
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMInputStream.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMInputStream.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMInputStream.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RAMInputStream.java Mon Jun 2 17:21:40 2014
@@ -118,4 +118,10 @@ public class RAMInputStream extends Inde
}
bufferPosition = (int) (pos % BUFFER_SIZE);
}
+
+ // TODO: improve this, kinda stupid
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return BufferedIndexInput.wrap(sliceDescription, this, offset, length);
+ }
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedDirectoryWrapper.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedDirectoryWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/RateLimitedDirectoryWrapper.java Mon Jun 2 17:21:40 2014
@@ -51,13 +51,6 @@ public final class RateLimitedDirectoryW
}
@Override
- public IndexInputSlicer createSlicer(String name, IOContext context)
- throws IOException {
- ensureOpen();
- return in.createSlicer(name, context);
- }
-
- @Override
public void copy(Directory to, String src, String dest, IOContext context) throws IOException {
ensureOpen();
in.copy(to, src, dest, context);
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/SimpleFSDirectory.java Mon Jun 2 17:21:40 2014
@@ -59,41 +59,11 @@ public class SimpleFSDirectory extends F
return new SimpleFSIndexInput("SimpleFSIndexInput(path=\"" + path.getPath() + "\")", raf, context);
}
- @Override
- public IndexInputSlicer createSlicer(final String name,
- final IOContext context) throws IOException {
- ensureOpen();
- final File file = new File(getDirectory(), name);
- final RandomAccessFile descriptor = new RandomAccessFile(file, "r");
- return new IndexInputSlicer() {
-
- @Override
- public void close() throws IOException {
- descriptor.close();
- }
-
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) {
- return new SimpleFSIndexInput("SimpleFSIndexInput(" + sliceDescription + " in path=\"" + file.getPath() + "\" slice=" + offset + ":" + (offset+length) + ")", descriptor, offset,
- length, BufferedIndexInput.bufferSize(context));
- }
-
- @Override
- public IndexInput openFullSlice() {
- try {
- return openSlice("full-slice", 0, descriptor.length());
- } catch (IOException ex) {
- throw new RuntimeException(ex);
- }
- }
- };
- }
-
/**
* Reads bytes with {@link RandomAccessFile#seek(long)} followed by
* {@link RandomAccessFile#read(byte[], int, int)}.
*/
- protected static class SimpleFSIndexInput extends BufferedIndexInput {
+ static final class SimpleFSIndexInput extends BufferedIndexInput {
/**
* The maximum chunk size is 8192 bytes, because {@link RandomAccessFile} mallocs
* a native buffer outside of stack if the read buffer size is larger.
@@ -139,6 +109,11 @@ public class SimpleFSDirectory extends F
}
@Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return new SimpleFSIndexInput(sliceDescription, file, off + offset, length, getBufferSize());
+ }
+
+ @Override
public final long length() {
return end - off;
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/store/TrackingDirectoryWrapper.java Mon Jun 2 17:21:40 2014
@@ -50,11 +50,6 @@ public final class TrackingDirectoryWrap
in.copy(to, src, dest, context);
}
- @Override
- public Directory.IndexInputSlicer createSlicer(final String name, final IOContext context) throws IOException {
- return in.createSlicer(name, context);
- }
-
// maybe clone before returning.... all callers are
// cloning anyway....
public Set<String> getCreatedFiles() {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestFieldsReader.java Mon Jun 2 17:21:40 2014
@@ -187,6 +187,12 @@ public class TestFieldsReader extends Lu
}
return i;
}
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ IndexInput slice = delegate.slice(sliceDescription, offset, length);
+ return new FaultyIndexInput(slice);
+ }
}
// LUCENE-1262
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestIndexInput.java Mon Jun 2 17:21:40 2014
@@ -20,9 +20,11 @@ package org.apache.lucene.index;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.TestUtil;
import org.apache.lucene.util.TestUtil;
+import org.apache.lucene.store.BufferedIndexInput;
import org.apache.lucene.store.ByteArrayDataInput;
import org.apache.lucene.store.ByteArrayDataOutput;
import org.apache.lucene.store.DataInput;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.RAMDirectory;
@@ -169,34 +171,26 @@ public class TestIndexInput extends Luce
}
}
- // this test only checks BufferedIndexInput because MockIndexInput extends BufferedIndexInput
- public void testBufferedIndexInputRead() throws IOException {
- IndexInput is = new MockIndexInput(READ_TEST_BYTES);
- checkReads(is, IOException.class);
- is.close();
- is = new MockIndexInput(RANDOM_TEST_BYTES);
- checkRandomReads(is);
- is.close();
- }
-
- // this test checks the raw IndexInput methods as it uses RAMIndexInput which extends IndexInput directly
+ // this test checks the IndexInput methods of any impl
public void testRawIndexInputRead() throws IOException {
- Random random = random();
- final RAMDirectory dir = new RAMDirectory();
- IndexOutput os = dir.createOutput("foo", newIOContext(random));
- os.writeBytes(READ_TEST_BYTES, READ_TEST_BYTES.length);
- os.close();
- IndexInput is = dir.openInput("foo", newIOContext(random));
- checkReads(is, IOException.class);
- is.close();
+ for (int i = 0; i < 10; i++) {
+ Random random = random();
+ final Directory dir = newDirectory();
+ IndexOutput os = dir.createOutput("foo", newIOContext(random));
+ os.writeBytes(READ_TEST_BYTES, READ_TEST_BYTES.length);
+ os.close();
+ IndexInput is = dir.openInput("foo", newIOContext(random));
+ checkReads(is, IOException.class);
+ is.close();
- os = dir.createOutput("bar", newIOContext(random));
- os.writeBytes(RANDOM_TEST_BYTES, RANDOM_TEST_BYTES.length);
- os.close();
- is = dir.openInput("bar", newIOContext(random));
- checkRandomReads(is);
- is.close();
- dir.close();
+ os = dir.createOutput("bar", newIOContext(random));
+ os.writeBytes(RANDOM_TEST_BYTES, RANDOM_TEST_BYTES.length);
+ os.close();
+ is = dir.openInput("bar", newIOContext(random));
+ checkRandomReads(is);
+ is.close();
+ dir.close();
+ }
}
public void testByteArrayDataInput() throws IOException {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLazyProxSkipping.java Mon Jun 2 17:21:40 2014
@@ -228,6 +228,10 @@ public class TestLazyProxSkipping extend
public SeeksCountingStream clone() {
return new SeeksCountingStream(this.input.clone());
}
-
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return new SeeksCountingStream(this.input.clone());
+ }
}
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestMultiLevelSkipList.java Mon Jun 2 17:21:40 2014
@@ -190,5 +190,9 @@ public class TestMultiLevelSkipList exte
return new CountingStream(this.input.clone());
}
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return new CountingStream(this.input.slice(sliceDescription, offset, length));
+ }
}
}
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestBufferedIndexInput.java Mon Jun 2 17:21:40 2014
@@ -221,6 +221,11 @@ public class TestBufferedIndexInput exte
public long length() {
return len;
}
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ throw new UnsupportedOperationException();
+ }
}
public void testSetBufferSize() throws IOException {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestFilterDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestFilterDirectory.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestFilterDirectory.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestFilterDirectory.java Mon Jun 2 17:21:40 2014
@@ -32,7 +32,6 @@ public class TestFilterDirectory extends
// except those under the 'exclude' list
Set<Method> exclude = new HashSet<>();
exclude.add(Directory.class.getMethod("copy", Directory.class, String.class, String.class, IOContext.class));
- exclude.add(Directory.class.getMethod("createSlicer", String.class, IOContext.class));
exclude.add(Directory.class.getMethod("openChecksumInput", String.class, IOContext.class));
for (Method m : FilterDirectory.class.getMethods()) {
if (m.getDeclaringClass() == Directory.class) {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/store/TestMultiMMap.java Mon Jun 2 17:21:40 2014
@@ -26,7 +26,6 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.RandomIndexWriter;
-import org.apache.lucene.store.Directory.IndexInputSlicer;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.TestUtil;
@@ -113,9 +112,9 @@ public class TestMultiMMap extends BaseD
io.writeInt(1);
io.writeInt(2);
io.close();
- IndexInputSlicer slicer = mmapDir.createSlicer("bytes", newIOContext(random()));
- IndexInput one = slicer.openSlice("first int", 0, 4);
- IndexInput two = slicer.openSlice("second int", 4, 4);
+ IndexInput slicer = mmapDir.openInput("bytes", newIOContext(random()));
+ IndexInput one = slicer.slice("first int", 0, 4);
+ IndexInput two = slicer.slice("second int", 4, 4);
IndexInput three = one.clone(); // clone of clone
IndexInput four = two.clone(); // clone of clone
slicer.close();
@@ -158,9 +157,9 @@ public class TestMultiMMap extends BaseD
io.writeInt(1);
io.writeInt(2);
io.close();
- IndexInputSlicer slicer = mmapDir.createSlicer("bytes", newIOContext(random()));
- IndexInput one = slicer.openSlice("first int", 0, 4);
- IndexInput two = slicer.openSlice("second int", 4, 4);
+ IndexInput slicer = mmapDir.openInput("bytes", newIOContext(random()));
+ IndexInput one = slicer.slice("first int", 0, 4);
+ IndexInput two = slicer.slice("second int", 4, 4);
one.close();
try {
one.readInt();
@@ -170,7 +169,7 @@ public class TestMultiMMap extends BaseD
}
assertEquals(2, two.readInt());
// reopen a new slice "one":
- one = slicer.openSlice("first int", 0, 4);
+ one = slicer.slice("first int", 0, 4);
assertEquals(1, one.readInt());
one.close();
two.close();
@@ -195,8 +194,8 @@ public class TestMultiMMap extends BaseD
MMapDirectory mmapDir = new MMapDirectory(createTempDir("testSeekSliceZero"), null, 1<<i);
IndexOutput io = mmapDir.createOutput("zeroBytes", newIOContext(random()));
io.close();
- IndexInputSlicer slicer = mmapDir.createSlicer("zeroBytes", newIOContext(random()));
- IndexInput ii = slicer.openSlice("zero-length slice", 0, 0);
+ IndexInput slicer = mmapDir.openInput("zeroBytes", newIOContext(random()));
+ IndexInput ii = slicer.slice("zero-length slice", 0, 0);
ii.seek(0L);
ii.close();
slicer.close();
@@ -230,8 +229,8 @@ public class TestMultiMMap extends BaseD
random().nextBytes(bytes);
io.writeBytes(bytes, bytes.length);
io.close();
- IndexInputSlicer slicer = mmapDir.createSlicer("bytes", newIOContext(random()));
- IndexInput ii = slicer.openSlice("full slice", 0, bytes.length);
+ IndexInput slicer = mmapDir.openInput("bytes", newIOContext(random()));
+ IndexInput ii = slicer.slice("full slice", 0, bytes.length);
byte actual[] = new byte[1<<i];
ii.readBytes(actual, 0, actual.length);
assertEquals(new BytesRef(bytes), new BytesRef(actual));
@@ -282,11 +281,11 @@ public class TestMultiMMap extends BaseD
ii.readBytes(actual, 0, actual.length);
ii.close();
assertEquals(new BytesRef(bytes), new BytesRef(actual));
- IndexInputSlicer slicer = mmapDir.createSlicer("bytes", newIOContext(random()));
+ IndexInput slicer = mmapDir.openInput("bytes", newIOContext(random()));
for (int sliceStart = 0; sliceStart < bytes.length; sliceStart++) {
for (int sliceLength = 0; sliceLength < bytes.length - sliceStart; sliceLength++) {
byte slice[] = new byte[sliceLength];
- IndexInput input = slicer.openSlice("bytesSlice", sliceStart, slice.length);
+ IndexInput input = slicer.slice("bytesSlice", sliceStart, slice.length);
input.readBytes(slice, 0, slice.length);
input.close();
assertEquals(new BytesRef(bytes, sliceStart, sliceLength), new BytesRef(slice));
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=1599274&r1=1599273&r2=1599274&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 Mon Jun 2 17:21:40 2014
@@ -118,7 +118,11 @@ public class SlowRAMDirectory extends RA
ii.readBytes(b, offset, len);
}
+ // TODO: is it intentional that clone doesnt wrap?
@Override public IndexInput clone() { return ii.clone(); }
+ @Override public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return ii.slice(sliceDescription, offset, length);
+ }
@Override public void close() throws IOException { ii.close(); }
@Override public boolean equals(Object o) { return ii.equals(o); }
@Override public long getFilePointer() { return ii.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=1599274&r1=1599273&r2=1599274&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 Mon Jun 2 17:21:40 2014
@@ -436,5 +436,11 @@ public class NativeUnixDirectory extends
throw new RuntimeException("IOException during clone: " + this, ioe);
}
}
+
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ // TODO: is this the right thing to do?
+ return BufferedIndexInput.wrap(sliceDescription, this, offset, length);
+ }
}
}
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryWrapper.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/BaseDirectoryWrapper.java Mon Jun 2 17:21:40 2014
@@ -75,9 +75,4 @@ public class BaseDirectoryWrapper extend
public void copy(Directory to, String src, String dest, IOContext context) throws IOException {
in.copy(to, src, dest, context);
}
-
- @Override
- public IndexInputSlicer createSlicer(String name, IOContext context) throws IOException {
- return in.createSlicer(name, context);
- }
}
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=1599274&r1=1599273&r2=1599274&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 Mon Jun 2 17:21:40 2014
@@ -953,53 +953,6 @@ public class MockDirectoryWrapper extend
// randomize the IOContext here?
in.copy(to, src, dest, context);
}
-
- @Override
- public IndexInputSlicer createSlicer(final String name, IOContext context)
- throws IOException {
- maybeYield();
- if (!LuceneTestCase.slowFileExists(in, name)) {
- throw randomState.nextBoolean() ? new FileNotFoundException(name) : new NoSuchFileException(name);
- }
- // cannot open a file for input if it's still open for
- // output, except for segments.gen and segments_N
- if (openFilesForWrite.contains(name) && !name.startsWith("segments")) {
- throw (IOException) fillOpenTrace(new IOException("MockDirectoryWrapper: file \"" + name + "\" is still open for writing"), name, false);
- }
-
- final IndexInputSlicer delegateHandle = in.createSlicer(name, context);
- final IndexInputSlicer handle = new IndexInputSlicer() {
-
- private boolean isClosed;
- @Override
- public void close() throws IOException {
- if (!isClosed) {
- delegateHandle.close();
- MockDirectoryWrapper.this.removeOpenFile(this, name);
- isClosed = true;
- }
- }
-
- @Override
- public IndexInput openSlice(String sliceDescription, long offset, long length) throws IOException {
- maybeYield();
- IndexInput ii = new MockIndexInputWrapper(MockDirectoryWrapper.this, name, delegateHandle.openSlice(sliceDescription, offset, length));
- addFileHandle(ii, name, Handle.Input);
- return ii;
- }
-
- @Override
- public IndexInput openFullSlice() throws IOException {
- maybeYield();
- IndexInput ii = new MockIndexInputWrapper(MockDirectoryWrapper.this, name, delegateHandle.openFullSlice());
- addFileHandle(ii, name, Handle.Input);
- return ii;
- }
-
- };
- addFileHandle(handle, name, Handle.Slice);
- return handle;
- }
final class BufferedIndexOutputWrapper extends BufferedIndexOutput {
private final IndexOutput io;
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexInputWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexInputWrapper.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexInputWrapper.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/store/MockIndexInputWrapper.java Mon Jun 2 17:21:40 2014
@@ -89,6 +89,16 @@ public class MockIndexInputWrapper exten
}
@Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ ensureOpen();
+ dir.inputCloneCount.incrementAndGet();
+ IndexInput slice = delegate.slice(sliceDescription, offset, length);
+ MockIndexInputWrapper clone = new MockIndexInputWrapper(dir, sliceDescription, slice);
+ clone.isClone = true;
+ return clone;
+ }
+
+ @Override
public long getFilePointer() {
ensureOpen();
return delegate.getFilePointer();
Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/CustomBufferedIndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/CustomBufferedIndexInput.java?rev=1599274&r1=1599273&r2=1599274&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/CustomBufferedIndexInput.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/store/blockcache/CustomBufferedIndexInput.java Mon Jun 2 17:21:40 2014
@@ -20,6 +20,7 @@ package org.apache.solr.store.blockcache
import java.io.EOFException;
import java.io.IOException;
+import org.apache.lucene.store.BufferedIndexInput;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
@@ -255,6 +256,11 @@ public abstract class CustomBufferedInde
return clone;
}
+ @Override
+ public IndexInput slice(String sliceDescription, long offset, long length) throws IOException {
+ return BufferedIndexInput.wrap(sliceDescription, this, offset, length);
+ }
+
/**
* Flushes the in-memory bufer to the given output, copying at most
* <code>numBytes</code>.