Przeglądaj źródła

Revert "Expose external refreshes through the stats API (#38643)"

BWC is failing with this change.
This reverts commit 4d7348518f5bc11e88346d7ce0b148ad5413f9f9.
Nhat Nguyen 6 lat temu
rodzic
commit
ec2ce6e06d

+ 11 - 50
server/src/main/java/org/elasticsearch/index/refresh/RefreshStats.java

@@ -19,7 +19,6 @@
 
 package org.elasticsearch.index.refresh;
 
-import org.elasticsearch.Version;
 import org.elasticsearch.common.io.stream.StreamInput;
 import org.elasticsearch.common.io.stream.StreamOutput;
 import org.elasticsearch.common.io.stream.Streamable;
@@ -37,10 +36,6 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
 
     private long totalTimeInMillis;
 
-    private long externalTotal;
-
-    private long externalTotalTimeInMillis;
-
     /**
      * Number of waiting refresh listeners.
      */
@@ -52,29 +47,12 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
     public RefreshStats(StreamInput in) throws IOException {
         total = in.readVLong();
         totalTimeInMillis = in.readVLong();
-        if (in.getVersion().onOrAfter(Version.V_8_0_0)) {
-            externalTotal = in.readVLong();
-            externalTotalTimeInMillis = in.readVLong();
-        }
         listeners = in.readVInt();
     }
 
-    @Override
-    public void writeTo(StreamOutput out) throws IOException {
-        out.writeVLong(total);
-        out.writeVLong(totalTimeInMillis);
-        if (out.getVersion().onOrAfter(Version.V_8_0_0)) {
-            out.writeVLong(externalTotal);
-            out.writeVLong(externalTotalTimeInMillis);
-        }
-        out.writeVInt(listeners);
-    }
-
-    public RefreshStats(long total, long totalTimeInMillis, long externalTotal, long externalTotalTimeInMillis, int listeners) {
+    public RefreshStats(long total, long totalTimeInMillis, int listeners) {
         this.total = total;
         this.totalTimeInMillis = totalTimeInMillis;
-        this.externalTotal = externalTotal;
-        this.externalTotalTimeInMillis = externalTotalTimeInMillis;
         this.listeners = listeners;
     }
 
@@ -88,8 +66,6 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
         }
         this.total += refreshStats.total;
         this.totalTimeInMillis += refreshStats.totalTimeInMillis;
-        this.externalTotal += refreshStats.externalTotal;
-        this.externalTotalTimeInMillis += refreshStats.externalTotalTimeInMillis;
         this.listeners += refreshStats.listeners;
     }
 
@@ -100,38 +76,20 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
         return this.total;
     }
 
-    /*
-     * The total number of external refresh executed.
-     */
-    public long getExternalTotal() { return this.externalTotal; }
-
     /**
-     * The total time spent executing refreshes (in milliseconds).
+     * The total time merges have been executed (in milliseconds).
      */
     public long getTotalTimeInMillis() {
         return this.totalTimeInMillis;
     }
 
     /**
-     * The total time spent executing external refreshes (in milliseconds).
-     */
-    public long getExternalTotalTimeInMillis() {
-        return this.externalTotalTimeInMillis;
-    }
-
-    /**
-     * The total time refreshes have been executed.
+     * The total time merges have been executed.
      */
     public TimeValue getTotalTime() {
         return new TimeValue(totalTimeInMillis);
     }
 
-    /**
-     * The total time external refreshes have been executed.
-     */
-    public TimeValue getExternalTotalTime() {
-        return new TimeValue(externalTotalTimeInMillis);
-    }
     /**
      * The number of waiting refresh listeners.
      */
@@ -144,8 +102,6 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
         builder.startObject("refresh");
         builder.field("total", total);
         builder.humanReadableField("total_time_in_millis", "total_time", getTotalTime());
-        builder.field("external_total", externalTotal);
-        builder.humanReadableField("external_total_time_in_millis", "external_total_time", getExternalTotalTime());
         builder.field("listeners", listeners);
         builder.endObject();
         return builder;
