[CORE] move InternalEngine.segmentStats() into abstract Engine

This commit is contained in:
Lee Hinman 2015-02-17 09:46:35 -07:00
parent add4339446
commit a22bd493a4
2 changed files with 31 additions and 25 deletions

View file

@ -283,7 +283,30 @@ public abstract class Engine implements Closeable {
/** /**
* Global stats on segments. * Global stats on segments.
*/ */
public abstract SegmentsStats segmentsStats(); public final SegmentsStats segmentsStats() {
ensureOpen();
try (final Searcher searcher = acquireSearcher("segments_stats")) {
SegmentsStats stats = new SegmentsStats();
for (LeafReaderContext reader : searcher.reader().leaves()) {
final SegmentReader segmentReader = segmentReader(reader.reader());
stats.add(1, segmentReader.ramBytesUsed());
stats.addTermsMemoryInBytes(guardedRamBytesUsed(segmentReader.getPostingsReader()));
stats.addStoredFieldsMemoryInBytes(guardedRamBytesUsed(segmentReader.getFieldsReader()));
stats.addTermVectorsMemoryInBytes(guardedRamBytesUsed(segmentReader.getTermVectorsReader()));
stats.addNormsMemoryInBytes(guardedRamBytesUsed(segmentReader.getNormsReader()));
stats.addDocValuesMemoryInBytes(guardedRamBytesUsed(segmentReader.getDocValuesReader()));
}
writerSegmentStats(stats);
return stats;
}
}
protected void writerSegmentStats(SegmentsStats stats) {
// by default we don't have a writer here... subclasses can override this
stats.addVersionMapMemoryInBytes(0);
stats.addIndexWriterMemoryInBytes(0);
stats.addIndexWriterMaxMemoryInBytes(0);
}
protected Segment[] getSegmentInfo(SegmentInfos lastCommittedSegmentInfos, boolean verbose) { protected Segment[] getSegmentInfo(SegmentInfos lastCommittedSegmentInfos, boolean verbose) {
ensureOpen(); ensureOpen();
@ -405,7 +428,9 @@ public abstract class Engine implements Closeable {
/** /**
* Optimizes to 1 segment * Optimizes to 1 segment
*/ */
abstract void forceMerge(boolean flush); public void forceMerge(boolean flush) {
forceMerge(flush, 1, false, false);
}
/** /**
* Triggers a forced merge on this engine * Triggers a forced merge on this engine

View file

@ -706,11 +706,6 @@ public class InternalEngine extends Engine {
} }
} }
@Override
public void forceMerge(boolean flush) {
forceMerge(flush, 1, false, false);
}
@Override @Override
public void forceMerge(final boolean flush, int maxNumSegments, boolean onlyExpungeDeletes, final boolean upgrade) throws EngineException { public void forceMerge(final boolean flush, int maxNumSegments, boolean onlyExpungeDeletes, final boolean upgrade) throws EngineException {
if (optimizeMutex.compareAndSet(false, true)) { if (optimizeMutex.compareAndSet(false, true)) {
@ -846,24 +841,10 @@ public class InternalEngine extends Engine {
} }
@Override @Override
public SegmentsStats segmentsStats() { protected final void writerSegmentStats(SegmentsStats stats) {
ensureOpen(); stats.addVersionMapMemoryInBytes(versionMap.ramBytesUsed());
try (final Searcher searcher = acquireSearcher("segments_stats")) { stats.addIndexWriterMemoryInBytes(indexWriter.ramBytesUsed());
SegmentsStats stats = new SegmentsStats(); stats.addIndexWriterMaxMemoryInBytes((long) (indexWriter.getConfig().getRAMBufferSizeMB() * 1024 * 1024));
for (LeafReaderContext reader : searcher.reader().leaves()) {
final SegmentReader segmentReader = segmentReader(reader.reader());
stats.add(1, segmentReader.ramBytesUsed());
stats.addTermsMemoryInBytes(guardedRamBytesUsed(segmentReader.getPostingsReader()));
stats.addStoredFieldsMemoryInBytes(guardedRamBytesUsed(segmentReader.getFieldsReader()));
stats.addTermVectorsMemoryInBytes(guardedRamBytesUsed(segmentReader.getTermVectorsReader()));
stats.addNormsMemoryInBytes(guardedRamBytesUsed(segmentReader.getNormsReader()));
stats.addDocValuesMemoryInBytes(guardedRamBytesUsed(segmentReader.getDocValuesReader()));
}
stats.addVersionMapMemoryInBytes(versionMap.ramBytesUsed());
stats.addIndexWriterMemoryInBytes(indexWriter.ramBytesUsed());
stats.addIndexWriterMaxMemoryInBytes((long) (indexWriter.getConfig().getRAMBufferSizeMB() * 1024 * 1024));
return stats;
}
} }
@Override @Override