|
|
@@ -19,13 +19,13 @@
|
|
|
package org.elasticsearch.index.engine;
|
|
|
|
|
|
import org.apache.lucene.index.LiveIndexWriterConfig;
|
|
|
+import org.elasticsearch.ElasticsearchIllegalArgumentException;
|
|
|
import org.elasticsearch.common.settings.ImmutableSettings;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.index.IndexService;
|
|
|
-import org.elasticsearch.index.engine.EngineConfig;
|
|
|
-import org.elasticsearch.index.engine.InternalEngine;
|
|
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
|
|
|
|
|
+import static org.hamcrest.Matchers.equalTo;
|
|
|
import static org.hamcrest.Matchers.is;
|
|
|
|
|
|
public class InternalEngineSettingsTest extends ElasticsearchSingleNodeTest {
|
|
|
@@ -41,14 +41,24 @@ public class InternalEngineSettingsTest extends ElasticsearchSingleNodeTest {
|
|
|
assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true));
|
|
|
|
|
|
|
|
|
+ // VERSION MAP SIZE
|
|
|
+ long indexBufferSize = engine.config().getIndexingBufferSize().bytes();
|
|
|
+ long versionMapSize = engine.config().getVersionMapSize().bytes();
|
|
|
+ assertThat(versionMapSize, equalTo((long) (indexBufferSize * 0.25)));
|
|
|
+
|
|
|
final int iters = between(1, 20);
|
|
|
for (int i = 0; i < iters; i++) {
|
|
|
boolean compoundOnFlush = randomBoolean();
|
|
|
long gcDeletes = Math.max(0, randomLong());
|
|
|
+ boolean versionMapAsPercent = randomBoolean();
|
|
|
+ double versionMapPercent = randomIntBetween(0, 100);
|
|
|
+ long versionMapSizeInMB = randomIntBetween(10, 20);
|
|
|
+ String versionMapString = versionMapAsPercent ? versionMapPercent + "%" : versionMapSizeInMB + "mb";
|
|
|
|
|
|
Settings build = ImmutableSettings.builder()
|
|
|
.put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, compoundOnFlush)
|
|
|
.put(EngineConfig.INDEX_GC_DELETES_SETTING, gcDeletes)
|
|
|
+ .put(EngineConfig.INDEX_VERSION_MAP_SIZE, versionMapString)
|
|
|
.build();
|
|
|
|
|
|
client().admin().indices().prepareUpdateSettings("foo").setSettings(build).get();
|
|
|
@@ -59,6 +69,14 @@ public class InternalEngineSettingsTest extends ElasticsearchSingleNodeTest {
|
|
|
|
|
|
assertEquals(engine.config().getGcDeletesInMillis(), gcDeletes);
|
|
|
assertEquals(engine.getGcDeletesInMillis(), gcDeletes);
|
|
|
+
|
|
|
+ indexBufferSize = engine.config().getIndexingBufferSize().bytes();
|
|
|
+ versionMapSize = engine.config().getVersionMapSize().bytes();
|
|
|
+ if (versionMapAsPercent) {
|
|
|
+ assertThat(versionMapSize, equalTo((long) (indexBufferSize * (versionMapPercent / 100))));
|
|
|
+ } else {
|
|
|
+ assertThat(versionMapSize, equalTo(1024 * 1024 * versionMapSizeInMB));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Settings settings = ImmutableSettings.builder()
|
|
|
@@ -84,6 +102,35 @@ public class InternalEngineSettingsTest extends ElasticsearchSingleNodeTest {
|
|
|
assertEquals(engine.getGcDeletesInMillis(), 1000);
|
|
|
assertTrue(engine.config().isEnableGcDeletes());
|
|
|
|
|
|
+ settings = ImmutableSettings.builder()
|
|
|
+ .put(EngineConfig.INDEX_VERSION_MAP_SIZE, "sdfasfd")
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
|
|
|
+ fail("settings update didn't fail, but should have");
|
|
|
+ } catch (ElasticsearchIllegalArgumentException e) {
|
|
|
+ // good
|
|
|
+ }
|
|
|
+
|
|
|
+ settings = ImmutableSettings.builder()
|
|
|
+ .put(EngineConfig.INDEX_VERSION_MAP_SIZE, "-12%")
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
|
|
|
+ fail("settings update didn't fail, but should have");
|
|
|
+ } catch (ElasticsearchIllegalArgumentException e) {
|
|
|
+ // good
|
|
|
+ }
|
|
|
+
|
|
|
+ settings = ImmutableSettings.builder()
|
|
|
+ .put(EngineConfig.INDEX_VERSION_MAP_SIZE, "130%")
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
|
|
|
+ fail("settings update didn't fail, but should have");
|
|
|
+ } catch (ElasticsearchIllegalArgumentException e) {
|
|
|
+ // good
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|