@@ -156,6 +112,13 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
         throw new UnsupportedOperationException("usage of Streamable is to be replaced by Writeable");
     }
 
+    @Override
+    public void writeTo(StreamOutput out) throws IOException {
+        out.writeVLong(total);
+        out.writeVLong(totalTimeInMillis);
+        out.writeVInt(listeners);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (obj == null || obj.getClass() != RefreshStats.class) {
@@ -164,13 +127,11 @@ public class RefreshStats implements Streamable, Writeable, ToXContentFragment {
         RefreshStats rhs = (RefreshStats) obj;
         return total == rhs.total
                 && totalTimeInMillis == rhs.totalTimeInMillis
-                && externalTotal == rhs.externalTotal
-                && externalTotalTimeInMillis == rhs.externalTotalTimeInMillis
                 && listeners == rhs.listeners;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(total, totalTimeInMillis, externalTotal, externalTotalTimeInMillis, listeners);
+        return Objects.hash(total, totalTimeInMillis, listeners);
     }
 }

+ 2 - 9
server/src/main/java/org/elasticsearch/index/shard/IndexShard.java

@@ -222,7 +222,6 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
 
     private final RecoveryStats recoveryStats = new RecoveryStats();
     private final MeanMetric refreshMetric = new MeanMetric();
-    private final MeanMetric externalRefreshMetric = new MeanMetric();
     private final MeanMetric flushMetric = new MeanMetric();
     private final CounterMetric periodicFlushMetric = new CounterMetric();
 
@@ -931,12 +930,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
 
     public RefreshStats refreshStats() {
         int listeners = refreshListeners.pendingCount();
-        return new RefreshStats(
-            refreshMetric.count(),
-            TimeUnit.NANOSECONDS.toMillis(refreshMetric.sum()),
-            externalRefreshMetric.count(),
-            TimeUnit.NANOSECONDS.toMillis(externalRefreshMetric.sum()),
-            listeners);
+        return new RefreshStats(refreshMetric.count(), TimeUnit.NANOSECONDS.toMillis(refreshMetric.sum()), listeners);
     }
 
     public FlushStats flushStats() {
@@ -2904,8 +2898,7 @@ public class IndexShard extends AbstractIndexShardComponent implements IndicesCl
             indexSettings::getMaxRefreshListeners,
             () -> refresh("too_many_listeners"),
             threadPool.executor(ThreadPool.Names.LISTENER)::execute,
-            logger, threadPool.getThreadContext(),
-            externalRefreshMetric);
+            logger, threadPool.getThreadContext());
     }
 
     /**

+ 1 - 13
server/src/main/java/org/elasticsearch/index/shard/RefreshListeners.java

@@ -23,7 +23,6 @@ import org.apache.logging.log4j.Logger;
 import org.apache.lucene.search.ReferenceManager;
 import org.elasticsearch.common.collect.Tuple;
 import org.elasticsearch.common.lease.Releasable;
-import org.elasticsearch.common.metrics.MeanMetric;
 import org.elasticsearch.common.util.concurrent.RunOnce;
 import org.elasticsearch.common.util.concurrent.ThreadContext;
 import org.elasticsearch.index.translog.Translog;
@@ -51,12 +50,6 @@ public final class RefreshListeners implements ReferenceManager.RefreshListener,
     private final Executor listenerExecutor;
     private final Logger logger;
     private final ThreadContext threadContext;
-    private final MeanMetric refreshMetric;
-
-    /**
-     * Time in nanosecond when beforeRefresh() is called. Used for calculating refresh metrics.
-     */
-    private long currentRefreshStartTime;
 
     /**
      * Is this closed? If true then we won't add more listeners and have flushed all pending listeners.
@@ -83,13 +76,12 @@ public final class RefreshListeners implements ReferenceManager.RefreshListener,
     private volatile Translog.Location lastRefreshedLocation;
 
     public RefreshListeners(IntSupplier getMaxRefreshListeners, Runnable forceRefresh, Executor listenerExecutor, Logger logger,
-                            ThreadContext threadContext, MeanMetric refreshMetric) {
+                            ThreadContext threadContext) {
         this.getMaxRefreshListeners = getMaxRefreshListeners;
         this.forceRefresh = forceRefresh;
         this.listenerExecutor = listenerExecutor;
         this.logger = logger;
         this.threadContext = threadContext;
-        this.refreshMetric = refreshMetric;
     }
 
     /**
@@ -212,14 +204,10 @@ public final class RefreshListeners implements ReferenceManager.RefreshListener,
     @Override
     public void beforeRefresh() throws IOException {
         currentRefreshLocation = currentRefreshLocationSupplier.get();
-        currentRefreshStartTime = System.nanoTime();
     }
 
     @Override
     public void afterRefresh(boolean didRefresh) throws IOException {
-        // Increment refresh metric before communicating to listeners.
-        refreshMetric.inc(System.nanoTime() - currentRefreshStartTime);
-
         /* We intentionally ignore didRefresh here because our timing is a little off. It'd be a useful flag if we knew everything that made
          * it into the refresh, but the way we snapshot the translog position before the refresh, things can sneak into the refresh that we
          * don't know about. */

