diff --git a/lucene/src/java/org/apache/lucene/index/DirectoryReader.java b/lucene/src/java/org/apache/lucene/index/DirectoryReader.java index f224099c106..252dd36e035 100644 --- a/lucene/src/java/org/apache/lucene/index/DirectoryReader.java +++ b/lucene/src/java/org/apache/lucene/index/DirectoryReader.java @@ -305,25 +305,16 @@ class DirectoryReader extends IndexReader implements Cloneable { @Override public final synchronized Object clone() { try { - return clone(true); + DirectoryReader newReader = doOpenIfChanged((SegmentInfos) segmentInfos.clone(), true, true); + newReader.writer = writer; + newReader.hasDeletions = hasDeletions; + assert newReader.readerFinishedListeners != null; + return newReader; } catch (Exception ex) { throw new RuntimeException(ex); } } - @Override - public final synchronized IndexReader clone(boolean openReadOnly) throws CorruptIndexException, IOException { - assert openReadOnly; - // doOpenIfChanged calls ensureOpen - DirectoryReader newReader = doOpenIfChanged((SegmentInfos) segmentInfos.clone(), true, openReadOnly); - - newReader.writer = writer; - newReader.hasDeletions = hasDeletions; - assert newReader.readerFinishedListeners != null; - - return newReader; - } - @Override protected final IndexReader doOpenIfChanged() throws CorruptIndexException, IOException { return doOpenIfChanged(true, null); diff --git a/lucene/src/java/org/apache/lucene/index/IndexReader.java b/lucene/src/java/org/apache/lucene/index/IndexReader.java index 5f8087953dc..cff2ea6fff3 100644 --- a/lucene/src/java/org/apache/lucene/index/IndexReader.java +++ b/lucene/src/java/org/apache/lucene/index/IndexReader.java @@ -653,16 +653,6 @@ public abstract class IndexReader implements Cloneable,Closeable { public synchronized Object clone() { throw new UnsupportedOperationException("This reader does not implement clone()"); } - - /** - * Clones the IndexReader and optionally changes readOnly. A readOnly - * reader cannot open a writeable reader. - * @throws CorruptIndexException if the index is corrupt - * @throws IOException if there is a low-level IO error - */ - public synchronized IndexReader clone(boolean openReadOnly) throws CorruptIndexException, IOException { - throw new UnsupportedOperationException("This reader does not implement clone()"); - } /** * Returns the directory associated with this index. The Default diff --git a/lucene/src/java/org/apache/lucene/index/SegmentReader.java b/lucene/src/java/org/apache/lucene/index/SegmentReader.java index 21225538bd9..97b3a81f861 100644 --- a/lucene/src/java/org/apache/lucene/index/SegmentReader.java +++ b/lucene/src/java/org/apache/lucene/index/SegmentReader.java @@ -187,8 +187,8 @@ public class SegmentReader extends IndexReader implements Cloneable { } } - @Override - public final synchronized IndexReader clone(boolean openReadOnly) throws CorruptIndexException, IOException { + // nocommit: is this needed anymore by IndexWriter? + final synchronized IndexReader clone(boolean openReadOnly) throws CorruptIndexException, IOException { return reopenSegment(si, true, openReadOnly); }