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/11/20 05:22:41 UTC
svn commit: r1640670 - in /lucene/dev/branches/lucene6065:
lucene/core/src/java/org/apache/lucene/index/
lucene/core/src/test/org/apache/lucene/index/
lucene/memory/src/java/org/apache/lucene/index/memory/
lucene/misc/src/java/org/apache/lucene/uninver...
Author: rmuir
Date: Thu Nov 20 04:22:40 2014
New Revision: 1640670
URL: http://svn.apache.org/r1640670
Log:
LUCENE-6065: current state
Added:
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader2.java (with props)
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader2.java (with props)
Modified:
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/MergeState.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestIndexReaderClose.java
lucene/dev/branches/lucene6065/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
lucene/dev/branches/lucene6065/lucene/misc/src/java/org/apache/lucene/uninverting/UninvertingReader.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AllDeletedFilterReader.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingDirectoryReader.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingLeafReader.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
lucene/dev/branches/lucene6065/solr/core/src/java/org/apache/solr/search/Insanity.java
lucene/dev/branches/lucene6065/solr/core/src/test/org/apache/solr/search/TestDocSet.java
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java Thu Nov 20 04:22:40 2014
@@ -31,7 +31,12 @@ import java.util.Locale;
import java.util.Map;
import org.apache.lucene.codecs.Codec;
+import org.apache.lucene.codecs.DocValuesProducer;
+import org.apache.lucene.codecs.FieldsProducer;
+import org.apache.lucene.codecs.NormsProducer;
import org.apache.lucene.codecs.PostingsFormat;
+import org.apache.lucene.codecs.StoredFieldsReader;
+import org.apache.lucene.codecs.TermVectorsReader;
import org.apache.lucene.index.CheckIndex.Status.DocValuesStatus;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.store.AlreadyClosedException;
@@ -632,11 +637,6 @@ public class CheckIndex implements Close
segInfoStat.openReaderPassed = true;
- if (infoStream != null)
- infoStream.print(" test: check integrity.....");
- reader.checkIntegrity();
- msg(infoStream, "OK");
-
if (reader.maxDoc() != info.info.getDocCount()) {
throw new RuntimeException("SegmentReader.maxDoc() " + reader.maxDoc() + " != SegmentInfos.docCount " + info.info.getDocCount());
}
@@ -846,6 +846,16 @@ public class CheckIndex implements Close
if (infoStream != null) {
infoStream.print(" test: field norms.........");
}
+
+ // nocommit: remove instanceof
+ // nocommit: use producer for everything from here, to not load up all norms into RAM!
+ if (reader instanceof LeafReader2) {
+ NormsProducer producer = ((LeafReader2)reader).getNormsReader();
+ if (producer != null) {
+ producer.checkIntegrity();
+ }
+ }
+
for (FieldInfo info : reader.getFieldInfos()) {
if (info.hasNorms()) {
checkNorms(info, reader, infoStream);
@@ -1451,6 +1461,15 @@ public class CheckIndex implements Close
if (infoStream != null) {
infoStream.print(" test: terms, freq, prox...");
}
+
+ // nocommit: remove instanceof
+ // nocommit: use producer for everything from here, to not load up all fields into RAM!
+ if (reader instanceof LeafReader2) {
+ FieldsProducer producer = ((LeafReader2)reader).getPostingsReader();
+ if (producer != null) {
+ producer.checkIntegrity();
+ }
+ }
final Fields fields = reader.fields();
final FieldInfos fieldInfos = reader.getFieldInfos();
@@ -1487,6 +1506,15 @@ public class CheckIndex implements Close
if (infoStream != null) {
infoStream.print(" test: stored fields.......");
}
+
+ // nocommit: remove instanceof
+ // nocommit: use producer for everything from here, to not load up all fields into RAM!
+ if (reader instanceof LeafReader2) {
+ StoredFieldsReader producer = ((LeafReader2)reader).getFieldsReader();
+ if (producer != null) {
+ producer.checkIntegrity();
+ }
+ }
// Scan stored fields for all documents
final Bits liveDocs = reader.getLiveDocs();
@@ -1533,6 +1561,16 @@ public class CheckIndex implements Close
if (infoStream != null) {
infoStream.print(" test: docvalues...........");
}
+
+ // nocommit: remove instanceof
+ // nocommit: use producer for everything from here, to not load up all fields into RAM!
+ if (reader instanceof LeafReader2) {
+ DocValuesProducer producer = ((LeafReader2)reader).getDocValuesReader();
+ if (producer != null) {
+ producer.checkIntegrity();
+ }
+ }
+
for (FieldInfo fieldInfo : reader.getFieldInfos()) {
if (fieldInfo.getDocValuesType() != DocValuesType.NONE) {
status.totalValueFields++;
@@ -1727,6 +1765,7 @@ public class CheckIndex implements Close
} else if (docsWithField.length() != reader.maxDoc()) {
throw new RuntimeException(fi.name + " docsWithField has incorrect length: " + docsWithField.length() + ",expected: " + reader.maxDoc());
}
+ // nocommit: move these checks to TestUtil.checkReader
switch(fi.getDocValuesType()) {
case SORTED:
status.totalSortedFields++;
@@ -1810,6 +1849,15 @@ public class CheckIndex implements Close
if (infoStream != null) {
infoStream.print(" test: term vectors........");
}
+
+ // nocommit: remove instanceof
+ // nocommit: use producer for everything from here, to not load up all fields into RAM!
+ if (reader instanceof LeafReader2) {
+ TermVectorsReader producer = ((LeafReader2)reader).getTermVectorsReader();
+ if (producer != null) {
+ producer.checkIntegrity();
+ }
+ }
DocsEnum docs = null;
DocsAndPositionsEnum postings = null;
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java Thu Nov 20 04:22:40 2014
@@ -90,13 +90,7 @@ public class ExitableDirectoryReader ext
@Override
public Object getCoreCacheKey() {
return in.getCoreCacheKey();
- }
-
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return in.getCombinedCoreAndDeletesKey();
- }
-
+ }
}
/**
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader.java Thu Nov 20 04:22:40 2014
@@ -39,14 +39,12 @@ import org.apache.lucene.util.BytesRef;
* content the contained reader, you could consider overriding
* {@link #getCoreCacheKey()} so that
* {@link CachingWrapperFilter} shares the same entries for this atomic reader
- * and the wrapped one. {@link #getCombinedCoreAndDeletesKey()} could be
- * overridden as well if the {@link #getLiveDocs() live docs} are not changed
- * either.
+ * and the wrapped one.
*/
-public class FilterLeafReader extends LeafReader {
+public abstract class FilterLeafReader extends LeafReader {
/** Get the wrapped instance by <code>reader</code> as long as this reader is
- * an intance of {@link FilterLeafReader}. */
+ * an instance of {@link FilterLeafReader}. */
public static LeafReader unwrap(LeafReader reader) {
while (reader instanceof FilterLeafReader) {
reader = ((FilterLeafReader) reader).in;
@@ -462,10 +460,4 @@ public class FilterLeafReader extends Le
ensureOpen();
return in.getDocsWithField(field);
}
-
- @Override
- public void checkIntegrity() throws IOException {
- ensureOpen();
- in.checkIntegrity();
- }
}
Added: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader2.java?rev=1640670&view=auto
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader2.java (added)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/FilterLeafReader2.java Thu Nov 20 04:22:40 2014
@@ -0,0 +1,144 @@
+package org.apache.lucene.index;
+
+/*
+ * 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.codecs.DocValuesProducer;
+import org.apache.lucene.codecs.FieldsProducer;
+import org.apache.lucene.codecs.NormsProducer;
+import org.apache.lucene.codecs.StoredFieldsReader;
+import org.apache.lucene.codecs.TermVectorsReader;
+import org.apache.lucene.search.CachingWrapperFilter;
+import org.apache.lucene.util.Bits;
+
+/** A <code>FilterLeafReader</code> contains another LeafReader, which it
+ * uses as its basic source of data, possibly transforming the data along the
+ * way or providing additional functionality. The class
+ * <code>FilterLeafReader</code> itself simply implements all abstract methods
+ * of <code>IndexReader</code> with versions that pass all requests to the
+ * contained index reader. Subclasses of <code>FilterLeafReader</code> may
+ * further override some of these methods and may also provide additional
+ * methods and fields.
+ * <p><b>NOTE</b>: If you override {@link #getLiveDocs()}, you will likely need
+ * to override {@link #numDocs()} as well and vice-versa.
+ * <p><b>NOTE</b>: If this {@link FilterLeafReader} does not change the
+ * content the contained reader, you could consider overriding
+ * {@link #getCoreCacheKey()} so that
+ * {@link CachingWrapperFilter} shares the same entries for this atomic reader
+ * and the wrapped one.
+ */
+public class FilterLeafReader2 extends LeafReader2 {
+
+ /** Get the wrapped instance by <code>reader</code> as long as this reader is
+ * an instance of {@link FilterLeafReader}. */
+ public static LeafReader2 unwrap(LeafReader2 reader) {
+ while (reader instanceof FilterLeafReader2) {
+ reader = ((FilterLeafReader2) reader).in;
+ }
+ return reader;
+ }
+
+ /** The underlying LeafReader. */
+ protected final LeafReader2 in;
+
+ /**
+ * <p>Construct a FilterLeafReader based on the specified base reader.
+ * <p>Note that base reader is closed if this FilterLeafReader is closed.</p>
+ * @param in specified base reader.
+ */
+ public FilterLeafReader2(LeafReader2 in) {
+ super();
+ if (in == null) {
+ throw new NullPointerException("incoming LeafReader cannot be null");
+ }
+ this.in = in;
+ in.registerParentReader(this);
+ }
+
+ @Override
+ protected TermVectorsReader getTermVectorsReader() {
+ return in.getTermVectorsReader();
+ }
+
+ @Override
+ protected StoredFieldsReader getFieldsReader() {
+ return in.getFieldsReader();
+ }
+
+ @Override
+ protected NormsProducer getNormsReader() {
+ return in.getNormsReader();
+ }
+
+ @Override
+ protected DocValuesProducer getDocValuesReader() {
+ return in.getDocValuesReader();
+ }
+
+ @Override
+ protected FieldsProducer getPostingsReader() {
+ return in.getPostingsReader();
+ }
+
+ @Override
+ public void addCoreClosedListener(CoreClosedListener listener) {
+ in.addCoreClosedListener(listener);
+ }
+
+ @Override
+ public void removeCoreClosedListener(CoreClosedListener listener) {
+ in.removeCoreClosedListener(listener);
+ }
+
+ @Override
+ public Bits getLiveDocs() {
+ ensureOpen();
+ return in.getLiveDocs();
+ }
+
+ @Override
+ public FieldInfos getFieldInfos() {
+ return in.getFieldInfos();
+ }
+
+ @Override
+ public int numDocs() {
+ // Don't call ensureOpen() here (it could affect performance)
+ return in.numDocs();
+ }
+
+ @Override
+ public int maxDoc() {
+ // Don't call ensureOpen() here (it could affect performance)
+ return in.maxDoc();
+ }
+
+ @Override
+ protected void doClose() throws IOException {
+ in.close();
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder buffer = new StringBuilder("FilterLeafReader(");
+ buffer.append(in);
+ buffer.append(')');
+ return buffer.toString();
+ }
+}
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/IndexReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/IndexReader.java Thu Nov 20 04:22:40 2014
@@ -110,8 +110,6 @@ public abstract class IndexReader implem
/** Expert: adds a {@link ReaderClosedListener}. The
* provided listener will be invoked when this reader is closed.
- * At this point, it is safe for apps to evict this reader from
- * any caches keyed on {@link #getCombinedCoreAndDeletesKey()}.
*
* @lucene.experimental */
public final void addReaderClosedListener(ReaderClosedListener listener) {
@@ -283,8 +281,7 @@ public abstract class IndexReader implem
/** {@inheritDoc}
* <p>For caching purposes, {@code IndexReader} subclasses are not allowed
* to implement equals/hashCode, so methods are declared final.
- * To lookup instances from caches use {@link #getCoreCacheKey} and
- * {@link #getCombinedCoreAndDeletesKey}.
+ * To lookup instances from caches use {@link #getCoreCacheKey}.
*/
@Override
public final boolean equals(Object obj) {
@@ -294,8 +291,7 @@ public abstract class IndexReader implem
/** {@inheritDoc}
* <p>For caching purposes, {@code IndexReader} subclasses are not allowed
* to implement equals/hashCode, so methods are declared final.
- * To lookup instances from caches use {@link #getCoreCacheKey} and
- * {@link #getCombinedCoreAndDeletesKey}.
+ * To lookup instances from caches use {@link #getCoreCacheKey}.
*/
@Override
public final int hashCode() {
@@ -447,15 +443,6 @@ public abstract class IndexReader implem
return this;
}
- /** Expert: Returns a key for this IndexReader that also includes deletions,
- * so CachingWrapperFilter can find it again.
- * This key must not have equals()/hashCode() methods, so "equals" means "identical". */
- public Object getCombinedCoreAndDeletesKey() {
- // Don't call ensureOpen since FC calls this (to evict)
- // on close
- return this;
- }
-
/** Returns the number of documents containing the
* <code>term</code>. This method returns 0 if the term or
* field does not exists. This method does not take into
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader.java Thu Nov 20 04:22:40 2014
@@ -318,13 +318,10 @@ public abstract class LeafReader extends
* synchronization.
*/
public abstract Bits getLiveDocs();
-
- /**
- * Checks consistency of this reader.
- * <p>
- * Note that this may be costly in terms of I/O, e.g.
- * may involve computing a checksum value against large data files.
- * @lucene.internal
- */
- public abstract void checkIntegrity() throws IOException;
+
+ // nocommit:
+ // uncomment for compile
+ //public abstract void cutover();
+ // uncomment for testing
+ public void cutover() {}
}
Added: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader2.java?rev=1640670&view=auto
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader2.java (added)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/LeafReader2.java Thu Nov 20 04:22:40 2014
@@ -0,0 +1,562 @@
+package org.apache.lucene.index;
+
+/*
+ * 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 java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.lucene.codecs.DocValuesProducer;
+import org.apache.lucene.codecs.FieldsProducer;
+import org.apache.lucene.codecs.NormsProducer;
+import org.apache.lucene.codecs.StoredFieldsReader;
+import org.apache.lucene.codecs.TermVectorsReader;
+import org.apache.lucene.store.AlreadyClosedException;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Bits;
+import org.apache.lucene.util.CloseableThreadLocal;
+import org.apache.lucene.util.IOUtils;
+
+/** "this is the new LeafReader" */
+// nocommit: fold into LeafReader when all FilterReaders are converted
+public abstract class LeafReader2 extends LeafReader {
+
+ /**
+ * Expert: retrieve thread-private TermVectorsReader
+ * @throws AlreadyClosedException if this reader is closed
+ * @lucene.internal
+ */
+ protected abstract TermVectorsReader getTermVectorsReader();
+
+ /**
+ * Expert: retrieve thread-private StoredFieldsReader
+ * @throws AlreadyClosedException if this reader is closed
+ * @lucene.internal
+ */
+ protected abstract StoredFieldsReader getFieldsReader();
+
+ /**
+ * Expert: retrieve underlying NormsProducer
+ * @throws AlreadyClosedException if this reader is closed
+ * @lucene.internal
+ */
+ protected abstract NormsProducer getNormsReader();
+
+ /**
+ * Expert: retrieve underlying DocValuesProducer
+ * @throws AlreadyClosedException if this reader is closed
+ * @lucene.internal
+ */
+ protected abstract DocValuesProducer getDocValuesReader();
+
+ /**
+ * Expert: retrieve underlying FieldsProducer
+ * @throws AlreadyClosedException if this reader is closed
+ * @lucene.internal
+ */
+ protected abstract FieldsProducer getPostingsReader();
+
+ @Override
+ public final Fields fields() {
+ return getPostingsReader();
+ }
+
+ private final void checkBounds(int docID) {
+ if (docID < 0 || docID >= maxDoc()) {
+ throw new IndexOutOfBoundsException("docID must be >= 0 and < maxDoc=" + maxDoc() + " (got docID=" + docID + ")");
+ }
+ }
+
+ @Override
+ public final void document(int docID, StoredFieldVisitor visitor) throws IOException {
+ checkBounds(docID);
+ getFieldsReader().visitDocument(docID, visitor);
+ }
+
+ @Override
+ public final Fields getTermVectors(int docID) throws IOException {
+ TermVectorsReader termVectorsReader = getTermVectorsReader();
+ if (termVectorsReader == null) {
+ return null;
+ }
+ checkBounds(docID);
+ return termVectorsReader.get(docID);
+ }
+
+ final CloseableThreadLocal<Map<String,Object>> docValuesLocal = new CloseableThreadLocal<Map<String,Object>>() {
+ @Override
+ protected Map<String,Object> initialValue() {
+ return new HashMap<>();
+ }
+ };
+
+ final CloseableThreadLocal<Map<String,Bits>> docsWithFieldLocal = new CloseableThreadLocal<Map<String,Bits>>() {
+ @Override
+ protected Map<String,Bits> initialValue() {
+ return new HashMap<>();
+ }
+ };
+
+
+ final CloseableThreadLocal<Map<String,Object>> normsLocal = new CloseableThreadLocal<Map<String,Object>>() {
+ @Override
+ protected Map<String,Object> initialValue() {
+ return new HashMap<>();
+ }
+ };
+
+ // returns the FieldInfo that corresponds to the given field and type, or
+ // null if the field does not exist, or not indexed as the requested
+ // DovDocValuesType.
+ private FieldInfo getDVField(String field, DocValuesType type) {
+ FieldInfo fi = getFieldInfos().fieldInfo(field);
+ if (fi == null) {
+ // Field does not exist
+ return null;
+ }
+ if (fi.getDocValuesType() == DocValuesType.NONE) {
+ // Field was not indexed with doc values
+ return null;
+ }
+ if (fi.getDocValuesType() != type) {
+ // Field DocValues are different than requested type
+ return null;
+ }
+
+ return fi;
+ }
+
+ @Override
+ public final NumericDocValues getNumericDocValues(String field) throws IOException {
+ ensureOpen();
+ Map<String,Object> dvFields = docValuesLocal.get();
+
+ Object previous = dvFields.get(field);
+ if (previous != null && previous instanceof NumericDocValues) {
+ return (NumericDocValues) previous;
+ } else {
+ FieldInfo fi = getDVField(field, DocValuesType.NUMERIC);
+ if (fi == null) {
+ return null;
+ }
+ NumericDocValues dv = getDocValuesReader().getNumeric(fi);
+ dvFields.put(field, dv);
+ return dv;
+ }
+ }
+
+ @Override
+ public final Bits getDocsWithField(String field) throws IOException {
+ ensureOpen();
+ Map<String,Bits> dvFields = docsWithFieldLocal.get();
+
+ Bits previous = dvFields.get(field);
+ if (previous != null) {
+ return previous;
+ } else {
+ FieldInfo fi = getFieldInfos().fieldInfo(field);
+ if (fi == null) {
+ // Field does not exist
+ return null;
+ }
+ if (fi.getDocValuesType() == DocValuesType.NONE) {
+ // Field was not indexed with doc values
+ return null;
+ }
+ Bits dv = getDocValuesReader().getDocsWithField(fi);
+ dvFields.put(field, dv);
+ return dv;
+ }
+ }
+
+ @Override
+ public final BinaryDocValues getBinaryDocValues(String field) throws IOException {
+ ensureOpen();
+ FieldInfo fi = getDVField(field, DocValuesType.BINARY);
+ if (fi == null) {
+ return null;
+ }
+
+ Map<String,Object> dvFields = docValuesLocal.get();
+
+ BinaryDocValues dvs = (BinaryDocValues) dvFields.get(field);
+ if (dvs == null) {
+ dvs = getDocValuesReader().getBinary(fi);
+ dvFields.put(field, dvs);
+ }
+
+ return dvs;
+ }
+
+ @Override
+ public final SortedDocValues getSortedDocValues(String field) throws IOException {
+ ensureOpen();
+ Map<String,Object> dvFields = docValuesLocal.get();
+
+ Object previous = dvFields.get(field);
+ if (previous != null && previous instanceof SortedDocValues) {
+ return (SortedDocValues) previous;
+ } else {
+ FieldInfo fi = getDVField(field, DocValuesType.SORTED);
+ if (fi == null) {
+ return null;
+ }
+ SortedDocValues dv = getDocValuesReader().getSorted(fi);
+ dvFields.put(field, dv);
+ return dv;
+ }
+ }
+
+ @Override
+ public final SortedNumericDocValues getSortedNumericDocValues(String field) throws IOException {
+ ensureOpen();
+ Map<String,Object> dvFields = docValuesLocal.get();
+
+ Object previous = dvFields.get(field);
+ if (previous != null && previous instanceof SortedNumericDocValues) {
+ return (SortedNumericDocValues) previous;
+ } else {
+ FieldInfo fi = getDVField(field, DocValuesType.SORTED_NUMERIC);
+ if (fi == null) {
+ return null;
+ }
+ SortedNumericDocValues dv = getDocValuesReader().getSortedNumeric(fi);
+ dvFields.put(field, dv);
+ return dv;
+ }
+ }
+
+ @Override
+ public final SortedSetDocValues getSortedSetDocValues(String field) throws IOException {
+ ensureOpen();
+ Map<String,Object> dvFields = docValuesLocal.get();
+
+ Object previous = dvFields.get(field);
+ if (previous != null && previous instanceof SortedSetDocValues) {
+ return (SortedSetDocValues) previous;
+ } else {
+ FieldInfo fi = getDVField(field, DocValuesType.SORTED_SET);
+ if (fi == null) {
+ return null;
+ }
+ SortedSetDocValues dv = getDocValuesReader().getSortedSet(fi);
+ dvFields.put(field, dv);
+ return dv;
+ }
+ }
+
+ @Override
+ public final NumericDocValues getNormValues(String field) throws IOException {
+ ensureOpen();
+ Map<String,Object> normFields = normsLocal.get();
+
+ NumericDocValues norms = (NumericDocValues) normFields.get(field);
+ if (norms != null) {
+ return norms;
+ } else {
+ FieldInfo fi = getFieldInfos().fieldInfo(field);
+ if (fi == null || !fi.hasNorms()) {
+ // Field does not exist or does not index norms
+ return null;
+ }
+ norms = getNormsReader().getNorms(fi);
+ normFields.put(field, norms);
+ return norms;
+ }
+ }
+
+ @Override
+ protected void doClose() throws IOException {
+ IOUtils.close(docValuesLocal, docsWithFieldLocal, normsLocal);
+ }
+
+ // nocommit
+ @Override
+ public void cutover() {}
+
+ // nocommit: this is all cutover API
+ // --------------------------------------------------------------------------
+ public static LeafReader2 hack(final LeafReader reader) throws IOException {
+ if (reader instanceof LeafReader2) {
+ return (LeafReader2) reader;
+ } else {
+ // simulate it, over the old leafReader api
+ return new LeafReader2() {
+
+ @Override
+ protected TermVectorsReader getTermVectorsReader() {
+ ensureOpen();
+ return readerToTermVectorsReader(reader);
+ }
+
+ @Override
+ protected StoredFieldsReader getFieldsReader() {
+ ensureOpen();
+ return readerToStoredFieldsReader(reader);
+ }
+
+ @Override
+ protected NormsProducer getNormsReader() {
+ ensureOpen();
+ return readerToNormsProducer(reader);
+ }
+
+ @Override
+ protected DocValuesProducer getDocValuesReader() {
+ ensureOpen();
+ return readerToDocValuesProducer(reader);
+ }
+
+ @Override
+ protected FieldsProducer getPostingsReader() {
+ ensureOpen();
+ try {
+ return readerToFieldsProducer(reader);
+ } catch (IOException bogus) {
+ throw new AssertionError(bogus);
+ }
+ }
+
+ @Override
+ public void addCoreClosedListener(CoreClosedListener listener) {
+ reader.addCoreClosedListener(listener);
+ }
+
+ @Override
+ public void removeCoreClosedListener(CoreClosedListener listener) {
+ reader.removeCoreClosedListener(listener);
+ }
+
+ @Override
+ public FieldInfos getFieldInfos() {
+ return reader.getFieldInfos();
+ }
+
+ @Override
+ public Bits getLiveDocs() {
+ return reader.getLiveDocs();
+ }
+
+ @Override
+ public int numDocs() {
+ return reader.numDocs();
+ }
+
+ @Override
+ public int maxDoc() {
+ return reader.maxDoc();
+ }
+
+ @Override
+ public Object getCoreCacheKey() {
+ return reader.getCoreCacheKey();
+ }
+ };
+ }
+ }
+
+ private static NormsProducer readerToNormsProducer(final LeafReader reader) {
+ return new NormsProducer() {
+
+ @Override
+ public NumericDocValues getNorms(FieldInfo field) throws IOException {
+ return reader.getNormValues(field.name);
+ }
+
+ @Override
+ public void checkIntegrity() throws IOException {
+ // We already checkIntegrity the entire reader up front in SegmentMerger
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+ };
+ }
+
+ private static DocValuesProducer readerToDocValuesProducer(final LeafReader reader) {
+ return new DocValuesProducer() {
+
+ @Override
+ public NumericDocValues getNumeric(FieldInfo field) throws IOException {
+ return reader.getNumericDocValues(field.name);
+ }
+
+ @Override
+ public BinaryDocValues getBinary(FieldInfo field) throws IOException {
+ return reader.getBinaryDocValues(field.name);
+ }
+
+ @Override
+ public SortedDocValues getSorted(FieldInfo field) throws IOException {
+ return reader.getSortedDocValues(field.name);
+ }
+
+ @Override
+ public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException {
+ return reader.getSortedNumericDocValues(field.name);
+ }
+
+ @Override
+ public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException {
+ return reader.getSortedSetDocValues(field.name);
+ }
+
+ @Override
+ public Bits getDocsWithField(FieldInfo field) throws IOException {
+ return reader.getDocsWithField(field.name);
+ }
+
+ @Override
+ public void checkIntegrity() throws IOException {
+ // We already checkIntegrity the entire reader up front in SegmentMerger
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+ };
+ }
+
+ private static StoredFieldsReader readerToStoredFieldsReader(final LeafReader reader) {
+ return new StoredFieldsReader() {
+ @Override
+ public void visitDocument(int docID, StoredFieldVisitor visitor) throws IOException {
+ reader.document(docID, visitor);
+ }
+
+ @Override
+ public StoredFieldsReader clone() {
+ return readerToStoredFieldsReader(reader);
+ }
+
+ @Override
+ public void checkIntegrity() throws IOException {
+ // We already checkIntegrity the entire reader up front in SegmentMerger
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+ };
+ }
+
+ private static TermVectorsReader readerToTermVectorsReader(final LeafReader reader) {
+ return new TermVectorsReader() {
+ @Override
+ public Fields get(int docID) throws IOException {
+ return reader.getTermVectors(docID);
+ }
+
+ @Override
+ public TermVectorsReader clone() {
+ return readerToTermVectorsReader(reader);
+ }
+
+ @Override
+ public void checkIntegrity() throws IOException {
+ // We already checkIntegrity the entire reader up front in SegmentMerger
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+ };
+ }
+
+ private static FieldsProducer readerToFieldsProducer(final LeafReader reader) throws IOException {
+ final Fields fields = reader.fields();
+ return new FieldsProducer() {
+ @Override
+ public Iterator<String> iterator() {
+ return fields.iterator();
+ }
+
+ @Override
+ public Terms terms(String field) throws IOException {
+ return fields.terms(field);
+ }
+
+ @Override
+ public int size() {
+ return fields.size();
+ }
+
+ @Override
+ public void checkIntegrity() throws IOException {
+ // We already checkIntegrity the entire reader up front in SegmentMerger
+ }
+
+ @Override
+ public void close() {
+ }
+
+ @Override
+ public long ramBytesUsed() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+ };
+ }
+}
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/MergeState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/MergeState.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/MergeState.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/MergeState.java Thu Nov 20 04:22:40 2014
@@ -18,8 +18,6 @@ package org.apache.lucene.index;
*/
import java.io.IOException;
-import java.util.Collections;
-import java.util.Iterator;
import java.util.List;
import org.apache.lucene.codecs.DocValuesProducer;
@@ -28,7 +26,6 @@ import org.apache.lucene.codecs.NormsPro
import org.apache.lucene.codecs.StoredFieldsReader;
import org.apache.lucene.codecs.TermVectorsReader;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.InfoStream;
import org.apache.lucene.util.packed.PackedInts;
@@ -108,47 +105,33 @@ public class MergeState {
liveDocs[i] = reader.getLiveDocs();
fieldInfos[i] = reader.getFieldInfos();
- NormsProducer normsProducer;
- DocValuesProducer docValuesProducer;
- StoredFieldsReader storedFieldsReader;
- TermVectorsReader termVectorsReader;
- FieldsProducer fieldsProducer;
- if (reader instanceof SegmentReader) {
- SegmentReader segmentReader = (SegmentReader) reader;
- normsProducer = segmentReader.getNormsReader();
- if (normsProducer != null) {
- normsProducer = normsProducer.getMergeInstance();
- }
- docValuesProducer = segmentReader.getDocValuesReader();
- if (docValuesProducer != null) {
- docValuesProducer = docValuesProducer.getMergeInstance();
- }
- storedFieldsReader = segmentReader.getFieldsReader();
- if (storedFieldsReader != null) {
- storedFieldsReader = storedFieldsReader.getMergeInstance();
- }
- termVectorsReader = segmentReader.getTermVectorsReader();
- if (termVectorsReader != null) {
- termVectorsReader = termVectorsReader.getMergeInstance();
- }
- fieldsProducer = segmentReader.fields();
- if (fieldsProducer != null) {
- fieldsProducer = fieldsProducer.getMergeInstance();
- }
- } else {
- // A "foreign" reader
- normsProducer = readerToNormsProducer(reader);
- docValuesProducer = readerToDocValuesProducer(reader);
- storedFieldsReader = readerToStoredFieldsReader(reader);
- termVectorsReader = readerToTermVectorsReader(reader);
- fieldsProducer = readerToFieldsProducer(reader);
+ // nocommit
+ LeafReader2 coreReader = LeafReader2.hack(reader);
+
+ normsProducers[i] = coreReader.getNormsReader();
+ if (normsProducers[i] != null) {
+ normsProducers[i] = normsProducers[i].getMergeInstance();
+ }
+
+ docValuesProducers[i] = coreReader.getDocValuesReader();
+ if (docValuesProducers[i] != null) {
+ docValuesProducers[i] = docValuesProducers[i].getMergeInstance();
+ }
+
+ storedFieldsReaders[i] = coreReader.getFieldsReader();
+ if (storedFieldsReaders[i] != null) {
+ storedFieldsReaders[i] = storedFieldsReaders[i].getMergeInstance();
+ }
+
+ termVectorsReaders[i] = coreReader.getTermVectorsReader();
+ if (termVectorsReaders[i] != null) {
+ termVectorsReaders[i] = termVectorsReaders[i].getMergeInstance();
+ }
+
+ fieldsProducers[i] = coreReader.getPostingsReader();
+ if (fieldsProducers[i] != null) {
+ fieldsProducers[i] = fieldsProducers[i].getMergeInstance();
}
-
- normsProducers[i] = normsProducer;
- docValuesProducers[i] = docValuesProducer;
- storedFieldsReaders[i] = storedFieldsReader;
- termVectorsReaders[i] = termVectorsReader;
- fieldsProducers[i] = fieldsProducer;
}
this.segmentInfo = segmentInfo;
@@ -158,193 +141,7 @@ public class MergeState {
setDocMaps(readers);
}
- private NormsProducer readerToNormsProducer(final LeafReader reader) {
- return new NormsProducer() {
-
- @Override
- public NumericDocValues getNorms(FieldInfo field) throws IOException {
- return reader.getNormValues(field.name);
- }
-
- @Override
- public void checkIntegrity() throws IOException {
- // We already checkIntegrity the entire reader up front in SegmentMerger
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public long ramBytesUsed() {
- return 0;
- }
-
- @Override
- public Iterable<? extends Accountable> getChildResources() {
- return Collections.emptyList();
- }
- };
- }
-
- private DocValuesProducer readerToDocValuesProducer(final LeafReader reader) {
- return new DocValuesProducer() {
-
- @Override
- public NumericDocValues getNumeric(FieldInfo field) throws IOException {
- return reader.getNumericDocValues(field.name);
- }
-
- @Override
- public BinaryDocValues getBinary(FieldInfo field) throws IOException {
- return reader.getBinaryDocValues(field.name);
- }
-
- @Override
- public SortedDocValues getSorted(FieldInfo field) throws IOException {
- return reader.getSortedDocValues(field.name);
- }
-
- @Override
- public SortedNumericDocValues getSortedNumeric(FieldInfo field) throws IOException {
- return reader.getSortedNumericDocValues(field.name);
- }
-
- @Override
- public SortedSetDocValues getSortedSet(FieldInfo field) throws IOException {
- return reader.getSortedSetDocValues(field.name);
- }
-
- @Override
- public Bits getDocsWithField(FieldInfo field) throws IOException {
- return reader.getDocsWithField(field.name);
- }
-
- @Override
- public void checkIntegrity() throws IOException {
- // We already checkIntegrity the entire reader up front in SegmentMerger
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public long ramBytesUsed() {
- return 0;
- }
-
- @Override
- public Iterable<? extends Accountable> getChildResources() {
- return Collections.emptyList();
- }
- };
- }
-
- private StoredFieldsReader readerToStoredFieldsReader(final LeafReader reader) {
- return new StoredFieldsReader() {
- @Override
- public void visitDocument(int docID, StoredFieldVisitor visitor) throws IOException {
- reader.document(docID, visitor);
- }
-
- @Override
- public StoredFieldsReader clone() {
- return readerToStoredFieldsReader(reader);
- }
-
- @Override
- public void checkIntegrity() throws IOException {
- // We already checkIntegrity the entire reader up front in SegmentMerger
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public long ramBytesUsed() {
- return 0;
- }
-
- @Override
- public Iterable<? extends Accountable> getChildResources() {
- return Collections.emptyList();
- }
- };
- }
-
- private TermVectorsReader readerToTermVectorsReader(final LeafReader reader) {
- return new TermVectorsReader() {
- @Override
- public Fields get(int docID) throws IOException {
- return reader.getTermVectors(docID);
- }
-
- @Override
- public TermVectorsReader clone() {
- return readerToTermVectorsReader(reader);
- }
- @Override
- public void checkIntegrity() throws IOException {
- // We already checkIntegrity the entire reader up front in SegmentMerger
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public long ramBytesUsed() {
- return 0;
- }
-
- @Override
- public Iterable<? extends Accountable> getChildResources() {
- return Collections.emptyList();
- }
- };
- }
-
- private FieldsProducer readerToFieldsProducer(final LeafReader reader) throws IOException {
- final Fields fields = reader.fields();
- return new FieldsProducer() {
- @Override
- public Iterator<String> iterator() {
- return fields.iterator();
- }
-
- @Override
- public Terms terms(String field) throws IOException {
- return fields.terms(field);
- }
-
- @Override
- public int size() {
- return fields.size();
- }
-
- @Override
- public void checkIntegrity() throws IOException {
- // We already checkIntegrity the entire reader up front in SegmentMerger
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public long ramBytesUsed() {
- return 0;
- }
-
- @Override
- public Iterable<? extends Accountable> getChildResources() {
- return Collections.emptyList();
- }
- };
- }
// NOTE: removes any "all deleted" readers from mergeState.readers
private void setDocMaps(List<LeafReader> readers) throws IOException {
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/ParallelLeafReader.java Thu Nov 20 04:22:40 2014
@@ -316,12 +316,4 @@ public class ParallelLeafReader extends
NumericDocValues values = reader == null ? null : reader.getNormValues(field);
return values;
}
-
- @Override
- public void checkIntegrity() throws IOException {
- ensureOpen();
- for (LeafReader reader : completeReaderSet) {
- reader.checkIntegrity();
- }
- }
}
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentCoreReaders.java Thu Nov 20 04:22:40 2014
@@ -19,9 +19,7 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.Collections;
-import java.util.HashMap;
import java.util.LinkedHashSet;
-import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
@@ -67,8 +65,7 @@ final class SegmentCoreReaders implement
final FieldInfos coreFieldInfos;
// TODO: make a single thread local w/ a
- // Thingy class holding fieldsReader, termVectorsReader,
- // normsProducer
+ // Thingy class holding fieldsReader, termVectorsReader
final CloseableThreadLocal<StoredFieldsReader> fieldsReaderLocal = new CloseableThreadLocal<StoredFieldsReader>() {
@Override
@@ -84,13 +81,6 @@ final class SegmentCoreReaders implement
}
};
- final CloseableThreadLocal<Map<String,Object>> normsLocal = new CloseableThreadLocal<Map<String,Object>>() {
- @Override
- protected Map<String,Object> initialValue() {
- return new HashMap<>();
- }
- };
-
private final Set<CoreClosedListener> coreClosedListeners =
Collections.synchronizedSet(new LinkedHashSet<CoreClosedListener>());
@@ -157,32 +147,13 @@ final class SegmentCoreReaders implement
throw new AlreadyClosedException("SegmentCoreReaders is already closed");
}
- NumericDocValues getNormValues(FieldInfos infos, String field) throws IOException {
- Map<String,Object> normFields = normsLocal.get();
-
- NumericDocValues norms = (NumericDocValues) normFields.get(field);
- if (norms != null) {
- return norms;
- } else {
- FieldInfo fi = infos.fieldInfo(field);
- if (fi == null || !fi.hasNorms()) {
- // Field does not exist or does not index norms
- return null;
- }
- assert normsProducer != null;
- norms = normsProducer.getNorms(fi);
- normFields.put(field, norms);
- return norms;
- }
- }
-
void decRef() throws IOException {
if (ref.decrementAndGet() == 0) {
// System.err.println("--- closing core readers");
Throwable th = null;
try {
- IOUtils.close(termVectorsLocal, fieldsReaderLocal, normsLocal, fields, termVectorsReaderOrig, fieldsReaderOrig,
- cfsReader, normsProducer);
+ IOUtils.close(termVectorsLocal, fieldsReaderLocal, fields, termVectorsReaderOrig, fieldsReaderOrig,
+ cfsReader, normsProducer);
} catch (Throwable throwable) {
th = throwable;
} finally {
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java Thu Nov 20 04:22:40 2014
@@ -51,15 +51,6 @@ final class SegmentMerger {
// note, just like in codec apis Directory 'dir' is NOT the same as segmentInfo.dir!!
SegmentMerger(List<LeafReader> readers, SegmentInfo segmentInfo, InfoStream infoStream, Directory dir,
MergeState.CheckAbort checkAbort, FieldInfos.FieldNumbers fieldNumbers, IOContext context) throws IOException {
- // validate incoming readers
- for (LeafReader reader : readers) {
- if ((reader instanceof SegmentReader) == false) {
- // We only validate foreign readers up front: each index component
- // calls .checkIntegrity itself for each incoming producer
- reader.checkIntegrity();
- }
- }
-
mergeState = new MergeState(readers, segmentInfo, infoStream, checkAbort);
directory = dir;
this.codec = segmentInfo.getCodec();
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SegmentReader.java Thu Nov 20 04:22:40 2014
@@ -20,9 +20,7 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.codecs.DocValuesProducer;
@@ -36,8 +34,6 @@ import org.apache.lucene.store.IOContext
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.Bits;
-import org.apache.lucene.util.CloseableThreadLocal;
-import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.RamUsageEstimator;
/**
@@ -47,7 +43,7 @@ import org.apache.lucene.util.RamUsageEs
* may share the same core data.
* @lucene.experimental
*/
-public final class SegmentReader extends LeafReader implements Accountable {
+public final class SegmentReader extends LeafReader2 implements Accountable {
private static final long BASE_RAM_BYTES_USED =
RamUsageEstimator.shallowSizeOfInstance(SegmentReader.class)
@@ -63,21 +59,6 @@ public final class SegmentReader extends
final SegmentCoreReaders core;
final SegmentDocValues segDocValues;
-
- final CloseableThreadLocal<Map<String,Object>> docValuesLocal = new CloseableThreadLocal<Map<String,Object>>() {
- @Override
- protected Map<String,Object> initialValue() {
- return new HashMap<>();
- }
- };
-
- final CloseableThreadLocal<Map<String,Bits>> docsWithFieldLocal = new CloseableThreadLocal<Map<String,Bits>>() {
- @Override
- protected Map<String,Bits> initialValue() {
- return new HashMap<>();
- }
- };
-
final DocValuesProducer docValuesProducer;
final FieldInfos fieldInfos;
@@ -196,7 +177,7 @@ public final class SegmentReader extends
core.decRef();
} finally {
try {
- IOUtils.close(docValuesLocal, docsWithFieldLocal);
+ super.doClose();
} finally {
if (docValuesProducer instanceof SegmentDocValuesProducer) {
segDocValues.decRef(((SegmentDocValuesProducer)docValuesProducer).dvGens);
@@ -212,18 +193,6 @@ public final class SegmentReader extends
ensureOpen();
return fieldInfos;
}
-
- @Override
- public void document(int docID, StoredFieldVisitor visitor) throws IOException {
- checkBounds(docID);
- getFieldsReader().visitDocument(docID, visitor);
- }
-
- @Override
- public FieldsProducer fields() {
- ensureOpen();
- return core.fields;
- }
@Override
public int numDocs() {
@@ -237,50 +206,34 @@ public final class SegmentReader extends
return si.info.getDocCount();
}
- /** Expert: retrieve thread-private {@link
- * TermVectorsReader}
- * @lucene.internal */
- public TermVectorsReader getTermVectorsReader() {
+ @Override
+ protected TermVectorsReader getTermVectorsReader() {
ensureOpen();
return core.termVectorsLocal.get();
}
- /** Expert: retrieve thread-private {@link
- * StoredFieldsReader}
- * @lucene.internal */
- public StoredFieldsReader getFieldsReader() {
+ @Override
+ protected StoredFieldsReader getFieldsReader() {
ensureOpen();
return core.fieldsReaderLocal.get();
}
- /** Expert: retrieve underlying NormsProducer
- * @lucene.internal */
- public NormsProducer getNormsReader() {
+ @Override
+ protected NormsProducer getNormsReader() {
ensureOpen();
return core.normsProducer;
}
- /** Expert: retrieve underlying DocValuesProducer
- * @lucene.internal */
- public DocValuesProducer getDocValuesReader() {
+ @Override
+ protected DocValuesProducer getDocValuesReader() {
ensureOpen();
return docValuesProducer;
}
@Override
- public Fields getTermVectors(int docID) throws IOException {
- TermVectorsReader termVectorsReader = getTermVectorsReader();
- if (termVectorsReader == null) {
- return null;
- }
- checkBounds(docID);
- return termVectorsReader.get(docID);
- }
-
- private void checkBounds(int docID) {
- if (docID < 0 || docID >= maxDoc()) {
- throw new IndexOutOfBoundsException("docID must be >= 0 and < maxDoc=" + maxDoc() + " (got docID=" + docID + ")");
- }
+ public FieldsProducer getPostingsReader() {
+ ensureOpen();
+ return core.fields;
}
@Override
@@ -322,157 +275,6 @@ public final class SegmentReader extends
// Today it passes "this" as its coreCacheKey:
return core;
}
-
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return this;
- }
-
- // returns the FieldInfo that corresponds to the given field and type, or
- // null if the field does not exist, or not indexed as the requested
- // DovDocValuesType.
- private FieldInfo getDVField(String field, DocValuesType type) {
- FieldInfo fi = fieldInfos.fieldInfo(field);
- if (fi == null) {
- // Field does not exist
- return null;
- }
- if (fi.getDocValuesType() == DocValuesType.NONE) {
- // Field was not indexed with doc values
- return null;
- }
- if (fi.getDocValuesType() != type) {
- // Field DocValues are different than requested type
- return null;
- }
-
- return fi;
- }
-
- @Override
- public NumericDocValues getNumericDocValues(String field) throws IOException {
- ensureOpen();
- Map<String,Object> dvFields = docValuesLocal.get();
-
- Object previous = dvFields.get(field);
- if (previous != null && previous instanceof NumericDocValues) {
- return (NumericDocValues) previous;
- } else {
- FieldInfo fi = getDVField(field, DocValuesType.NUMERIC);
- if (fi == null) {
- return null;
- }
- NumericDocValues dv = docValuesProducer.getNumeric(fi);
- dvFields.put(field, dv);
- return dv;
- }
- }
-
- @Override
- public Bits getDocsWithField(String field) throws IOException {
- ensureOpen();
- Map<String,Bits> dvFields = docsWithFieldLocal.get();
-
- Bits previous = dvFields.get(field);
- if (previous != null) {
- return previous;
- } else {
- FieldInfo fi = fieldInfos.fieldInfo(field);
- if (fi == null) {
- // Field does not exist
- return null;
- }
- if (fi.getDocValuesType() == DocValuesType.NONE) {
- // Field was not indexed with doc values
- return null;
- }
- Bits dv = docValuesProducer.getDocsWithField(fi);
- dvFields.put(field, dv);
- return dv;
- }
- }
-
- @Override
- public BinaryDocValues getBinaryDocValues(String field) throws IOException {
- ensureOpen();
- FieldInfo fi = getDVField(field, DocValuesType.BINARY);
- if (fi == null) {
- return null;
- }
-
- Map<String,Object> dvFields = docValuesLocal.get();
-
- BinaryDocValues dvs = (BinaryDocValues) dvFields.get(field);
- if (dvs == null) {
- dvs = docValuesProducer.getBinary(fi);
- dvFields.put(field, dvs);
- }
-
- return dvs;
- }
-
- @Override
- public SortedDocValues getSortedDocValues(String field) throws IOException {
- ensureOpen();
- Map<String,Object> dvFields = docValuesLocal.get();
-
- Object previous = dvFields.get(field);
- if (previous != null && previous instanceof SortedDocValues) {
- return (SortedDocValues) previous;
- } else {
- FieldInfo fi = getDVField(field, DocValuesType.SORTED);
- if (fi == null) {
- return null;
- }
- SortedDocValues dv = docValuesProducer.getSorted(fi);
- dvFields.put(field, dv);
- return dv;
- }
- }
-
- @Override
- public SortedNumericDocValues getSortedNumericDocValues(String field) throws IOException {
- ensureOpen();
- Map<String,Object> dvFields = docValuesLocal.get();
-
- Object previous = dvFields.get(field);
- if (previous != null && previous instanceof SortedNumericDocValues) {
- return (SortedNumericDocValues) previous;
- } else {
- FieldInfo fi = getDVField(field, DocValuesType.SORTED_NUMERIC);
- if (fi == null) {
- return null;
- }
- SortedNumericDocValues dv = docValuesProducer.getSortedNumeric(fi);
- dvFields.put(field, dv);
- return dv;
- }
- }
-
- @Override
- public SortedSetDocValues getSortedSetDocValues(String field) throws IOException {
- ensureOpen();
- Map<String,Object> dvFields = docValuesLocal.get();
-
- Object previous = dvFields.get(field);
- if (previous != null && previous instanceof SortedSetDocValues) {
- return (SortedSetDocValues) previous;
- } else {
- FieldInfo fi = getDVField(field, DocValuesType.SORTED_SET);
- if (fi == null) {
- return null;
- }
- SortedSetDocValues dv = docValuesProducer.getSortedSet(fi);
- dvFields.put(field, dv);
- return dv;
- }
- }
-
- @Override
- public NumericDocValues getNormValues(String field) throws IOException {
- ensureOpen();
- return core.getNormValues(fieldInfos, field);
- }
@Override
public void addCoreClosedListener(CoreClosedListener listener) {
@@ -520,33 +322,4 @@ public final class SegmentReader extends
}
return resources;
}
-
- @Override
- public void checkIntegrity() throws IOException {
- ensureOpen();
-
- // stored fields
- getFieldsReader().checkIntegrity();
-
- // term vectors
- TermVectorsReader termVectorsReader = getTermVectorsReader();
- if (termVectorsReader != null) {
- termVectorsReader.checkIntegrity();
- }
-
- // terms/postings
- if (core.fields != null) {
- core.fields.checkIntegrity();
- }
-
- // norms
- if (core.normsProducer != null) {
- core.normsProducer.checkIntegrity();
- }
-
- // docvalues
- if (docValuesProducer != null) {
- docValuesProducer.checkIntegrity();
- }
- }
}
Modified: lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/java/org/apache/lucene/index/SlowCompositeReaderWrapper.java Thu Nov 20 04:22:40 2014
@@ -243,21 +243,8 @@ public final class SlowCompositeReaderWr
}
@Override
- public Object getCombinedCoreAndDeletesKey() {
- return in.getCombinedCoreAndDeletesKey();
- }
-
- @Override
protected void doClose() throws IOException {
// TODO: as this is a wrapper, should we really close the delegate?
in.close();
}
-
- @Override
- public void checkIntegrity() throws IOException {
- ensureOpen();
- for (LeafReaderContext ctx : in.leaves()) {
- ctx.reader().checkIntegrity();
- }
- }
}
Modified: lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestAddIndexes.java Thu Nov 20 04:22:40 2014
@@ -1239,7 +1239,7 @@ public class TestAddIndexes extends Luce
Directory src = newDirectory(), dest = newDirectory();
RandomIndexWriter w = new RandomIndexWriter(random(), src);
w.addDocument(new Document());
- IndexReader allDeletedReader = new AllDeletedFilterReader(w.getReader().leaves().get(0).reader());
+ IndexReader allDeletedReader = new AllDeletedFilterReader(LeafReader2.hack(w.getReader().leaves().get(0).reader()));
w.close();
w = new RandomIndexWriter(random(), dest);
Modified: lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestIndexReaderClose.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestIndexReaderClose.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestIndexReaderClose.java (original)
+++ lucene/dev/branches/lucene6065/lucene/core/src/test/org/apache/lucene/index/TestIndexReaderClose.java Thu Nov 20 04:22:40 2014
@@ -44,7 +44,7 @@ public class TestIndexReaderClose extend
DirectoryReader open = DirectoryReader.open(dir);
final boolean throwOnClose = !rarely();
LeafReader wrap = SlowCompositeReaderWrapper.wrap(open);
- FilterLeafReader reader = new FilterLeafReader(wrap) {
+ FilterLeafReader2 reader = new FilterLeafReader2(LeafReader2.hack(wrap)) {
@Override
protected void doClose() throws IOException {
super.doClose();
Modified: lucene/dev/branches/lucene6065/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java (original)
+++ lucene/dev/branches/lucene6065/lucene/memory/src/java/org/apache/lucene/index/memory/MemoryIndex.java Thu Nov 20 04:22:40 2014
@@ -821,11 +821,6 @@ public class MemoryIndex {
return null;
}
- @Override
- public void checkIntegrity() throws IOException {
- // no-op
- }
-
private class MemoryFields extends Fields {
@Override
public Iterator<String> iterator() {
Modified: lucene/dev/branches/lucene6065/lucene/misc/src/java/org/apache/lucene/uninverting/UninvertingReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/misc/src/java/org/apache/lucene/uninverting/UninvertingReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/misc/src/java/org/apache/lucene/uninverting/UninvertingReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/misc/src/java/org/apache/lucene/uninverting/UninvertingReader.java Thu Nov 20 04:22:40 2014
@@ -304,11 +304,6 @@ public class UninvertingReader extends F
}
@Override
- public Object getCombinedCoreAndDeletesKey() {
- return in.getCombinedCoreAndDeletesKey();
- }
-
- @Override
public String toString() {
return "Uninverting(" + in.toString() + ")";
}
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AllDeletedFilterReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AllDeletedFilterReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AllDeletedFilterReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AllDeletedFilterReader.java Thu Nov 20 04:22:40 2014
@@ -22,10 +22,10 @@ import org.apache.lucene.util.Bits;
/**
* Filters the incoming reader and makes all documents appear deleted.
*/
-public class AllDeletedFilterReader extends FilterLeafReader {
+public class AllDeletedFilterReader extends FilterLeafReader2 {
final Bits liveDocs;
- public AllDeletedFilterReader(LeafReader in) {
+ public AllDeletedFilterReader(LeafReader2 in) {
super(in);
liveDocs = new Bits.MatchNoBits(in.maxDoc());
assert maxDoc() == 0 || hasDeletions();
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingDirectoryReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingDirectoryReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingDirectoryReader.java Thu Nov 20 04:22:40 2014
@@ -44,9 +44,4 @@ public class AssertingDirectoryReader ex
return in.getCoreCacheKey();
}
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return in.getCombinedCoreAndDeletesKey();
- }
-
}
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingLeafReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingLeafReader.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingLeafReader.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/AssertingLeafReader.java Thu Nov 20 04:22:40 2014
@@ -814,11 +814,6 @@ public class AssertingLeafReader extends
public Object getCoreCacheKey() {
return cacheKey;
}
-
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return cacheKey;
- }
private final Object cacheKey = new Object();
}
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java Thu Nov 20 04:22:40 2014
@@ -32,21 +32,12 @@ import org.apache.lucene.util.TestUtil;
*/
public class MockRandomMergePolicy extends MergePolicy {
private final Random random;
- boolean doNonBulkMerges = true;
public MockRandomMergePolicy(Random random) {
// fork a private random, since we are called
// unpredictably from threads:
this.random = new Random(random.nextLong());
}
-
- /**
- * Set to true if sometimes readers to be merged should be wrapped in a FilterReader
- * to mixup bulk merging.
- */
- public void setDoNonBulkMerges(boolean v) {
- doNonBulkMerges = v;
- }
@Override
public MergeSpecification findMerges(MergeTrigger mergeTrigger, SegmentInfos segmentInfos, IndexWriter writer) {
@@ -73,11 +64,7 @@ public class MockRandomMergePolicy exten
// TODO: sometimes make more than 1 merge?
mergeSpec = new MergeSpecification();
final int segsToMerge = TestUtil.nextInt(random, 1, numSegments);
- if (doNonBulkMerges) {
- mergeSpec.add(new MockRandomOneMerge(segments.subList(0, segsToMerge),random.nextLong()));
- } else {
- mergeSpec.add(new OneMerge(segments.subList(0, segsToMerge)));
- }
+ mergeSpec.add(new OneMerge(segments.subList(0, segsToMerge)));
}
return mergeSpec;
@@ -106,11 +93,7 @@ public class MockRandomMergePolicy exten
while(upto < eligibleSegments.size()) {
int max = Math.min(10, eligibleSegments.size()-upto);
int inc = max <= 2 ? max : TestUtil.nextInt(random, 2, max);
- if (doNonBulkMerges) {
- mergeSpec.add(new MockRandomOneMerge(eligibleSegments.subList(upto, upto+inc), random.nextLong()));
- } else {
- mergeSpec.add(new OneMerge(eligibleSegments.subList(upto, upto+inc)));
- }
+ mergeSpec.add(new OneMerge(eligibleSegments.subList(upto, upto+inc)));
upto += inc;
}
}
@@ -135,28 +118,4 @@ public class MockRandomMergePolicy exten
// 80% of the time we create CFS:
return random.nextInt(5) != 1;
}
-
- static class MockRandomOneMerge extends OneMerge {
- final Random r;
- ArrayList<LeafReader> readers;
-
- MockRandomOneMerge(List<SegmentCommitInfo> segments, long seed) {
- super(segments);
- r = new Random(seed);
- }
-
- @Override
- public List<LeafReader> getMergeReaders() throws IOException {
- if (readers == null) {
- readers = new ArrayList<LeafReader>(super.getMergeReaders());
- for (int i = 0; i < readers.size(); i++) {
- // wrap it (e.g. prevent bulk merge etc)
- if (r.nextInt(4) == 0) {
- readers.set(i, new FilterLeafReader(readers.get(i)));
- }
- }
- }
- return readers;
- }
- }
}
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/index/ThreadedIndexingAndSearchingTestCase.java Thu Nov 20 04:22:40 2014
@@ -445,9 +445,6 @@ public abstract class ThreadedIndexingAn
analyzer.setMaxTokenLength(TestUtil.nextInt(random(), 1, IndexWriter.MAX_TERM_LENGTH));
final IndexWriterConfig conf = newIndexWriterConfig(analyzer).setCommitOnClose(false);
conf.setInfoStream(new FailOnNonBulkMergesInfoStream());
- if (conf.getMergePolicy() instanceof MockRandomMergePolicy) {
- ((MockRandomMergePolicy)conf.getMergePolicy()).setDoNonBulkMerges(false);
- }
if (LuceneTestCase.TEST_NIGHTLY) {
// newIWConfig makes smallish max seg size, which
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java Thu Nov 20 04:22:40 2014
@@ -141,11 +141,6 @@ public class QueryUtils {
public Object getCoreCacheKey() {
return cacheKey;
}
-
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return cacheKey;
- }
}
/**
Modified: lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java (original)
+++ lucene/dev/branches/lucene6065/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java Thu Nov 20 04:22:40 2014
@@ -248,7 +248,6 @@ public final class TestUtil {
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
PrintStream infoStream = new PrintStream(bos, false, IOUtils.UTF_8);
- reader.checkIntegrity();
CheckIndex.testLiveDocs(reader, infoStream, true);
CheckIndex.testFieldInfos(reader, infoStream, true);
CheckIndex.testFieldNorms(reader, infoStream, true);
Modified: lucene/dev/branches/lucene6065/solr/core/src/java/org/apache/solr/search/Insanity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/solr/core/src/java/org/apache/solr/search/Insanity.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/solr/core/src/java/org/apache/solr/search/Insanity.java (original)
+++ lucene/dev/branches/lucene6065/solr/core/src/java/org/apache/solr/search/Insanity.java Thu Nov 20 04:22:40 2014
@@ -115,16 +115,11 @@ public class Insanity {
return fieldInfos;
}
- // important to override these, so fieldcaches are shared on what we wrap
+ // important to override this, so fieldcaches are shared on what we wrap
@Override
public Object getCoreCacheKey() {
return in.getCoreCacheKey();
}
-
- @Override
- public Object getCombinedCoreAndDeletesKey() {
- return in.getCombinedCoreAndDeletesKey();
- }
}
}
Modified: lucene/dev/branches/lucene6065/solr/core/src/test/org/apache/solr/search/TestDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6065/solr/core/src/test/org/apache/solr/search/TestDocSet.java?rev=1640670&r1=1640669&r2=1640670&view=diff
==============================================================================
--- lucene/dev/branches/lucene6065/solr/core/src/test/org/apache/solr/search/TestDocSet.java (original)
+++ lucene/dev/branches/lucene6065/solr/core/src/test/org/apache/solr/search/TestDocSet.java Thu Nov 20 04:22:40 2014
@@ -434,10 +434,6 @@ public class TestDocSet extends LuceneTe
@Override
public void document(int doc, StoredFieldVisitor visitor) {
}
-
- @Override
- public void checkIntegrity() throws IOException {
- }
};
}