+ 0 - 14
server/src/main/java/org/elasticsearch/rest/action/cat/RestIndicesAction.java

@@ -289,14 +289,6 @@ public class RestIndicesAction extends AbstractCatAction {
         table.addCell("refresh.time", "sibling:pri;alias:rti,refreshTime;default:false;text-align:right;desc:time spent in refreshes");
         table.addCell("pri.refresh.time", "default:false;text-align:right;desc:time spent in refreshes");
 
-        table.addCell("refresh.external_total",
-            "sibling:pri;alias:rto,refreshTotal;default:false;text-align:right;desc:total external refreshes");
-        table.addCell("pri.refresh.external_total", "default:false;text-align:right;desc:total external refreshes");
-
-        table.addCell("refresh.external_time",
-            "sibling:pri;alias:rti,refreshTime;default:false;text-align:right;desc:time spent in external refreshes");
-        table.addCell("pri.refresh.external_time", "default:false;text-align:right;desc:time spent in external refreshes");
-
         table.addCell("refresh.listeners",
             "sibling:pri;alias:rli,refreshListeners;default:false;text-align:right;desc:number of pending refresh listeners");
         table.addCell("pri.refresh.listeners", "default:false;text-align:right;desc:number of pending refresh listeners");
@@ -570,12 +562,6 @@ public class RestIndicesAction extends AbstractCatAction {
             table.addCell(totalStats.getRefresh() == null ? null : totalStats.getRefresh().getTotalTime());
             table.addCell(primaryStats.getRefresh() == null ? null : primaryStats.getRefresh().getTotalTime());
 
-            table.addCell(totalStats.getRefresh() == null ? null : totalStats.getRefresh().getExternalTotal());
-            table.addCell(primaryStats.getRefresh() == null ? null : primaryStats.getRefresh().getExternalTotal());
-
-            table.addCell(totalStats.getRefresh() == null ? null : totalStats.getRefresh().getExternalTotalTime());
-            table.addCell(primaryStats.getRefresh() == null ? null : primaryStats.getRefresh().getExternalTotalTime());
-
             table.addCell(totalStats.getRefresh() == null ? null : totalStats.getRefresh().getListeners());
             table.addCell(primaryStats.getRefresh() == null ? null : primaryStats.getRefresh().getListeners());
 

+ 0 - 5
server/src/main/java/org/elasticsearch/rest/action/cat/RestNodesAction.java

@@ -201,9 +201,6 @@ public class RestNodesAction extends AbstractCatAction {
 
         table.addCell("refresh.total", "alias:rto,refreshTotal;default:false;text-align:right;desc:total refreshes");
         table.addCell("refresh.time", "alias:rti,refreshTime;default:false;text-align:right;desc:time spent in refreshes");
-        table.addCell("refresh.external_total", "alias:rto,refreshTotal;default:false;text-align:right;desc:total external refreshes");
-        table.addCell("refresh.external_time",
-            "alias:rti,refreshTime;default:false;text-align:right;desc:time spent in external refreshes");
         table.addCell("refresh.listeners", "alias:rli,refreshListeners;default:false;text-align:right;"
                 + "desc:number of pending refresh listeners");
 
@@ -381,8 +378,6 @@ public class RestNodesAction extends AbstractCatAction {
             RefreshStats refreshStats = indicesStats == null ? null : indicesStats.getRefresh();
             table.addCell(refreshStats == null ? null : refreshStats.getTotal());
             table.addCell(refreshStats == null ? null : refreshStats.getTotalTime());
-            table.addCell(refreshStats == null ? null : refreshStats.getExternalTotal());
-            table.addCell(refreshStats == null ? null : refreshStats.getExternalTotalTime());
             table.addCell(refreshStats == null ? null : refreshStats.getListeners());
 
             ScriptStats scriptStats = stats == null ? null : stats.getScriptStats();

+ 0 - 5
server/src/main/java/org/elasticsearch/rest/action/cat/RestShardsAction.java

@@ -164,9 +164,6 @@ public class RestShardsAction extends AbstractCatAction {
 
         table.addCell("refresh.total", "alias:rto,refreshTotal;default:false;text-align:right;desc:total refreshes");
         table.addCell("refresh.time", "alias:rti,refreshTime;default:false;text-align:right;desc:time spent in refreshes");
-        table.addCell("refresh.external_total", "alias:rto,refreshTotal;default:false;text-align:right;desc:total external refreshes");
-        table.addCell("refresh.external_time",
-            "alias:rti,refreshTime;default:false;text-align:right;desc:time spent in external refreshes");
         table.addCell("refresh.listeners",
             "alias:rli,refreshListeners;default:false;text-align:right;desc:number of pending refresh listeners");
 
@@ -322,8 +319,6 @@ public class RestShardsAction extends AbstractCatAction {
 
             table.addCell(getOrNull(commonStats, CommonStats::getRefresh, RefreshStats::getTotal));
             table.addCell(getOrNull(commonStats, CommonStats::getRefresh, RefreshStats::getTotalTime));
-            table.addCell(getOrNull(commonStats, CommonStats::getRefresh, RefreshStats::getExternalTotal));
-            table.addCell(getOrNull(commonStats, CommonStats::getRefresh, RefreshStats::getExternalTotalTime));
             table.addCell(getOrNull(commonStats, CommonStats::getRefresh, RefreshStats::getListeners));
 
             table.addCell(getOrNull(commonStats, CommonStats::getSearch, i -> i.getTotal().getFetchCurrent()));

+ 1 - 4
server/src/test/java/org/elasticsearch/index/refresh/RefreshStatsTests.java

@@ -28,17 +28,14 @@ import java.io.IOException;
 public class RefreshStatsTests extends ESTestCase {
 
     public void testSerialize() throws IOException {
-        RefreshStats stats = new RefreshStats(randomNonNegativeLong(), randomNonNegativeLong(), randomNonNegativeLong(),
-            randomNonNegativeLong(), between(0, Integer.MAX_VALUE));
+        RefreshStats stats = new RefreshStats(randomNonNegativeLong(), randomNonNegativeLong(), between(0, Integer.MAX_VALUE));
         BytesStreamOutput out = new BytesStreamOutput();
         stats.writeTo(out);
         StreamInput input = out.bytes().streamInput();
         RefreshStats read = new RefreshStats(input);
         assertEquals(-1, input.read());
         assertEquals(stats.getTotal(), read.getTotal());
-        assertEquals(stats.getExternalTotal(), read.getExternalTotal());
         assertEquals(stats.getListeners(), read.getListeners());
         assertEquals(stats.getTotalTimeInMillis(), read.getTotalTimeInMillis());
-        assertEquals(stats.getExternalTotalTimeInMillis(), read.getExternalTotalTimeInMillis());
     }
 }

+ 0 - 27
server/src/test/java/org/elasticsearch/index/shard/IndexShardTests.java

@@ -1511,33 +1511,6 @@ public class IndexShardTests extends IndexShardTestCase {
         closeShards(shard);
     }
 
-    public void testExternalRefreshMetric() throws IOException {
-        IndexShard shard = newStartedShard();
-        assertThat(shard.refreshStats().getExternalTotal(), equalTo(2L)); // refresh on: finalize and end of recovery
-        long initialTotalTime = shard.refreshStats().getExternalTotalTimeInMillis();
-        // check time advances
-        for (int i = 1; shard.refreshStats().getExternalTotalTimeInMillis() == initialTotalTime; i++) {
-            indexDoc(shard, "_doc", "test");
-            assertThat(shard.refreshStats().getExternalTotal(), equalTo(2L + i - 1));
-            shard.refresh("test");
-            assertThat(shard.refreshStats().getExternalTotal(), equalTo(2L + i));
-            assertThat(shard.refreshStats().getExternalTotalTimeInMillis(), greaterThanOrEqualTo(initialTotalTime));
-        }
-        long externalRefreshCount = shard.refreshStats().getExternalTotal();
-
-        indexDoc(shard, "_doc", "test");
-        try (Engine.GetResult ignored = shard.get(new Engine.Get(true, false, "_doc", "test",
-            new Term(IdFieldMapper.NAME, Uid.encodeId("test"))))) {
-            assertThat(shard.refreshStats().getExternalTotal(), equalTo(externalRefreshCount));
-            assertThat(shard.refreshStats().getExternalTotal(), equalTo(shard.refreshStats().getTotal() - 1));
-        }
-        indexDoc(shard, "_doc", "test");
-        shard.writeIndexingBuffer();
-        assertThat(shard.refreshStats().getExternalTotal(), equalTo(externalRefreshCount));
-        assertThat(shard.refreshStats().getExternalTotal(), equalTo(shard.refreshStats().getTotal() - 2));
-        closeShards(shard);
-    }
-
     public void testIndexingOperationsListeners() throws IOException {
         IndexShard shard = newStartedShard(true);
         indexDoc(shard, "_doc", "0", "{\"foo\" : \"bar\"}");

+ 1 - 5
server/src/test/java/org/elasticsearch/index/shard/RefreshListenersTests.java

@@ -33,7 +33,6 @@ import org.elasticsearch.common.bytes.BytesArray;
 import org.elasticsearch.common.bytes.BytesReference;
 import org.elasticsearch.common.lease.Releasable;
 import org.elasticsearch.common.lucene.uid.Versions;
-import org.elasticsearch.common.metrics.MeanMetric;
 import org.elasticsearch.common.settings.Settings;
 import org.elasticsearch.common.unit.TimeValue;
 import org.elasticsearch.common.util.BigArrays;
@@ -90,7 +89,6 @@ public class RefreshListenersTests extends ESTestCase {
     private volatile int maxListeners;
     private ThreadPool threadPool;
     private Store store;
-    private MeanMetric refreshMetric;
 
     @Before
     public void setupListeners() throws Exception {
@@ -98,15 +96,13 @@ public class RefreshListenersTests extends ESTestCase {
         maxListeners = randomIntBetween(1, 1000);
         // Now setup the InternalEngine which is much more complicated because we aren't mocking anything
         threadPool = new TestThreadPool(getTestName());
-        refreshMetric = new MeanMetric();
         listeners = new RefreshListeners(
                 () -> maxListeners,
                 () -> engine.refresh("too-many-listeners"),
                 // Immediately run listeners rather than adding them to the listener thread pool like IndexShard does to simplify the test.
                 Runnable::run,
                 logger,
-                threadPool.getThreadContext(),
-                refreshMetric);
+                threadPool.getThreadContext());
 
         IndexSettings indexSettings = IndexSettingsModule.newIndexSettings("index", Settings.EMPTY);
         ShardId shardId = new ShardId(new Index("index", "_na_"), 1);

+ 1 - 3
x-pack/plugin/monitoring/src/main/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDoc.java

@@ -162,7 +162,6 @@ public class IndexStatsMonitoringDoc extends FilteredMonitoringDoc {
                         "index_stats.primaries.segments.fixed_bit_set_memory_in_bytes",
                         "index_stats.primaries.store.size_in_bytes",
                         "index_stats.primaries.refresh.total_time_in_millis",
-                        "index_stats.primaries.refresh.external_total_time_in_millis",
                         "index_stats.total.docs.count",
                         "index_stats.total.fielddata.memory_size_in_bytes",
                         "index_stats.total.fielddata.evictions",
@@ -192,6 +191,5 @@ public class IndexStatsMonitoringDoc extends FilteredMonitoringDoc {
                         "index_stats.total.segments.version_map_memory_in_bytes",
                         "index_stats.total.segments.fixed_bit_set_memory_in_bytes",
                         "index_stats.total.store.size_in_bytes",
-                        "index_stats.total.refresh.total_time_in_millis",
-                        "index_stats.total.refresh.external_total_time_in_millis");
+                        "index_stats.total.refresh.total_time_in_millis");
 }

+ 37 - 41
x-pack/plugin/monitoring/src/test/java/org/elasticsearch/xpack/monitoring/collector/indices/IndexStatsMonitoringDocTests.java

@@ -42,7 +42,6 @@ import java.util.Date;
 import java.util.Locale;
 import java.util.Set;
 
-import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.greaterThanOrEqualTo;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
@@ -126,8 +125,7 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                 new IndexStatsMonitoringDoc("_cluster", 1502266739402L, 1506593717631L, node, indexStats, metaData, routingTable);
 
         final BytesReference xContent = XContentHelper.toXContent(document, XContentType.JSON, false);
-        assertThat(xContent.utf8ToString(), equalTo(
-                    "{"
+        assertEquals("{"
                      + "\"cluster_uuid\":\"_cluster\","
                      + "\"timestamp\":\"2017-08-09T08:18:59.402Z\","
                      + "\"interval_ms\":1506593717631,"
@@ -150,20 +148,19 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                            + "\"size_in_bytes\":13"
                          + "},"
                          + "\"indexing\":{"
-                           + "\"index_total\":16,"
-                           + "\"index_time_in_millis\":17,"
-                           + "\"throttle_time_in_millis\":18"
+                           + "\"index_total\":15,"
+                           + "\"index_time_in_millis\":16,"
+                           + "\"throttle_time_in_millis\":17"
                          + "},"
                          + "\"search\":{"
-                           + "\"query_total\":19,"
-                           + "\"query_time_in_millis\":20"
+                           + "\"query_total\":18,"
+                           + "\"query_time_in_millis\":19"
                          + "},"
                          + "\"merges\":{"
                            + "\"total_size_in_bytes\":4"
                          + "},"
                          + "\"refresh\":{"
-                           + "\"total_time_in_millis\":14,"
-                           + "\"external_total_time_in_millis\":15"
+                           + "\"total_time_in_millis\":14"
                          + "},"
                          + "\"query_cache\":{"
                            + "\"memory_size_in_bytes\":5,"
@@ -176,17 +173,17 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                            + "\"evictions\":3"
                          + "},"
                          + "\"segments\":{"
-                           + "\"count\":21,"
-                           + "\"memory_in_bytes\":22,"
-                           + "\"terms_memory_in_bytes\":23,"
-                           + "\"stored_fields_memory_in_bytes\":24,"
-                           + "\"term_vectors_memory_in_bytes\":25,"
-                           + "\"norms_memory_in_bytes\":26,"
-                           + "\"points_memory_in_bytes\":27,"
-                           + "\"doc_values_memory_in_bytes\":28,"
-                           + "\"index_writer_memory_in_bytes\":29,"
-                           + "\"version_map_memory_in_bytes\":30,"
-                           + "\"fixed_bit_set_memory_in_bytes\":31"
+                           + "\"count\":20,"
+                           + "\"memory_in_bytes\":21,"
+                           + "\"terms_memory_in_bytes\":22,"
+                           + "\"stored_fields_memory_in_bytes\":23,"
+                           + "\"term_vectors_memory_in_bytes\":24,"
+                           + "\"norms_memory_in_bytes\":25,"
+                           + "\"points_memory_in_bytes\":26,"
+                           + "\"doc_values_memory_in_bytes\":27,"
+                           + "\"index_writer_memory_in_bytes\":28,"
+                           + "\"version_map_memory_in_bytes\":29,"
+                           + "\"fixed_bit_set_memory_in_bytes\":30"
                          + "},"
                          + "\"request_cache\":{"
                            + "\"memory_size_in_bytes\":9,"
@@ -203,20 +200,19 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                            + "\"size_in_bytes\":13"
                          + "},"
                          + "\"indexing\":{"
-                           + "\"index_total\":16,"
-                           + "\"index_time_in_millis\":17,"
-                           + "\"throttle_time_in_millis\":18"
+                           + "\"index_total\":15,"
+                           + "\"index_time_in_millis\":16,"
+                           + "\"throttle_time_in_millis\":17"
                          + "},"
                          + "\"search\":{"
-                           + "\"query_total\":19,"
-                           + "\"query_time_in_millis\":20"
+                           + "\"query_total\":18,"
+                           + "\"query_time_in_millis\":19"
                          + "},"
                          + "\"merges\":{"
                            + "\"total_size_in_bytes\":4"
                          + "},"
                          + "\"refresh\":{"
-                           + "\"total_time_in_millis\":14,"
-                           + "\"external_total_time_in_millis\":15"
+                           + "\"total_time_in_millis\":14"
                          + "},"
                          + "\"query_cache\":{"
                            + "\"memory_size_in_bytes\":5,"
@@ -229,17 +225,17 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                            + "\"evictions\":3"
                          + "},"
                          + "\"segments\":{"
-                           + "\"count\":21,"
-                           + "\"memory_in_bytes\":22,"
-                           + "\"terms_memory_in_bytes\":23,"
-                           + "\"stored_fields_memory_in_bytes\":24,"
-                           + "\"term_vectors_memory_in_bytes\":25,"
-                           + "\"norms_memory_in_bytes\":26,"
-                           + "\"points_memory_in_bytes\":27,"
-                           + "\"doc_values_memory_in_bytes\":28,"
-                           + "\"index_writer_memory_in_bytes\":29,"
-                           + "\"version_map_memory_in_bytes\":30,"
-                           + "\"fixed_bit_set_memory_in_bytes\":31"
+                           + "\"count\":20,"
+                           + "\"memory_in_bytes\":21,"
+                           + "\"terms_memory_in_bytes\":22,"
+                           + "\"stored_fields_memory_in_bytes\":23,"
+                           + "\"term_vectors_memory_in_bytes\":24,"
+                           + "\"norms_memory_in_bytes\":25,"
+                           + "\"points_memory_in_bytes\":26,"
+                           + "\"doc_values_memory_in_bytes\":27,"
+                           + "\"index_writer_memory_in_bytes\":28,"
+                           + "\"version_map_memory_in_bytes\":29,"
+                           + "\"fixed_bit_set_memory_in_bytes\":30"
                          + "},"
                          + "\"request_cache\":{"
                            + "\"memory_size_in_bytes\":9,"
@@ -249,7 +245,7 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
                         + "}"
                         + "}"
                       + "}"
-                + "}"));
+                + "}", xContent.utf8ToString());
     }
 
     public void testToXContentWithNullStats() throws IOException {
@@ -326,7 +322,7 @@ public class IndexStatsMonitoringDocTests extends BaseFilteredMonitoringDocTestC
         commonStats.getQueryCache().add(new QueryCacheStats(++iota, ++iota, ++iota, ++iota, no));
         commonStats.getRequestCache().add(new RequestCacheStats(++iota, ++iota, ++iota, ++iota));
         commonStats.getStore().add(new StoreStats(++iota));
-        commonStats.getRefresh().add(new RefreshStats(no, ++iota, no, ++iota, (int) no));
+        commonStats.getRefresh().add(new RefreshStats(no, ++iota, (int) no));
 
         final IndexingStats.Stats indexingStats = new IndexingStats.Stats(++iota, ++iota, no, no, no, no, no, no, false, ++iota);
         commonStats.getIndexing().add(new IndexingStats(indexingStats, null));