From a22bd493a4f8eb303be6beb85c43b4638b37611a Mon Sep 17 00:00:00 2001 From: Lee Hinman Date: Tue, 17 Feb 2015 09:46:35 -0700 Subject: [PATCH] [CORE] move InternalEngine.segmentStats() into abstract Engine --- .../elasticsearch/index/engine/Engine.java | 29 +++++++++++++++++-- .../index/engine/InternalEngine.java | 27 +++-------------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/elasticsearch/index/engine/Engine.java b/src/main/java/org/elasticsearch/index/engine/Engine.java index 00c256d0bb49f..0a758b4af6736 100644 --- a/src/main/java/org/elasticsearch/index/engine/Engine.java +++ b/src/main/java/org/elasticsearch/index/engine/Engine.java @@ -283,7 +283,30 @@ protected void ensureOpen() { /** * 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) { ensureOpen(); @@ -405,7 +428,9 @@ public final boolean refreshNeeded() { /** * 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 diff --git a/src/main/java/org/elasticsearch/index/engine/InternalEngine.java b/src/main/java/org/elasticsearch/index/engine/InternalEngine.java index c8b925fc97b4a..ed7879f064a8b 100644 --- a/src/main/java/org/elasticsearch/index/engine/InternalEngine.java +++ b/src/main/java/org/elasticsearch/index/engine/InternalEngine.java @@ -706,11 +706,6 @@ private void waitForMerges(boolean flushAfter, boolean upgrade) { } } - @Override - public void forceMerge(boolean flush) { - forceMerge(flush, 1, false, false); - } - @Override public void forceMerge(final boolean flush, int maxNumSegments, boolean onlyExpungeDeletes, final boolean upgrade) throws EngineException { if (optimizeMutex.compareAndSet(false, true)) { @@ -846,24 +841,10 @@ protected boolean maybeFailEngine(String source, Throwable t) { } @Override - public 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())); - } - stats.addVersionMapMemoryInBytes(versionMap.ramBytesUsed()); - stats.addIndexWriterMemoryInBytes(indexWriter.ramBytesUsed()); - stats.addIndexWriterMaxMemoryInBytes((long) (indexWriter.getConfig().getRAMBufferSizeMB() * 1024 * 1024)); - return stats; - } + protected final void writerSegmentStats(SegmentsStats stats) { + stats.addVersionMapMemoryInBytes(versionMap.ramBytesUsed()); + stats.addIndexWriterMemoryInBytes(indexWriter.ramBytesUsed()); + stats.addIndexWriterMaxMemoryInBytes((long) (indexWriter.getConfig().getRAMBufferSizeMB() * 1024 * 1024)); } @Override