当前位置: 首页>>代码示例>>Java>>正文


Java IndexService.getShardOrNull方法代码示例

本文整理汇总了Java中org.elasticsearch.index.IndexService.getShardOrNull方法的典型用法代码示例。如果您正苦于以下问题:Java IndexService.getShardOrNull方法的具体用法?Java IndexService.getShardOrNull怎么用?Java IndexService.getShardOrNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.elasticsearch.index.IndexService的用法示例。


在下文中一共展示了IndexService.getShardOrNull方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testSingleShardSuccess

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testSingleShardSuccess() throws InterruptedException {
    createIndex("test");
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    final ShardId shardId = shard.shardId();
    SyncedFlushUtil.LatchedListener<ShardsSyncedFlushResult> listener = new SyncedFlushUtil.LatchedListener();
    flushService.attemptSyncedFlush(shardId, listener);
    listener.latch.await();
    assertNull(listener.error);
    ShardsSyncedFlushResult syncedFlushResult = listener.result;
    assertNotNull(syncedFlushResult);
    assertEquals(1, syncedFlushResult.successfulShards());
    assertEquals(1, syncedFlushResult.totalShards());
    SyncedFlushService.ShardSyncedFlushResponse response = syncedFlushResult.shardResponses().values().iterator().next();
    assertTrue(response.success());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:20,代码来源:SyncedFlushSingleNodeTests.java

示例2: testSyncFailsIfOperationIsInFlight

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testSyncFailsIfOperationIsInFlight() throws InterruptedException, ExecutionException {
    createIndex("test");
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    final ShardId shardId = shard.shardId();
    PlainActionFuture<Releasable> fut = new PlainActionFuture<>();
    shard.acquirePrimaryOperationLock(fut, ThreadPool.Names.INDEX);
    try (Releasable operationLock = fut.get()) {
        SyncedFlushUtil.LatchedListener<ShardsSyncedFlushResult> listener = new SyncedFlushUtil.LatchedListener<>();
        flushService.attemptSyncedFlush(shardId, listener);
        listener.latch.await();
        assertNull(listener.error);
        ShardsSyncedFlushResult syncedFlushResult = listener.result;
        assertNotNull(syncedFlushResult);
        assertEquals(0, syncedFlushResult.successfulShards());
        assertNotEquals(0, syncedFlushResult.totalShards());
        assertEquals("[1] ongoing operations on primary", syncedFlushResult.failureReason());
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:23,代码来源:SyncedFlushSingleNodeTests.java

示例3: TestSearchContext

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public TestSearchContext(ThreadPool threadPool, BigArrays bigArrays, IndexService indexService) {
    this.bigArrays = bigArrays.withCircuitBreaking();
    this.indexService = indexService;
    this.indexFieldDataService = indexService.fieldData();
    this.fixedBitSetFilterCache = indexService.cache().bitsetFilterCache();
    this.threadPool = threadPool;
    this.indexShard = indexService.getShardOrNull(0);
    queryShardContext = indexService.newQueryShardContext(0, null, () -> 0L);
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:10,代码来源:TestSearchContext.java

示例4: getShard

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
private IndexShard getShard(ShardActiveRequest request) {
    ClusterName thisClusterName = clusterService.getClusterName();
    if (!thisClusterName.equals(request.clusterName)) {
        logger.trace("shard exists request meant for cluster[{}], but this is cluster[{}], ignoring request", request.clusterName, thisClusterName);
        return null;
    }
    ShardId shardId = request.shardId;
    IndexService indexService = indicesService.indexService(shardId.getIndex());
    if (indexService != null && indexService.indexUUID().equals(request.indexUUID)) {
        return indexService.getShardOrNull(shardId.id());
    }
    return null;
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:14,代码来源:IndicesStore.java

示例5: testSyncFailsOnIndexClosedOrMissing

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testSyncFailsOnIndexClosedOrMissing() throws InterruptedException {
    createIndex("test");
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    SyncedFlushUtil.LatchedListener listener = new SyncedFlushUtil.LatchedListener();
    flushService.attemptSyncedFlush(new ShardId("test", "_na_", 1), listener);
    listener.latch.await();
    assertNotNull(listener.error);
    assertNull(listener.result);
    assertEquals(ShardNotFoundException.class, listener.error.getClass());
    assertEquals("no such shard", listener.error.getMessage());

    final ShardId shardId = shard.shardId();

    client().admin().indices().prepareClose("test").get();
    listener = new SyncedFlushUtil.LatchedListener();
    flushService.attemptSyncedFlush(shardId, listener);
    listener.latch.await();
    assertNotNull(listener.error);
    assertNull(listener.result);
    assertEquals("closed", listener.error.getMessage());

    listener = new SyncedFlushUtil.LatchedListener();
    flushService.attemptSyncedFlush(new ShardId("index not found", "_na_", 0), listener);
    listener.latch.await();
    assertNotNull(listener.error);
    assertNull(listener.result);
    assertEquals("no such index", listener.error.getMessage());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:32,代码来源:SyncedFlushSingleNodeTests.java

示例6: testFailAfterIntermediateCommit

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testFailAfterIntermediateCommit() throws InterruptedException {
    createIndex("test");
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    final ShardId shardId = shard.shardId();
    final ClusterState state = getInstanceFromNode(ClusterService.class).state();
    final IndexShardRoutingTable shardRoutingTable = flushService.getShardRoutingTable(shardId, state);
    final List<ShardRouting> activeShards = shardRoutingTable.activeShards();
    assertEquals("exactly one active shard", 1, activeShards.size());
    Map<String, Engine.CommitId> commitIds = SyncedFlushUtil.sendPreSyncRequests(flushService, activeShards, state, shardId);
    assertEquals("exactly one commit id", 1, commitIds.size());
    if (randomBoolean()) {
        client().prepareIndex("test", "test", "2").setSource("{}", XContentType.JSON).get();
    }
    client().admin().indices().prepareFlush("test").setForce(true).get();
    String syncId = UUIDs.base64UUID();
    final SyncedFlushUtil.LatchedListener<ShardsSyncedFlushResult> listener = new SyncedFlushUtil.LatchedListener();
    flushService.sendSyncRequests(syncId, activeShards, state, commitIds, shardId, shardRoutingTable.size(), listener);
    listener.latch.await();
    assertNull(listener.error);
    ShardsSyncedFlushResult syncedFlushResult = listener.result;
    assertNotNull(syncedFlushResult);
    assertEquals(0, syncedFlushResult.successfulShards());
    assertEquals(1, syncedFlushResult.totalShards());
    assertEquals(syncId, syncedFlushResult.syncId());
    assertNotNull(syncedFlushResult.shardResponses().get(activeShards.get(0)));
    assertFalse(syncedFlushResult.shardResponses().get(activeShards.get(0)).success());
    assertEquals("commit has changed", syncedFlushResult.shardResponses().get(activeShards.get(0)).failureReason());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:33,代码来源:SyncedFlushSingleNodeTests.java

示例7: testFailWhenCommitIsMissing

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testFailWhenCommitIsMissing() throws InterruptedException {
    createIndex("test");
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    final ShardId shardId = shard.shardId();
    final ClusterState state = getInstanceFromNode(ClusterService.class).state();
    final IndexShardRoutingTable shardRoutingTable = flushService.getShardRoutingTable(shardId, state);
    final List<ShardRouting> activeShards = shardRoutingTable.activeShards();
    assertEquals("exactly one active shard", 1, activeShards.size());
    Map<String, Engine.CommitId> commitIds =  SyncedFlushUtil.sendPreSyncRequests(flushService, activeShards, state, shardId);
    assertEquals("exactly one commit id", 1, commitIds.size());
    commitIds.clear(); // wipe it...
    String syncId = UUIDs.base64UUID();
    SyncedFlushUtil.LatchedListener<ShardsSyncedFlushResult> listener = new SyncedFlushUtil.LatchedListener();
    flushService.sendSyncRequests(syncId, activeShards, state, commitIds, shardId, shardRoutingTable.size(), listener);
    listener.latch.await();
    assertNull(listener.error);
    ShardsSyncedFlushResult syncedFlushResult = listener.result;
    assertNotNull(syncedFlushResult);
    assertEquals(0, syncedFlushResult.successfulShards());
    assertEquals(1, syncedFlushResult.totalShards());
    assertEquals(syncId, syncedFlushResult.syncId());
    assertNotNull(syncedFlushResult.shardResponses().get(activeShards.get(0)));
    assertFalse(syncedFlushResult.shardResponses().get(activeShards.get(0)).success());
    assertEquals("no commit id from pre-sync flush", syncedFlushResult.shardResponses().get(activeShards.get(0)).failureReason());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:30,代码来源:SyncedFlushSingleNodeTests.java

示例8: testTook

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testTook() throws Exception {
    XContentBuilder mapping = jsonBuilder()
        .startObject()
            .startObject("type1")
                .startObject("properties")
                    .startObject("field")
                        .field("type", "text")
                        .field("term_vector", "with_positions_offsets_payloads")
                    .endObject()
                .endObject()
            .endObject()
        .endObject();
    createIndex("test", Settings.EMPTY, "type1", mapping);
    ensureGreen();

    client().prepareIndex("test", "type1", "0").setSource("field", "foo bar").setRefreshPolicy(IMMEDIATE).get();

    IndicesService indicesService = getInstanceFromNode(IndicesService.class);
    IndexService test = indicesService.indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);
    assertThat(shard, notNullValue());

    List<Long> longs = Stream.of(abs(randomLong()), abs(randomLong())).sorted().collect(toList());

    TermVectorsRequest request = new TermVectorsRequest("test", "type1", "0");
    TermVectorsResponse response = TermVectorsService.getTermVectors(shard, request, longs.iterator()::next);

    assertThat(response, notNullValue());
    assertThat(response.getTookInMillis(), equalTo(TimeUnit.NANOSECONDS.toMillis(longs.get(1) - longs.get(0))));
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:31,代码来源:TermVectorsServiceTests.java

示例9: testDurableFlagHasEffect

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testDurableFlagHasEffect() {
    createIndex("test");
    ensureGreen();
    client().prepareIndex("test", "bar", "1").setSource("{}", XContentType.JSON).get();
    IndicesService indicesService = getInstanceFromNode(IndicesService.class);
    IndexService test = indicesService.indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);
    setDurability(shard, Translog.Durability.REQUEST);
    assertFalse(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());
    setDurability(shard, Translog.Durability.ASYNC);
    client().prepareIndex("test", "bar", "2").setSource("{}", XContentType.JSON).get();
    assertTrue(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());
    setDurability(shard, Translog.Durability.REQUEST);
    client().prepareDelete("test", "bar", "1").get();
    assertFalse(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());

    setDurability(shard, Translog.Durability.ASYNC);
    client().prepareDelete("test", "bar", "2").get();
    assertTrue(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());
    setDurability(shard, Translog.Durability.REQUEST);
    assertNoFailures(client().prepareBulk()
        .add(client().prepareIndex("test", "bar", "3").setSource("{}", XContentType.JSON))
        .add(client().prepareDelete("test", "bar", "1")).get());
    assertFalse(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());

    setDurability(shard, Translog.Durability.ASYNC);
    assertNoFailures(client().prepareBulk()
        .add(client().prepareIndex("test", "bar", "4").setSource("{}", XContentType.JSON))
        .add(client().prepareDelete("test", "bar", "3")).get());
    setDurability(shard, Translog.Durability.REQUEST);
    assertTrue(ShardUtilsTests.getShardEngine(shard).getTranslog().syncNeeded());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:33,代码来源:IndexShardIT.java

示例10: listStoreMetaData

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
private StoreFilesMetaData listStoreMetaData(ShardId shardId) throws IOException {
    logger.trace("listing store meta data for {}", shardId);
    long startTimeNS = System.nanoTime();
    boolean exists = false;
    try {
        IndexService indexService = indicesService.indexService(shardId.getIndex());
        if (indexService != null) {
            IndexShard indexShard = indexService.getShardOrNull(shardId.id());
            if (indexShard != null) {
                exists = true;
                return new StoreFilesMetaData(shardId, indexShard.snapshotStoreMetadata());
            }
        }
        // try and see if we an list unallocated
        IndexMetaData metaData = clusterService.state().metaData().index(shardId.getIndex());
        if (metaData == null) {
            // we may send this requests while processing the cluster state that recovered the index
            // sometimes the request comes in before the local node processed that cluster state
            // in such cases we can load it from disk
            metaData = IndexMetaData.FORMAT.loadLatestState(logger, NamedXContentRegistry.EMPTY,
                nodeEnv.indexPaths(shardId.getIndex()));
        }
        if (metaData == null) {
            logger.trace("{} node doesn't have meta data for the requests index, responding with empty", shardId);
            return new StoreFilesMetaData(shardId, Store.MetadataSnapshot.EMPTY);
        }
        final IndexSettings indexSettings = indexService != null ? indexService.getIndexSettings() : new IndexSettings(metaData, settings);
        final ShardPath shardPath = ShardPath.loadShardPath(logger, nodeEnv, shardId, indexSettings);
        if (shardPath == null) {
            return new StoreFilesMetaData(shardId, Store.MetadataSnapshot.EMPTY);
        }
        // note that this may fail if it can't get access to the shard lock. Since we check above there is an active shard, this means:
        // 1) a shard is being constructed, which means the master will not use a copy of this replica
        // 2) A shard is shutting down and has not cleared it's content within lock timeout. In this case the master may not
        //    reuse local resources.
        return new StoreFilesMetaData(shardId, Store.readMetadataSnapshot(shardPath.resolveIndex(), shardId,
            nodeEnv::shardLock, logger));
    } finally {
        TimeValue took = new TimeValue(System.nanoTime() - startTimeNS, TimeUnit.NANOSECONDS);
        if (exists) {
            logger.debug("{} loaded store meta data (took [{}])", shardId, took);
        } else {
            logger.trace("{} didn't find any store meta data to load (took [{}])", shardId, took);
        }
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:47,代码来源:TransportNodesListShardStoreMetaData.java

示例11: testModificationPreventsFlushing

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testModificationPreventsFlushing() throws InterruptedException {
    createIndex("test");
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    IndexService test = getInstanceFromNode(IndicesService.class).indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);

    SyncedFlushService flushService = getInstanceFromNode(SyncedFlushService.class);
    final ShardId shardId = shard.shardId();
    final ClusterState state = getInstanceFromNode(ClusterService.class).state();
    final IndexShardRoutingTable shardRoutingTable = flushService.getShardRoutingTable(shardId, state);
    final List<ShardRouting> activeShards = shardRoutingTable.activeShards();
    assertEquals("exactly one active shard", 1, activeShards.size());
    Map<String, Engine.CommitId> commitIds = SyncedFlushUtil.sendPreSyncRequests(flushService, activeShards, state, shardId);
    assertEquals("exactly one commit id", 1, commitIds.size());
    client().prepareIndex("test", "test", "2").setSource("{}", XContentType.JSON).get();
    String syncId = UUIDs.base64UUID();
    SyncedFlushUtil.LatchedListener<ShardsSyncedFlushResult> listener = new SyncedFlushUtil.LatchedListener<>();
    flushService.sendSyncRequests(syncId, activeShards, state, commitIds, shardId, shardRoutingTable.size(), listener);
    listener.latch.await();
    assertNull(listener.error);
    ShardsSyncedFlushResult syncedFlushResult = listener.result;
    assertNotNull(syncedFlushResult);
    assertEquals(0, syncedFlushResult.successfulShards());
    assertEquals(1, syncedFlushResult.totalShards());
    assertEquals(syncId, syncedFlushResult.syncId());
    assertNotNull(syncedFlushResult.shardResponses().get(activeShards.get(0)));
    assertFalse(syncedFlushResult.shardResponses().get(activeShards.get(0)).success());
    assertEquals("pending operations", syncedFlushResult.shardResponses().get(activeShards.get(0)).failureReason());

    SyncedFlushUtil.sendPreSyncRequests(flushService, activeShards, state, shardId); // pull another commit and make sure we can't sync-flush with the old one
    listener = new SyncedFlushUtil.LatchedListener();
    flushService.sendSyncRequests(syncId, activeShards, state, commitIds, shardId, shardRoutingTable.size(), listener);
    listener.latch.await();
    assertNull(listener.error);
    syncedFlushResult = listener.result;
    assertNotNull(syncedFlushResult);
    assertEquals(0, syncedFlushResult.successfulShards());
    assertEquals(1, syncedFlushResult.totalShards());
    assertEquals(syncId, syncedFlushResult.syncId());
    assertNotNull(syncedFlushResult.shardResponses().get(activeShards.get(0)));
    assertFalse(syncedFlushResult.shardResponses().get(activeShards.get(0)).success());
    assertEquals("commit has changed", syncedFlushResult.shardResponses().get(activeShards.get(0)).failureReason());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:44,代码来源:SyncedFlushSingleNodeTests.java

示例12: testMaybeFlush

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testMaybeFlush() throws Exception {
    createIndex("test", Settings.builder().put(IndexSettings.INDEX_TRANSLOG_DURABILITY_SETTING.getKey(), Translog.Durability.REQUEST)
        .build());
    ensureGreen();
    IndicesService indicesService = getInstanceFromNode(IndicesService.class);
    IndexService test = indicesService.indexService(resolveIndex("test"));
    IndexShard shard = test.getShardOrNull(0);
    assertFalse(shard.shouldFlush());
    client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder()
        .put(IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(),
            new ByteSizeValue(117 /* size of the operation + header&footer*/, ByteSizeUnit.BYTES)).build()).get();
    client().prepareIndex("test", "test", "0")
        .setSource("{}", XContentType.JSON).setRefreshPolicy(randomBoolean() ? IMMEDIATE : NONE).get();
    assertFalse(shard.shouldFlush());
    ParsedDocument doc = testParsedDocument(
        "1",
        "test",
        null,
        SequenceNumbersService.UNASSIGNED_SEQ_NO,
        new ParseContext.Document(),
        new BytesArray(new byte[]{1}), XContentType.JSON, null);
    Engine.Index index = new Engine.Index(new Term("_uid", doc.uid()), doc);
    shard.index(index);
    assertTrue(shard.shouldFlush());
    assertEquals(2, shard.getEngine().getTranslog().totalOperations());
    client().prepareIndex("test", "test", "2").setSource("{}", XContentType.JSON)
        .setRefreshPolicy(randomBoolean() ? IMMEDIATE : NONE).get();
    assertBusy(() -> { // this is async
        assertFalse(shard.shouldFlush());
    });
    assertEquals(0, shard.getEngine().getTranslog().totalOperations());
    shard.getEngine().getTranslog().sync();
    long size = shard.getEngine().getTranslog().sizeInBytes();
    logger.info("--> current translog size: [{}] num_ops [{}] generation [{}]", shard.getEngine().getTranslog().sizeInBytes(),
        shard.getEngine().getTranslog().totalOperations(), shard.getEngine().getTranslog().getGeneration());
    client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder().put(
        IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(), new ByteSizeValue(size, ByteSizeUnit.BYTES))
        .build()).get();
    client().prepareDelete("test", "test", "2").get();
    logger.info("--> translog size after delete: [{}] num_ops [{}] generation [{}]", shard.getEngine().getTranslog().sizeInBytes(),
        shard.getEngine().getTranslog().totalOperations(), shard.getEngine().getTranslog().getGeneration());
    assertBusy(() -> { // this is async
        logger.info("--> translog size on iter  : [{}] num_ops [{}] generation [{}]", shard.getEngine().getTranslog().sizeInBytes(),
            shard.getEngine().getTranslog().totalOperations(), shard.getEngine().getTranslog().getGeneration());
        assertFalse(shard.shouldFlush());
    });
    assertEquals(0, shard.getEngine().getTranslog().totalOperations());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:49,代码来源:IndexShardIT.java

示例13: testStressMaybeFlush

import org.elasticsearch.index.IndexService; //导入方法依赖的package包/类
public void testStressMaybeFlush() throws Exception {
    createIndex("test");
    ensureGreen();
    IndicesService indicesService = getInstanceFromNode(IndicesService.class);
    IndexService test = indicesService.indexService(resolveIndex("test"));
    final IndexShard shard = test.getShardOrNull(0);
    assertFalse(shard.shouldFlush());
    client().admin().indices().prepareUpdateSettings("test").setSettings(Settings.builder().put(
        IndexSettings.INDEX_TRANSLOG_FLUSH_THRESHOLD_SIZE_SETTING.getKey(),
        new ByteSizeValue(117/* size of the operation + header&footer*/, ByteSizeUnit.BYTES)).build()).get();
    client().prepareIndex("test", "test", "0").setSource("{}", XContentType.JSON)
        .setRefreshPolicy(randomBoolean() ? IMMEDIATE : NONE).get();
    assertFalse(shard.shouldFlush());
    final AtomicBoolean running = new AtomicBoolean(true);
    final int numThreads = randomIntBetween(2, 4);
    Thread[] threads = new Thread[numThreads];
    CyclicBarrier barrier = new CyclicBarrier(numThreads + 1);
    for (int i = 0; i < threads.length; i++) {
        threads[i] = new Thread() {
            @Override
            public void run() {
                try {
                    barrier.await();
                } catch (InterruptedException | BrokenBarrierException e) {
                    throw new RuntimeException(e);
                }
                while (running.get()) {
                    shard.maybeFlush();
                }
            }
        };
        threads[i].start();
    }
    barrier.await();
    FlushStats flushStats = shard.flushStats();
    long total = flushStats.getTotal();
    client().prepareIndex("test", "test", "1").setSource("{}", XContentType.JSON).get();
    assertBusy(() -> assertEquals(total + 1, shard.flushStats().getTotal()));
    running.set(false);
    for (int i = 0; i < threads.length; i++) {
        threads[i].join();
    }
    assertEquals(total + 1, shard.flushStats().getTotal());
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:45,代码来源:IndexShardIT.java


注:本文中的org.elasticsearch.index.IndexService.getShardOrNull方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。