Example usage for org.apache.lucene.index LiveIndexWriterConfig getUseCompoundFile

List of usage examples for org.apache.lucene.index LiveIndexWriterConfig getUseCompoundFile

Introduction

In this page you can find the example usage for org.apache.lucene.index LiveIndexWriterConfig getUseCompoundFile.

Prototype

public boolean getUseCompoundFile() 

Source Link

Document

Returns true iff the IndexWriter packs newly written segments in a compound file.

Usage

From source file:org.elasticsearch.index.engine.InternalEngineSettingsTest.java

License:Apache License

public void testSettingsUpdate() {
    final IndexService service = createIndex("foo");
    InternalEngine engine = ((InternalEngine) engine(service));
    // INDEX_COMPOUND_ON_FLUSH
    assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(ImmutableSettings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, false).build())
            .get();/*w  w w .  ja  v a  2  s .c  om*/
    assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(false));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(ImmutableSettings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true).build())
            .get();
    assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true));

    // INDEX_CHECKSUM_ON_MERGE
    assertThat(engine.getCurrentIndexWriterConfig().getCheckIntegrityAtMerge(), is(false));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(ImmutableSettings.builder().put(EngineConfig.INDEX_CHECKSUM_ON_MERGE, true).build())
            .get();
    assertThat(engine.getCurrentIndexWriterConfig().getCheckIntegrityAtMerge(), is(true));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(ImmutableSettings.builder().put(EngineConfig.INDEX_CHECKSUM_ON_MERGE, false).build())
            .get();
    assertThat(engine.getCurrentIndexWriterConfig().getCheckIntegrityAtMerge(), is(false));

    // 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();
        boolean failOnCorruption = randomBoolean();
        boolean failOnMerge = randomBoolean();
        boolean checksumOnMerge = 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_FAIL_ON_CORRUPTION_SETTING, failOnCorruption)
                .put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, compoundOnFlush)
                .put(EngineConfig.INDEX_GC_DELETES_SETTING, gcDeletes)
                .put(EngineConfig.INDEX_FAIL_ON_MERGE_FAILURE_SETTING, failOnMerge)
                .put(EngineConfig.INDEX_CHECKSUM_ON_MERGE, checksumOnMerge)
                .put(EngineConfig.INDEX_VERSION_MAP_SIZE, versionMapString).build();

        client().admin().indices().prepareUpdateSettings("foo").setSettings(build).get();
        LiveIndexWriterConfig currentIndexWriterConfig = engine.getCurrentIndexWriterConfig();
        assertEquals(engine.config().isCompoundOnFlush(), compoundOnFlush);
        assertEquals(currentIndexWriterConfig.getUseCompoundFile(), compoundOnFlush);

        assertEquals(engine.config().getGcDeletesInMillis(), gcDeletes);
        assertEquals(engine.getGcDeletesInMillis(), gcDeletes);
        assertEquals(engine.config().isFailEngineOnCorruption(), failOnCorruption);
        assertEquals(engine.config().isFailOnMergeFailure(), failOnMerge); // only on the holder
        assertEquals(currentIndexWriterConfig.getCheckIntegrityAtMerge(), checksumOnMerge);

        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().put(EngineConfig.INDEX_GC_DELETES_SETTING, 1000).build();
    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    assertEquals(engine.getGcDeletesInMillis(), 1000);
    assertTrue(engine.config().isEnableGcDeletes());

    settings = ImmutableSettings.builder().put(EngineConfig.INDEX_GC_DELETES_SETTING, "0ms").build();

    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    assertEquals(engine.getGcDeletesInMillis(), 0);
    assertTrue(engine.config().isEnableGcDeletes());

    settings = ImmutableSettings.builder().put(EngineConfig.INDEX_GC_DELETES_SETTING, 1000).build();
    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    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
    }
}

From source file:org.elasticsearch.index.engine.InternalEngineSettingsTests.java

License:Apache License

public void testSettingsUpdate() {
    final IndexService service = createIndex("foo");
    // INDEX_COMPOUND_ON_FLUSH
    InternalEngine engine = ((InternalEngine) engine(service));
    assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(true));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, false).build()).get();
    assertThat(engine.getCurrentIndexWriterConfig().getUseCompoundFile(), is(false));
    client().admin().indices().prepareUpdateSettings("foo")
            .setSettings(Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, true).build()).get();
    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();

        // Tricky: TimeValue.parseTimeValue casts this long to a double, which steals 11 of the 64 bits for exponent, so we can't use
        // the full long range here else the assert below fails:
        long gcDeletes = random().nextLong() & (Long.MAX_VALUE >> 11);

        boolean versionMapAsPercent = randomBoolean();
        double versionMapPercent = randomIntBetween(0, 100);
        long versionMapSizeInMB = randomIntBetween(10, 20);
        String versionMapString = versionMapAsPercent ? versionMapPercent + "%" : versionMapSizeInMB + "mb";

        Settings build = Settings.builder().put(EngineConfig.INDEX_COMPOUND_ON_FLUSH, compoundOnFlush)
                .put(EngineConfig.INDEX_GC_DELETES_SETTING, gcDeletes, TimeUnit.MILLISECONDS)
                .put(EngineConfig.INDEX_VERSION_MAP_SIZE, versionMapString).build();
        assertEquals(gcDeletes, build.getAsTime(EngineConfig.INDEX_GC_DELETES_SETTING, null).millis());

        client().admin().indices().prepareUpdateSettings("foo").setSettings(build).get();
        LiveIndexWriterConfig currentIndexWriterConfig = engine.getCurrentIndexWriterConfig();
        assertEquals(engine.config().isCompoundOnFlush(), compoundOnFlush);
        assertEquals(currentIndexWriterConfig.getUseCompoundFile(), compoundOnFlush);

        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 {/*w w  w  .  ja  v  a  2s  . co m*/
            assertThat(versionMapSize, equalTo(1024 * 1024 * versionMapSizeInMB));
        }
    }

    Settings settings = Settings.builder()
            .put(EngineConfig.INDEX_GC_DELETES_SETTING, 1000, TimeUnit.MILLISECONDS).build();
    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    assertEquals(engine.getGcDeletesInMillis(), 1000);
    assertTrue(engine.config().isEnableGcDeletes());

    settings = Settings.builder().put(EngineConfig.INDEX_GC_DELETES_SETTING, "0ms").build();

    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    assertEquals(engine.getGcDeletesInMillis(), 0);
    assertTrue(engine.config().isEnableGcDeletes());

    settings = Settings.builder().put(EngineConfig.INDEX_GC_DELETES_SETTING, 1000, TimeUnit.MILLISECONDS)
            .build();
    client().admin().indices().prepareUpdateSettings("foo").setSettings(settings).get();
    assertEquals(engine.getGcDeletesInMillis(), 1000);
    assertTrue(engine.config().isEnableGcDeletes());

    settings = Settings.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 (IllegalArgumentException e) {
        // good
    }

    settings = Settings.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 (IllegalArgumentException e) {
        // good
    }

    settings = Settings.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 (IllegalArgumentException e) {
        // good
    }
}