Java Code Examples for org.elasticsearch.index.IndexService#shardIds()

The following examples show how to use org.elasticsearch.index.IndexService#shardIds() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: IndicesClusterStateService.java    From Elasticsearch with Apache License 2.0 5 votes vote down vote up
private void applyDeletedShards(final ClusterChangedEvent event) {
    RoutingNodes.RoutingNodeIterator routingNode = event.state().getRoutingNodes().routingNodeIter(event.state().nodes().localNodeId());
    if (routingNode == null) {
        return;
    }
    IntHashSet newShardIds = new IntHashSet();
    for (IndexService indexService : indicesService) {
        String index = indexService.index().name();
        IndexMetaData indexMetaData = event.state().metaData().index(index);
        if (indexMetaData == null) {
            continue;
        }
        // now, go over and delete shards that needs to get deleted
        newShardIds.clear();
        for (ShardRouting shard : routingNode) {
            if (shard.index().equals(index)) {
                newShardIds.add(shard.id());
            }
        }
        for (Integer existingShardId : indexService.shardIds()) {
            if (!newShardIds.contains(existingShardId)) {
                if (indexMetaData.getState() == IndexMetaData.State.CLOSE) {
                    if (logger.isDebugEnabled()) {
                        logger.debug("[{}][{}] removing shard (index is closed)", index, existingShardId);
                    }
                    indexService.removeShard(existingShardId, "removing shard (index is closed)");
                } else {
                    // we can just remove the shard, without cleaning it locally, since we will clean it
                    // when all shards are allocated in the IndicesStore
                    if (logger.isDebugEnabled()) {
                        logger.debug("[{}][{}] removing shard (not allocated)", index, existingShardId);
                    }
                    indexService.removeShard(existingShardId, "removing shard (not allocated)");
                }
            }
        }
    }
}
 
Example 2
Source File: GraphiteService.java    From elasticsearch-graphite-plugin with Do What The F*ck You Want To Public License 5 votes vote down vote up
private List<IndexShard> getIndexShards(IndicesService indicesService) {
    List<IndexShard> indexShards = Lists.newArrayList();
    Iterator<IndexService> indexServiceIterator = indicesService.iterator();
    while (indexServiceIterator.hasNext()) {
        IndexService indexService = indexServiceIterator.next();
        for (int shardId : indexService.shardIds()) {
            indexShards.add(indexService.shard(shardId));
        }
    }
    return indexShards;
}
 
Example 3
Source File: IndicesClusterStateService.java    From Elasticsearch with Apache License 2.0 4 votes vote down vote up
@Override
public void clusterChanged(final ClusterChangedEvent event) {
    if (!indicesService.changesAllowed()) {
        return;
    }

    if (!lifecycle.started()) {
        return;
    }

    synchronized (mutex) {
        // we need to clean the shards and indices we have on this node, since we
        // are going to recover them again once state persistence is disabled (no master / not recovered)
        // TODO: this feels a bit hacky here, a block disables state persistence, and then we clean the allocated shards, maybe another flag in blocks?
        if (event.state().blocks().disableStatePersistence()) {
            logger.info("cluster state have disable persistence state, so skip the state change and unload indecies");
            for (IndexService indexService : indicesService) {
                String index = indexService.index().getName();
                for (Integer shardId : indexService.shardIds()) {
                    logger.debug("[{}][{}] removing shard (disabled block persistence)", index, shardId);
                    try {
                        indexService.removeShard(shardId, "removing shard (disabled block persistence)");
                    } catch (Throwable e) {
                        logger.warn("[{}] failed to remove shard (disabled block persistence)", e, index);
                    }
                }
                removeIndex(index, "cleaning index (disabled block persistence)");
            }
            return;
        }
        logger.info("begin to apply cluster state to local indices service and mappings");

        cleanFailedShards(event);

        applyDeletedIndices(event);
        applyNewIndices(event);
        applyMappings(event);
        applyAliases(event);
        applyNewOrUpdatedShards(event);
        applyDeletedShards(event);
        applyCleanedIndices(event);
        applySettings(event);
    }
}