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/09/16 15:26:58 UTC
svn commit: r1625275 [4/4] - in /lucene/dev/trunk: lucene/
lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene40/
lucene/backward-codecs/src/java/org/apache/lucene/codecs/lucene42/
lucene/backward-codecs/src/java/org/apache/lucene/codecs/lu...
Modified: lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/uninverting/FieldCacheImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/uninverting/FieldCacheImpl.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/uninverting/FieldCacheImpl.java (original)
+++ lucene/dev/trunk/lucene/misc/src/java/org/apache/lucene/uninverting/FieldCacheImpl.java Tue Sep 16 13:26:55 2014
@@ -20,6 +20,7 @@ package org.apache.lucene.uninverting;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -38,6 +39,7 @@ import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSetIterator;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
@@ -379,6 +381,11 @@ class FieldCacheImpl implements FieldCac
return base + (bits.length() >>> 3);
}
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
static final class DocsWithFieldCache extends Cache {
@@ -479,6 +486,11 @@ class FieldCacheImpl implements FieldCac
public long ramBytesUsed() {
return values.ramBytesUsed() + RamUsageEstimator.NUM_BYTES_OBJECT_REF + RamUsageEstimator.NUM_BYTES_LONG;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
static final class LongCache extends Cache {
@@ -597,6 +609,15 @@ class FieldCacheImpl implements FieldCac
3*RamUsageEstimator.NUM_BYTES_OBJECT_REF +
RamUsageEstimator.NUM_BYTES_INT;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ List<Accountable> resources = new ArrayList<>();
+ resources.add(Accountables.namedAccountable("term bytes", bytes));
+ resources.add(Accountables.namedAccountable("ord -> term", termOrdToBytesOffset));
+ resources.add(Accountables.namedAccountable("doc -> ord", docToTermOrd));
+ return resources;
+ }
}
public SortedDocValues getTermsIndex(AtomicReader reader, String field) throws IOException {
@@ -731,6 +752,13 @@ class FieldCacheImpl implements FieldCac
public long ramBytesUsed() {
return bytes.ramBytesUsed() + docToOffset.ramBytesUsed() + 2*RamUsageEstimator.NUM_BYTES_OBJECT_REF;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ List<Accountable> resources = new ArrayList<>();
+ resources.add(Accountables.namedAccountable("term bytes", bytes));
+ return resources;
+ }
}
// TODO: this if DocTermsIndex was already created, we
Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/IDVersionPostingsReader.java Tue Sep 16 13:26:55 2014
@@ -18,6 +18,7 @@ package org.apache.lucene.codecs.idversi
*/
import java.io.IOException;
+import java.util.Collections;
import org.apache.lucene.codecs.BlockTermState;
import org.apache.lucene.codecs.CodecUtil;
@@ -27,6 +28,7 @@ import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.store.DataInput;
import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.BitUtil;
import org.apache.lucene.util.Bits;
@@ -95,8 +97,18 @@ final class IDVersionPostingsReader exte
public long ramBytesUsed() {
return 0;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
@Override
public void checkIntegrity() throws IOException {
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName();
+ }
}
Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionBlockTreeTermsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionBlockTreeTermsReader.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionBlockTreeTermsReader.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionBlockTreeTermsReader.java Tue Sep 16 13:26:55 2014
@@ -18,8 +18,10 @@ package org.apache.lucene.codecs.idversi
*/
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.TreeMap;
import org.apache.lucene.codecs.CodecUtil;
@@ -34,6 +36,8 @@ import org.apache.lucene.index.Terms;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.fst.PairOutputs.Pair;
@@ -242,11 +246,19 @@ public final class VersionBlockTreeTerms
@Override
public long ramBytesUsed() {
- long sizeInByes = ((postingsReader!=null) ? postingsReader.ramBytesUsed() : 0);
+ long sizeInBytes = postingsReader.ramBytesUsed();
for(VersionFieldReader reader : fields.values()) {
- sizeInByes += reader.ramBytesUsed();
+ sizeInBytes += reader.ramBytesUsed();
}
- return sizeInByes;
+ return sizeInBytes;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ List<Accountable> resources = new ArrayList<>();
+ resources.addAll(Accountables.namedAccountables("field", fields));
+ resources.add(Accountables.namedAccountable("delegate", postingsReader));
+ return Collections.unmodifiableList(resources);
}
@Override
@@ -257,4 +269,9 @@ public final class VersionBlockTreeTerms
// postings
postingsReader.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(fields=" + fields.size() + ",delegate=" + postingsReader.toString() + ")";
+ }
}
Modified: lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionFieldReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionFieldReader.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionFieldReader.java (original)
+++ lucene/dev/trunk/lucene/sandbox/src/java/org/apache/lucene/codecs/idversion/VersionFieldReader.java Tue Sep 16 13:26:55 2014
@@ -18,6 +18,7 @@ package org.apache.lucene.codecs.idversi
*/
import java.io.IOException;
+import java.util.Collections;
import org.apache.lucene.index.FieldInfo;
import org.apache.lucene.index.FieldInfo.IndexOptions;
@@ -26,6 +27,7 @@ import org.apache.lucene.index.TermsEnum
import org.apache.lucene.store.ByteArrayDataInput;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.fst.FST;
import org.apache.lucene.util.fst.PairOutputs.Pair;
@@ -159,4 +161,18 @@ final class VersionFieldReader extends T
public long ramBytesUsed() {
return ((index!=null)? index.ramBytesUsed() : 0);
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ if (index == null) {
+ return Collections.emptyList();
+ } else {
+ return Collections.singletonList(Accountables.namedAccountable("term index", index));
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "IDVersionTerms(terms=" + numTerms + ",postings=" + sumDocFreq + ",positions=" + sumTotalTermFreq + ",docs=" + docCount + ")";
+ }
}
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/Lookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/Lookup.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/Lookup.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/Lookup.java Tue Sep 16 13:26:55 2014
@@ -30,6 +30,7 @@ import org.apache.lucene.store.DataOutpu
import org.apache.lucene.store.InputStreamDataInput;
import org.apache.lucene.store.OutputStreamDataOutput;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.PriorityQueue;
@@ -268,4 +269,13 @@ public abstract class Lookup implements
*/
public abstract boolean load(DataInput input) throws IOException;
+ /**
+ * Returns nested resources of this class.
+ * The result should be a point-in-time snapshot (to avoid race conditions).
+ * @see Accountables
+ */
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return null;
+ }
}
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingInfixSuggester.java Tue Sep 16 13:26:55 2014
@@ -78,6 +78,8 @@ import org.apache.lucene.store.DataInput
import org.apache.lucene.store.DataOutput;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.RamUsageEstimator;
import org.apache.lucene.util.Version;
@@ -725,6 +727,29 @@ public class AnalyzingInfixSuggester ext
}
@Override
+ public Iterable<? extends Accountable> getChildResources() {
+ List<Accountable> resources = new ArrayList<>();
+ try {
+ if (searcherMgr != null) {
+ IndexSearcher searcher = searcherMgr.acquire();
+ try {
+ for (AtomicReaderContext context : searcher.getIndexReader().leaves()) {
+ AtomicReader reader = FilterAtomicReader.unwrap(context.reader());
+ if (reader instanceof SegmentReader) {
+ resources.add(Accountables.namedAccountable("segment", (SegmentReader)reader));
+ }
+ }
+ } finally {
+ searcherMgr.release(searcher);
+ }
+ }
+ return resources;
+ } catch (IOException ioe) {
+ throw new RuntimeException(ioe);
+ }
+ }
+
+ @Override
public long getCount() throws IOException {
if (searcherMgr == null) {
return 0;
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/AnalyzingSuggester.java Tue Sep 16 13:26:55 2014
@@ -37,6 +37,8 @@ import org.apache.lucene.store.ByteArray
import org.apache.lucene.store.ByteArrayDataOutput;
import org.apache.lucene.store.DataInput;
import org.apache.lucene.store.DataOutput;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
@@ -258,6 +260,15 @@ public class AnalyzingSuggester extends
return fst == null ? 0 : fst.ramBytesUsed();
}
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ if (fst == null) {
+ return Collections.emptyList();
+ } else {
+ return Collections.singletonList(Accountables.namedAccountable("fst", fst));
+ }
+ }
+
private int[] topoSortStates(Automaton a) {
int[] states = new int[a.getNumStates()];
final Set<Integer> visited = new HashSet<>();
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FreeTextSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FreeTextSuggester.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FreeTextSuggester.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/analyzing/FreeTextSuggester.java Tue Sep 16 13:26:55 2014
@@ -49,6 +49,8 @@ import org.apache.lucene.store.DataInput
import org.apache.lucene.store.DataOutput;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
import org.apache.lucene.util.CharsRefBuilder;
@@ -210,6 +212,15 @@ public class FreeTextSuggester extends L
return fst.ramBytesUsed();
}
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ if (fst == null) {
+ return Collections.emptyList();
+ } else {
+ return Collections.singletonList(Accountables.namedAccountable("fst", fst));
+ }
+ }
+
private static class AnalyzingComparator implements Comparator<BytesRef> {
private final ByteArrayDataInput readerA = new ByteArrayDataInput();
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/FSTCompletionLookup.java Tue Sep 16 13:26:55 2014
@@ -33,6 +33,7 @@ import org.apache.lucene.store.ByteArray
import org.apache.lucene.store.DataInput;
import org.apache.lucene.store.DataOutput;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
@@ -314,6 +315,18 @@ public class FSTCompletionLookup extends
}
@Override
+ public Iterable<? extends Accountable> getChildResources() {
+ List<Accountable> resources = new ArrayList<>();
+ if (normalCompletion != null) {
+ resources.add(Accountables.namedAccountable("fst", normalCompletion.getFST()));
+ }
+ if (higherWeightsCompletion != null && (normalCompletion == null || normalCompletion.getFST() != higherWeightsCompletion.getFST())) {
+ resources.add(Accountables.namedAccountable("higher weights fst", higherWeightsCompletion.getFST()));
+ }
+ return resources;
+ }
+
+ @Override
public long getCount() {
return count;
}
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/fst/WFSTCompletionLookup.java Tue Sep 16 13:26:55 2014
@@ -31,6 +31,8 @@ import org.apache.lucene.store.ByteArray
import org.apache.lucene.store.ByteArrayDataOutput;
import org.apache.lucene.store.DataInput;
import org.apache.lucene.store.DataOutput;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
@@ -299,6 +301,15 @@ public class WFSTCompletionLookup extend
}
@Override
+ public Iterable<? extends Accountable> getChildResources() {
+ if (fst == null) {
+ return Collections.emptyList();
+ } else {
+ return Collections.singleton(Accountables.namedAccountable("fst", fst));
+ }
+ }
+
+ @Override
public long getCount() {
return count;
}
Modified: lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java (original)
+++ lucene/dev/trunk/lucene/suggest/src/java/org/apache/lucene/search/suggest/jaspell/JaspellTernarySearchTrie.java Tue Sep 16 13:26:55 2014
@@ -32,6 +32,7 @@ package org.apache.lucene.search.suggest
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
+import java.util.Collections;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
@@ -110,7 +111,11 @@ public class JaspellTernarySearchTrie im
}
return mem;
}
-
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
/**
@@ -898,5 +903,9 @@ public class JaspellTernarySearchTrie im
}
return mem;
}
-
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingDocValuesFormat.java Tue Sep 16 13:26:55 2014
@@ -19,7 +19,6 @@ package org.apache.lucene.codecs.asserti
import java.io.IOException;
import java.util.Iterator;
-import java.util.NoSuchElementException;
import org.apache.lucene.codecs.DocValuesConsumer;
import org.apache.lucene.codecs.DocValuesFormat;
@@ -34,10 +33,12 @@ import org.apache.lucene.index.SegmentWr
import org.apache.lucene.index.SortedDocValues;
import org.apache.lucene.index.SortedNumericDocValues;
import org.apache.lucene.index.SortedSetDocValues;
+import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
import org.apache.lucene.util.LongBitSet;
+import org.apache.lucene.util.TestUtil;
/**
* Just like {@link Lucene410DocValuesFormat} but with additional asserts.
@@ -80,7 +81,7 @@ public class AssertingDocValuesFormat ex
count++;
}
assert count == maxDoc;
- checkIterator(values.iterator(), maxDoc, true);
+ TestUtil.checkIterator(values.iterator(), maxDoc, true);
in.addNumericField(field, values);
}
@@ -92,7 +93,7 @@ public class AssertingDocValuesFormat ex
count++;
}
assert count == maxDoc;
- checkIterator(values.iterator(), maxDoc, true);
+ TestUtil.checkIterator(values.iterator(), maxDoc, true);
in.addBinaryField(field, values);
}
@@ -126,8 +127,8 @@ public class AssertingDocValuesFormat ex
assert count == maxDoc;
assert seenOrds.cardinality() == valueCount;
- checkIterator(values.iterator(), valueCount, false);
- checkIterator(docToOrd.iterator(), maxDoc, false);
+ TestUtil.checkIterator(values.iterator(), valueCount, false);
+ TestUtil.checkIterator(docToOrd.iterator(), maxDoc, false);
in.addSortedField(field, values, docToOrd);
}
@@ -150,8 +151,8 @@ public class AssertingDocValuesFormat ex
}
}
assert valueIterator.hasNext() == false;
- checkIterator(docToValueCount.iterator(), maxDoc, false);
- checkIterator(values.iterator(), valueCount, false);
+ TestUtil.checkIterator(docToValueCount.iterator(), maxDoc, false);
+ TestUtil.checkIterator(values.iterator(), valueCount, false);
in.addSortedNumericField(field, docToValueCount, values);
}
@@ -195,9 +196,9 @@ public class AssertingDocValuesFormat ex
assert docCount == maxDoc;
assert seenOrds.cardinality() == valueCount;
- checkIterator(values.iterator(), valueCount, false);
- checkIterator(docToOrdCount.iterator(), maxDoc, false);
- checkIterator(ords.iterator(), ordCount, false);
+ TestUtil.checkIterator(values.iterator(), valueCount, false);
+ TestUtil.checkIterator(docToOrdCount.iterator(), maxDoc, false);
+ TestUtil.checkIterator(ords.iterator(), ordCount, false);
in.addSortedSetField(field, values, docToOrdCount, ords);
}
@@ -207,28 +208,6 @@ public class AssertingDocValuesFormat ex
}
}
- static <T> void checkIterator(Iterator<T> iterator, long expectedSize, boolean allowNull) {
- for (long i = 0; i < expectedSize; i++) {
- boolean hasNext = iterator.hasNext();
- assert hasNext;
- T v = iterator.next();
- assert allowNull || v != null;
- try {
- iterator.remove();
- throw new AssertionError("broken iterator (supports remove): " + iterator);
- } catch (UnsupportedOperationException expected) {
- // ok
- }
- }
- assert !iterator.hasNext();
- try {
- iterator.next();
- throw new AssertionError("broken iterator (allows next() when hasNext==false) " + iterator);
- } catch (NoSuchElementException expected) {
- // ok
- }
- }
-
static class AssertingDocValuesProducer extends DocValuesProducer {
private final DocValuesProducer in;
private final int maxDoc;
@@ -236,6 +215,10 @@ public class AssertingDocValuesFormat ex
AssertingDocValuesProducer(DocValuesProducer in, int maxDoc) {
this.in = in;
this.maxDoc = maxDoc;
+ // do a few simple checks on init
+ assert toString() != null;
+ assert ramBytesUsed() >= 0;
+ assert getChildResources() != null;
}
@Override
@@ -294,12 +277,26 @@ public class AssertingDocValuesFormat ex
@Override
public long ramBytesUsed() {
- return in.ramBytesUsed();
+ long v = in.ramBytesUsed();
+ assert v >= 0;
+ return v;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ Iterable<? extends Accountable> res = in.getChildResources();
+ TestUtil.checkIterator(res.iterator());
+ return res;
}
@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in.toString() + ")";
+ }
}
}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingNormsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingNormsFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingNormsFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingNormsFormat.java Tue Sep 16 13:26:55 2014
@@ -28,6 +28,8 @@ import org.apache.lucene.index.FieldInfo
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.index.SegmentReadState;
import org.apache.lucene.index.SegmentWriteState;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.TestUtil;
/**
* Just like {@link Lucene49NormsFormat} but with additional asserts.
@@ -67,7 +69,7 @@ public class AssertingNormsFormat extend
count++;
}
assert count == maxDoc;
- AssertingDocValuesFormat.checkIterator(values.iterator(), maxDoc, false);
+ TestUtil.checkIterator(values.iterator(), maxDoc, false);
in.addNormsField(field, values);
}
@@ -84,6 +86,10 @@ public class AssertingNormsFormat extend
AssertingNormsProducer(NormsProducer in, int maxDoc) {
this.in = in;
this.maxDoc = maxDoc;
+ // do a few simple checks on init
+ assert toString() != null;
+ assert ramBytesUsed() >= 0;
+ assert getChildResources() != null;
}
@Override
@@ -101,12 +107,26 @@ public class AssertingNormsFormat extend
@Override
public long ramBytesUsed() {
- return in.ramBytesUsed();
+ long v = in.ramBytesUsed();
+ assert v >= 0;
+ return v;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ Iterable<? extends Accountable> res = in.getChildResources();
+ TestUtil.checkIterator(res.iterator());
+ return res;
}
@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in.toString() + ")";
+ }
}
}
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPostingsFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPostingsFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingPostingsFormat.java Tue Sep 16 13:26:55 2014
@@ -33,8 +33,10 @@ import org.apache.lucene.index.SegmentRe
import org.apache.lucene.index.SegmentWriteState;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
+import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.BytesRefBuilder;
+import org.apache.lucene.util.TestUtil;
/**
* Just like {@link Lucene41PostingsFormat} but with additional asserts.
@@ -61,6 +63,10 @@ public final class AssertingPostingsForm
AssertingFieldsProducer(FieldsProducer in) {
this.in = in;
+ // do a few simple checks on init
+ assert toString() != null;
+ assert ramBytesUsed() >= 0;
+ assert getChildResources() != null;
}
@Override
@@ -88,13 +94,27 @@ public final class AssertingPostingsForm
@Override
public long ramBytesUsed() {
- return in.ramBytesUsed();
+ long v = in.ramBytesUsed();
+ assert v >= 0;
+ return v;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ Iterable<? extends Accountable> res = in.getChildResources();
+ TestUtil.checkIterator(res.iterator());
+ return res;
}
@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in.toString() + ")";
+ }
}
static class AssertingFieldsConsumer extends FieldsConsumer {
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingStoredFieldsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingStoredFieldsFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingStoredFieldsFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingStoredFieldsFormat.java Tue Sep 16 13:26:55 2014
@@ -30,6 +30,8 @@ import org.apache.lucene.index.StorableF
import org.apache.lucene.index.StoredFieldVisitor;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
+import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.TestUtil;
/**
* Just like {@link Lucene41StoredFieldsFormat} but with additional asserts.
@@ -54,6 +56,10 @@ public class AssertingStoredFieldsFormat
AssertingStoredFieldsReader(StoredFieldsReader in, int maxDoc) {
this.in = in;
this.maxDoc = maxDoc;
+ // do a few simple checks on init
+ assert toString() != null;
+ assert ramBytesUsed() >= 0;
+ assert getChildResources() != null;
}
@Override
@@ -74,13 +80,27 @@ public class AssertingStoredFieldsFormat
@Override
public long ramBytesUsed() {
- return in.ramBytesUsed();
+ long v = in.ramBytesUsed();
+ assert v >= 0;
+ return v;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ Iterable<? extends Accountable> res = in.getChildResources();
+ TestUtil.checkIterator(res.iterator());
+ return res;
}
@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in.toString() + ")";
+ }
}
enum Status {
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingTermVectorsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingTermVectorsFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingTermVectorsFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/asserting/AssertingTermVectorsFormat.java Tue Sep 16 13:26:55 2014
@@ -30,7 +30,9 @@ import org.apache.lucene.index.Fields;
import org.apache.lucene.index.SegmentInfo;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
+import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.util.TestUtil;
/**
* Just like {@link Lucene42TermVectorsFormat} but with additional asserts.
@@ -53,6 +55,10 @@ public class AssertingTermVectorsFormat
AssertingTermVectorsReader(TermVectorsReader in) {
this.in = in;
+ // do a few simple checks on init
+ assert toString() != null;
+ assert ramBytesUsed() >= 0;
+ assert getChildResources() != null;
}
@Override
@@ -73,13 +79,27 @@ public class AssertingTermVectorsFormat
@Override
public long ramBytesUsed() {
- return in.ramBytesUsed();
+ long v = in.ramBytesUsed();
+ assert v >= 0;
+ return v;
+ }
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ Iterable<? extends Accountable> res = in.getChildResources();
+ TestUtil.checkIterator(res.iterator());
+ return res;
}
@Override
public void checkIntegrity() throws IOException {
in.checkIntegrity();
}
+
+ @Override
+ public String toString() {
+ return getClass().getSimpleName() + "(" + in.toString() + ")";
+ }
}
enum Status {
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/codecs/ramonly/RAMOnlyPostingsFormat.java Tue Sep 16 13:26:55 2014
@@ -46,6 +46,7 @@ import org.apache.lucene.index.TermsEnum
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.Bits;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.FixedBitSet;
@@ -95,6 +96,11 @@ public final class RAMOnlyPostingsFormat
}
return sizeInBytes;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Accountables.namedAccountables("field", fieldToTerms);
+ }
@Override
public void checkIntegrity() throws IOException {}
@@ -123,6 +129,11 @@ public final class RAMOnlyPostingsFormat
}
@Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
+
+ @Override
public long size() {
return termToDocs.size();
}
@@ -184,6 +195,11 @@ public final class RAMOnlyPostingsFormat
}
return sizeInBytes;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
static class RAMDoc implements Accountable {
@@ -208,6 +224,11 @@ public final class RAMOnlyPostingsFormat
}
return sizeInBytes;
}
+
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Collections.emptyList();
+ }
}
// Classes for writing to the postings state
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/util/TestUtil.java Tue Sep 16 13:26:55 2014
@@ -29,8 +29,10 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.NoSuchElementException;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
@@ -67,6 +69,7 @@ import org.apache.lucene.index.Concurren
import org.apache.lucene.index.DocsAndPositionsEnum;
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.FieldInfo.DocValuesType;
+import org.apache.lucene.index.FilterAtomicReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexableField;
@@ -74,6 +77,7 @@ import org.apache.lucene.index.LogMergeP
import org.apache.lucene.index.MergePolicy;
import org.apache.lucene.index.MergeScheduler;
import org.apache.lucene.index.MultiFields;
+import org.apache.lucene.index.SegmentReader;
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.index.TieredMergePolicy;
@@ -127,6 +131,66 @@ public final class TestUtil {
}
}
+ /**
+ * Checks that the provided iterator is well-formed.
+ * <ul>
+ * <li>is read-only: does not allow {@code remove}
+ * <li>returns {@code expectedSize} number of elements
+ * <li>does not return null elements, unless {@code allowNull} is true.
+ * <li>throws NoSuchElementException if {@code next} is called
+ * after {@code hasNext} returns false.
+ * </ul>
+ */
+ public static <T> void checkIterator(Iterator<T> iterator, long expectedSize, boolean allowNull) {
+ for (long i = 0; i < expectedSize; i++) {
+ boolean hasNext = iterator.hasNext();
+ assert hasNext;
+ T v = iterator.next();
+ assert allowNull || v != null;
+ try {
+ iterator.remove();
+ throw new AssertionError("broken iterator (supports remove): " + iterator);
+ } catch (UnsupportedOperationException expected) {
+ // ok
+ }
+ }
+ assert !iterator.hasNext();
+ try {
+ iterator.next();
+ throw new AssertionError("broken iterator (allows next() when hasNext==false) " + iterator);
+ } catch (NoSuchElementException expected) {
+ // ok
+ }
+ }
+
+ /**
+ * Checks that the provided iterator is well-formed.
+ * <ul>
+ * <li>is read-only: does not allow {@code remove}
+ * <li>does not return null elements.
+ * <li>throws NoSuchElementException if {@code next} is called
+ * after {@code hasNext} returns false.
+ * </ul>
+ */
+ public static <T> void checkIterator(Iterator<T> iterator) {
+ while (iterator.hasNext()) {
+ T v = iterator.next();
+ assert v != null;
+ try {
+ iterator.remove();
+ throw new AssertionError("broken iterator (supports remove): " + iterator);
+ } catch (UnsupportedOperationException expected) {
+ // ok
+ }
+ }
+ try {
+ iterator.next();
+ throw new AssertionError("broken iterator (allows next() when hasNext==false) " + iterator);
+ } catch (NoSuchElementException expected) {
+ // ok
+ }
+ }
+
public static void syncConcurrentMerges(IndexWriter writer) {
syncConcurrentMerges(writer.getConfig().getMergeScheduler());
}
@@ -190,6 +254,16 @@ public final class TestUtil {
if (LuceneTestCase.INFOSTREAM) {
System.out.println(bos.toString(IOUtils.UTF_8));
}
+
+ AtomicReader unwrapped = FilterAtomicReader.unwrap(reader);
+ if (unwrapped instanceof SegmentReader) {
+ SegmentReader sr = (SegmentReader) unwrapped;
+ long bytesUsed = sr.ramBytesUsed();
+ if (sr.ramBytesUsed() < 0) {
+ throw new IllegalStateException("invalid ramBytesUsed for reader: " + bytesUsed);
+ }
+ assert Accountables.toString(sr) != null;
+ }
}
/** start and end are BOTH inclusive */
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SuggestComponent.java Tue Sep 16 13:26:55 2014
@@ -33,6 +33,7 @@ import java.util.concurrent.ConcurrentHa
import org.apache.lucene.search.suggest.Lookup;
import org.apache.lucene.search.suggest.Lookup.LookupResult;
import org.apache.lucene.util.Accountable;
+import org.apache.lucene.util.Accountables;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRef;
import org.apache.solr.common.SolrException;
@@ -340,6 +341,11 @@ public class SuggestComponent extends Se
return sizeInBytes;
}
+ @Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return Accountables.namedAccountables("field", suggesters);
+ }
+
private Set<SolrSuggester> getSuggesters(SolrParams params) {
Set<SolrSuggester> solrSuggesters = new HashSet<>();
for(String suggesterName : getSuggesterNames(params)) {
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java?rev=1625275&r1=1625274&r2=1625275&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java Tue Sep 16 13:26:55 2014
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.Collections;
import java.util.List;
import org.apache.lucene.search.spell.Dictionary;
@@ -212,6 +213,11 @@ public class SolrSuggester implements Ac
}
@Override
+ public Iterable<? extends Accountable> getChildResources() {
+ return lookup.getChildResources();
+ }
+
+ @Override
public String toString() {
return "SolrSuggester [ name=" + name + ", "
+ "sourceLocation=" + sourceLocation + ", "