|
@@ -21,6 +21,7 @@ package org.elasticsearch.index;
|
|
|
|
|
|
import org.apache.lucene.search.MatchAllDocsQuery;
|
|
|
import org.apache.lucene.search.TopDocs;
|
|
|
+import org.elasticsearch.cluster.metadata.IndexMetaData;
|
|
|
import org.elasticsearch.common.Strings;
|
|
|
import org.elasticsearch.common.compress.CompressedXContent;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
@@ -320,9 +321,7 @@ public class IndexServiceTests extends ESSingleNodeTestCase {
|
|
|
assertTrue(indexService.getRefreshTask().mustReschedule());
|
|
|
client().prepareIndex("test", "test", "1").setSource("{\"foo\": \"bar\"}", XContentType.JSON).get();
|
|
|
IndexShard shard = indexService.getShard(0);
|
|
|
- assertBusy(() -> {
|
|
|
- assertFalse(shard.isSyncNeeded());
|
|
|
- });
|
|
|
+ assertBusy(() -> assertFalse(shard.isSyncNeeded()));
|
|
|
}
|
|
|
|
|
|
public void testRescheduleAsyncFsync() throws Exception {
|
|
@@ -394,4 +393,39 @@ public class IndexServiceTests extends ESSingleNodeTestCase {
|
|
|
assertEquals("failed to parse value [0ms] for setting [index.translog.sync_interval], must be >= [100ms]", ex.getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public void testUpdateSyncIntervalDynamically() {
|
|
|
+ Settings settings = Settings.builder()
|
|
|
+ .put(IndexSettings.INDEX_TRANSLOG_SYNC_INTERVAL_SETTING.getKey(), "10s") // very often :)
|
|
|
+ .build();
|
|
|
+ IndexService indexService = createIndex("test", settings);
|
|
|
+ ensureGreen("test");
|
|
|
+ assertNull(indexService.getFsyncTask());
|
|
|
+
|
|
|
+ Settings.Builder builder = Settings.builder().put(IndexSettings.INDEX_TRANSLOG_SYNC_INTERVAL_SETTING.getKey(), "5s")
|
|
|
+ .put(IndexSettings.INDEX_TRANSLOG_DURABILITY_SETTING.getKey(), Translog.Durability.ASYNC.name());
|
|
|
+
|
|
|
+ client()
|
|
|
+ .admin()
|
|
|
+ .indices()
|
|
|
+ .prepareUpdateSettings("test")
|
|
|
+ .setSettings(builder)
|
|
|
+ .get();
|
|
|
+
|
|
|
+ assertNotNull(indexService.getFsyncTask());
|
|
|
+ assertTrue(indexService.getFsyncTask().mustReschedule());
|
|
|
+
|
|
|
+ IndexMetaData indexMetaData = client().admin().cluster().prepareState().execute().actionGet().getState().metaData().index("test");
|
|
|
+ assertEquals("5s", indexMetaData.getSettings().get(IndexSettings.INDEX_TRANSLOG_SYNC_INTERVAL_SETTING.getKey()));
|
|
|
+
|
|
|
+ client().admin().indices().prepareClose("test").get();
|
|
|
+ client()
|
|
|
+ .admin()
|
|
|
+ .indices()
|
|
|
+ .prepareUpdateSettings("test")
|
|
|
+ .setSettings(Settings.builder().put(IndexSettings.INDEX_TRANSLOG_SYNC_INTERVAL_SETTING.getKey(), "20s"))
|
|
|
+ .get();
|
|
|
+ indexMetaData = client().admin().cluster().prepareState().execute().actionGet().getState().metaData().index("test");
|
|
|
+ assertEquals("20s", indexMetaData.getSettings().get(IndexSettings.INDEX_TRANSLOG_SYNC_INTERVAL_SETTING.getKey()));
|
|
|
+ }
|
|
|
}
|