Remove some Internal* abstractions
We have lots of boilerplate code that is unnecessarily abstracting services ie InternalIndexShard and IndexShard or InternalIndexService and IndexService. It's enough to have concrete classes for these core classes. Closes #8904
This commit is contained in:
parent
750310cf94
commit
3877dc618d
|
@ -37,8 +37,8 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.io.stream.StreamInput;
|
import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.node.service.NodeService;
|
import org.elasticsearch.node.service.NodeService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
|
@ -42,7 +42,7 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.analysis.*;
|
import org.elasticsearch.index.analysis.*;
|
||||||
import org.elasticsearch.index.mapper.FieldMapper;
|
import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.AllFieldMapper;
|
import org.elasticsearch.index.mapper.internal.AllFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
||||||
|
|
|
@ -34,8 +34,8 @@ import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.cache.filter.terms.IndicesTermsFilterCache;
|
import org.elasticsearch.indices.cache.filter.terms.IndicesTermsFilterCache;
|
||||||
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
|
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
|
||||||
|
|
|
@ -33,8 +33,7 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -40,7 +40,7 @@ import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.index.mapper.DocumentFieldMappers;
|
import org.elasticsearch.index.mapper.DocumentFieldMappers;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.FieldMapper;
|
import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.TypeMissingException;
|
import org.elasticsearch.indices.TypeMissingException;
|
||||||
|
|
|
@ -33,7 +33,7 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -35,9 +35,9 @@ import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.gateway.IndexShardGatewayService;
|
import org.elasticsearch.index.gateway.IndexShardGatewayService;
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
||||||
|
@ -141,8 +141,8 @@ public class TransportRecoveryAction extends
|
||||||
@Override
|
@Override
|
||||||
protected ShardRecoveryResponse shardOperation(ShardRecoveryRequest request) throws ElasticsearchException {
|
protected ShardRecoveryResponse shardOperation(ShardRecoveryRequest request) throws ElasticsearchException {
|
||||||
|
|
||||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
IndexShard indexShard = indexService.shardSafe(request.shardId().id());
|
||||||
ShardRecoveryResponse shardRecoveryResponse = new ShardRecoveryResponse(request.shardId());
|
ShardRecoveryResponse shardRecoveryResponse = new ShardRecoveryResponse(request.shardId());
|
||||||
|
|
||||||
RecoveryState state = indexShard.recoveryState();
|
RecoveryState state = indexShard.recoveryState();
|
||||||
|
|
|
@ -33,8 +33,7 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -34,9 +34,9 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
@ -129,8 +129,8 @@ public class TransportIndicesSegmentsAction extends TransportBroadcastOperationA
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ShardSegments shardOperation(IndexShardSegmentRequest request) throws ElasticsearchException {
|
protected ShardSegments shardOperation(IndexShardSegmentRequest request) throws ElasticsearchException {
|
||||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
IndexShard indexShard = indexService.shardSafe(request.shardId().id());
|
||||||
return new ShardSegments(indexShard.routingEntry(), indexShard.engine().segments());
|
return new ShardSegments(indexShard.routingEntry(), indexShard.engine().segments());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
|
|
||||||
package org.elasticsearch.action.admin.indices.stats;
|
package org.elasticsearch.action.admin.indices.stats;
|
||||||
|
|
||||||
import org.elasticsearch.Version;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
import org.elasticsearch.common.Nullable;
|
||||||
import org.elasticsearch.common.io.stream.StreamInput;
|
import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
|
@ -40,7 +39,7 @@ import org.elasticsearch.index.percolator.stats.PercolateStats;
|
||||||
import org.elasticsearch.index.refresh.RefreshStats;
|
import org.elasticsearch.index.refresh.RefreshStats;
|
||||||
import org.elasticsearch.index.search.stats.SearchStats;
|
import org.elasticsearch.index.search.stats.SearchStats;
|
||||||
import org.elasticsearch.index.shard.DocsStats;
|
import org.elasticsearch.index.shard.DocsStats;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.store.StoreStats;
|
import org.elasticsearch.index.store.StoreStats;
|
||||||
import org.elasticsearch.index.suggest.stats.SuggestStats;
|
import org.elasticsearch.index.suggest.stats.SuggestStats;
|
||||||
import org.elasticsearch.index.translog.TranslogStats;
|
import org.elasticsearch.index.translog.TranslogStats;
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
import org.elasticsearch.common.xcontent.ToXContent;
|
import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilderString;
|
import org.elasticsearch.common.xcontent.XContentBuilderString;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,9 @@ import org.elasticsearch.common.io.stream.StreamInput;
|
||||||
import org.elasticsearch.common.io.stream.StreamOutput;
|
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.IndexShardMissingException;
|
import org.elasticsearch.index.IndexShardMissingException;
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
@ -134,8 +134,8 @@ public class TransportIndicesStatsAction extends TransportBroadcastOperationActi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ShardStats shardOperation(IndexShardStatsRequest request) throws ElasticsearchException {
|
protected ShardStats shardOperation(IndexShardStatsRequest request) throws ElasticsearchException {
|
||||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
IndexShard indexShard = indexService.shardSafe(request.shardId().id());
|
||||||
// if we don't have the routing entry yet, we need it stats wise, we treat it as if the shard is not ready yet
|
// if we don't have the routing entry yet, we need it stats wise, we treat it as if the shard is not ready yet
|
||||||
if (indexShard.routingEntry() == null) {
|
if (indexShard.routingEntry() == null) {
|
||||||
throw new IndexShardMissingException(indexShard.shardId());
|
throw new IndexShardMissingException(indexShard.shardId());
|
||||||
|
|
|
@ -38,8 +38,8 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.query.QueryParsingException;
|
import org.elasticsearch.index.query.QueryParsingException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.internal.DefaultSearchContext;
|
import org.elasticsearch.search.internal.DefaultSearchContext;
|
||||||
|
|
|
@ -54,8 +54,8 @@ import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.SourceToParse;
|
import org.elasticsearch.index.mapper.SourceToParse;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
|
@ -39,8 +39,8 @@ import org.elasticsearch.common.lucene.Lucene;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.index.query.QueryParseContext;
|
import org.elasticsearch.index.query.QueryParseContext;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.SearchShardTarget;
|
import org.elasticsearch.search.SearchShardTarget;
|
||||||
|
|
|
@ -38,7 +38,7 @@ import org.elasticsearch.common.lucene.uid.Versions;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.VersionType;
|
import org.elasticsearch.index.VersionType;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
|
@ -31,7 +31,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.VersionType;
|
import org.elasticsearch.index.VersionType;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -35,8 +35,8 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.internal.DefaultSearchContext;
|
import org.elasticsearch.search.internal.DefaultSearchContext;
|
||||||
|
@ -128,7 +128,7 @@ public class TransportShardDeleteByQueryAction extends TransportShardReplication
|
||||||
IndexShard indexShard = indexService.shardSafe(shardRequest.shardId.id());
|
IndexShard indexShard = indexService.shardSafe(shardRequest.shardId.id());
|
||||||
|
|
||||||
SearchContext.setCurrent(new DefaultSearchContext(0, new ShardSearchLocalRequest(request.types(), request.nowInMillis()), null,
|
SearchContext.setCurrent(new DefaultSearchContext(0, new ShardSearchLocalRequest(request.types(), request.nowInMillis()), null,
|
||||||
indexShard.acquireSearcher(DELETE_BY_QUERY_API, IndexShard.Mode.WRITE), indexService, indexShard, scriptService,
|
indexShard.acquireSearcher(DELETE_BY_QUERY_API, true), indexService, indexShard, scriptService,
|
||||||
pageCacheRecycler, bigArrays, threadPool.estimatedTimeInMillisCounter()));
|
pageCacheRecycler, bigArrays, threadPool.estimatedTimeInMillisCounter()));
|
||||||
try {
|
try {
|
||||||
Engine.DeleteByQuery deleteByQuery = indexShard.prepareDeleteByQuery(request.source(), request.filteringAliases(), Engine.Operation.Origin.REPLICA, request.types());
|
Engine.DeleteByQuery deleteByQuery = indexShard.prepareDeleteByQuery(request.source(), request.filteringAliases(), Engine.Operation.Origin.REPLICA, request.types());
|
||||||
|
|
|
@ -41,8 +41,8 @@ import org.elasticsearch.common.lucene.Lucene;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.util.BigArrays;
|
import org.elasticsearch.common.util.BigArrays;
|
||||||
import org.elasticsearch.index.query.QueryParseContext;
|
import org.elasticsearch.index.query.QueryParseContext;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.SearchShardTarget;
|
import org.elasticsearch.search.SearchShardTarget;
|
||||||
|
|
|
@ -37,9 +37,9 @@ import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.get.GetResult;
|
import org.elasticsearch.index.get.GetResult;
|
||||||
import org.elasticsearch.index.mapper.Uid;
|
import org.elasticsearch.index.mapper.Uid;
|
||||||
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.internal.DefaultSearchContext;
|
import org.elasticsearch.search.internal.DefaultSearchContext;
|
||||||
|
|
|
@ -28,11 +28,10 @@ import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.routing.ShardIterator;
|
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
|
||||||
import org.elasticsearch.index.get.GetResult;
|
import org.elasticsearch.index.get.GetResult;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -29,11 +29,10 @@ import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.routing.ShardIterator;
|
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
|
||||||
import org.elasticsearch.index.get.GetResult;
|
import org.elasticsearch.index.get.GetResult;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -40,8 +40,8 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.mapper.SourceToParse;
|
import org.elasticsearch.index.mapper.SourceToParse;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
|
@ -38,8 +38,8 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.common.xcontent.XContentParser;
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.search.suggest.Suggest;
|
import org.elasticsearch.search.suggest.Suggest;
|
||||||
|
|
|
@ -41,9 +41,9 @@ import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.common.util.concurrent.AbstractRunnable;
|
import org.elasticsearch.common.util.concurrent.AbstractRunnable;
|
||||||
import org.elasticsearch.index.engine.DocumentAlreadyExistsException;
|
import org.elasticsearch.index.engine.DocumentAlreadyExistsException;
|
||||||
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.node.NodeClosedException;
|
import org.elasticsearch.node.NodeClosedException;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
|
|
|
@ -29,9 +29,9 @@ import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.routing.ShardIterator;
|
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -28,9 +28,9 @@ import org.elasticsearch.cluster.ClusterState;
|
||||||
import org.elasticsearch.cluster.routing.ShardIterator;
|
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
|
@ -52,8 +52,8 @@ import org.elasticsearch.common.xcontent.XContentHelper;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.index.engine.DocumentAlreadyExistsException;
|
import org.elasticsearch.index.engine.DocumentAlreadyExistsException;
|
||||||
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
|
@ -42,9 +42,8 @@ import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.RoutingFieldMapper;
|
import org.elasticsearch.index.mapper.internal.RoutingFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.TimestampFieldMapper;
|
import org.elasticsearch.index.mapper.internal.TimestampFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.script.ExecutableScript;
|
import org.elasticsearch.script.ExecutableScript;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
||||||
|
|
|
@ -62,7 +62,7 @@ import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.MapperParsingException;
|
import org.elasticsearch.index.mapper.MapperParsingException;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.InvalidIndexNameException;
|
import org.elasticsearch.indices.InvalidIndexNameException;
|
||||||
|
@ -72,7 +72,6 @@ import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.nio.file.DirectoryStream;
|
import java.nio.file.DirectoryStream;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
|
|
|
@ -35,7 +35,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.IndexMissingException;
|
import org.elasticsearch.indices.IndexMissingException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.mapper.MergeMappingException;
|
import org.elasticsearch.index.mapper.MergeMappingException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.IndexMissingException;
|
import org.elasticsearch.indices.IndexMissingException;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.InvalidTypeNameException;
|
import org.elasticsearch.indices.InvalidTypeNameException;
|
||||||
|
|
|
@ -21,8 +21,6 @@ package org.elasticsearch.index;
|
||||||
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
import org.elasticsearch.common.inject.AbstractModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -37,6 +35,6 @@ public class IndexModule extends AbstractModule {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(IndexService.class).to(InternalIndexService.class).asEagerSingleton();
|
bind(IndexService.class).asEagerSingleton();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.elasticsearch.index.service;
|
package org.elasticsearch.index;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
@ -65,8 +65,7 @@ import org.elasticsearch.index.settings.IndexSettingsService;
|
||||||
import org.elasticsearch.index.shard.IndexShardCreationException;
|
import org.elasticsearch.index.shard.IndexShardCreationException;
|
||||||
import org.elasticsearch.index.shard.IndexShardModule;
|
import org.elasticsearch.index.shard.IndexShardModule;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
import org.elasticsearch.index.similarity.SimilarityService;
|
||||||
import org.elasticsearch.index.snapshots.IndexShardSnapshotModule;
|
import org.elasticsearch.index.snapshots.IndexShardSnapshotModule;
|
||||||
import org.elasticsearch.index.store.IndexStore;
|
import org.elasticsearch.index.store.IndexStore;
|
||||||
|
@ -98,7 +97,7 @@ import static org.elasticsearch.common.collect.MapBuilder.newMapBuilder;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class InternalIndexService extends AbstractIndexComponent implements IndexService {
|
public class IndexService extends AbstractIndexComponent implements IndexComponent, Iterable<IndexShard> {
|
||||||
|
|
||||||
private final Injector injector;
|
private final Injector injector;
|
||||||
|
|
||||||
|
@ -141,11 +140,11 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
private final AtomicBoolean closed = new AtomicBoolean(false);
|
private final AtomicBoolean closed = new AtomicBoolean(false);
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public InternalIndexService(Injector injector, Index index, @IndexSettings Settings indexSettings, NodeEnvironment nodeEnv,
|
public IndexService(Injector injector, Index index, @IndexSettings Settings indexSettings, NodeEnvironment nodeEnv,
|
||||||
AnalysisService analysisService, MapperService mapperService, IndexQueryParserService queryParserService,
|
AnalysisService analysisService, MapperService mapperService, IndexQueryParserService queryParserService,
|
||||||
SimilarityService similarityService, IndexAliasesService aliasesService, IndexCache indexCache, IndexEngine indexEngine,
|
SimilarityService similarityService, IndexAliasesService aliasesService, IndexCache indexCache, IndexEngine indexEngine,
|
||||||
IndexGateway indexGateway, IndexStore indexStore, IndexSettingsService settingsService, IndexFieldDataService indexFieldData,
|
IndexGateway indexGateway, IndexStore indexStore, IndexSettingsService settingsService, IndexFieldDataService indexFieldData,
|
||||||
BitsetFilterCache bitSetFilterCache ) {
|
BitsetFilterCache bitSetFilterCache) {
|
||||||
super(index, indexSettings);
|
super(index, indexSettings);
|
||||||
this.injector = injector;
|
this.injector = injector;
|
||||||
this.indexSettings = indexSettings;
|
this.indexSettings = indexSettings;
|
||||||
|
@ -172,7 +171,6 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
this.nodeEnv = nodeEnv;
|
this.nodeEnv = nodeEnv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int numberOfShards() {
|
public int numberOfShards() {
|
||||||
return shards.size();
|
return shards.size();
|
||||||
}
|
}
|
||||||
|
@ -182,17 +180,20 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
return shards.values().iterator();
|
return shards.values().iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasShard(int shardId) {
|
public boolean hasShard(int shardId) {
|
||||||
return shards.containsKey(shardId);
|
return shards.containsKey(shardId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Return the shard with the provided id, or null if there is no such shard.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
public IndexShard shard(int shardId) {
|
public IndexShard shard(int shardId) {
|
||||||
return shards.get(shardId);
|
return shards.get(shardId);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
@Override
|
* Return the shard with the provided id, or throw an exception if it doesn't exist.
|
||||||
|
*/
|
||||||
public IndexShard shardSafe(int shardId) throws IndexShardMissingException {
|
public IndexShard shardSafe(int shardId) throws IndexShardMissingException {
|
||||||
IndexShard indexShard = shard(shardId);
|
IndexShard indexShard = shard(shardId);
|
||||||
if (indexShard == null) {
|
if (indexShard == null) {
|
||||||
|
@ -201,72 +202,58 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
return indexShard;
|
return indexShard;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ImmutableSet<Integer> shardIds() {
|
public ImmutableSet<Integer> shardIds() {
|
||||||
return shards.keySet();
|
return shards.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Injector injector() {
|
public Injector injector() {
|
||||||
return injector;
|
return injector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexGateway gateway() {
|
public IndexGateway gateway() {
|
||||||
return indexGateway;
|
return indexGateway;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexSettingsService settingsService() {
|
public IndexSettingsService settingsService() {
|
||||||
return this.settingsService;
|
return this.settingsService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexStore store() {
|
public IndexStore store() {
|
||||||
return indexStore;
|
return indexStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexCache cache() {
|
public IndexCache cache() {
|
||||||
return indexCache;
|
return indexCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexFieldDataService fieldData() {
|
public IndexFieldDataService fieldData() {
|
||||||
return indexFieldData;
|
return indexFieldData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public BitsetFilterCache bitsetFilterCache() {
|
public BitsetFilterCache bitsetFilterCache() {
|
||||||
return bitsetFilterCache;
|
return bitsetFilterCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public AnalysisService analysisService() {
|
public AnalysisService analysisService() {
|
||||||
return this.analysisService;
|
return this.analysisService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MapperService mapperService() {
|
public MapperService mapperService() {
|
||||||
return mapperService;
|
return mapperService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexQueryParserService queryParserService() {
|
public IndexQueryParserService queryParserService() {
|
||||||
return queryParserService;
|
return queryParserService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public SimilarityService similarityService() {
|
public SimilarityService similarityService() {
|
||||||
return similarityService;
|
return similarityService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexAliasesService aliasesService() {
|
public IndexAliasesService aliasesService() {
|
||||||
return aliasesService;
|
return aliasesService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexEngine engine() {
|
public IndexEngine engine() {
|
||||||
return indexEngine;
|
return indexEngine;
|
||||||
}
|
}
|
||||||
|
@ -286,12 +273,17 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Return the shard injector for the provided id, or null if there is no such shard.
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
public Injector shardInjector(int shardId) throws ElasticsearchException {
|
public Injector shardInjector(int shardId) throws ElasticsearchException {
|
||||||
return shardsInjectors.get(shardId);
|
return shardsInjectors.get(shardId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Return the shard injector for the provided id, or throw an exception if there is no such shard.
|
||||||
|
*/
|
||||||
public Injector shardInjectorSafe(int shardId) throws IndexShardMissingException {
|
public Injector shardInjectorSafe(int shardId) throws IndexShardMissingException {
|
||||||
Injector shardInjector = shardInjector(shardId);
|
Injector shardInjector = shardInjector(shardId);
|
||||||
if (shardInjector == null) {
|
if (shardInjector == null) {
|
||||||
|
@ -300,12 +292,10 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
return shardInjector;
|
return shardInjector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String indexUUID() {
|
public String indexUUID() {
|
||||||
return indexSettings.get(IndexMetaData.SETTING_UUID, IndexMetaData.INDEX_UUID_NA_VALUE);
|
return indexSettings.get(IndexMetaData.SETTING_UUID, IndexMetaData.INDEX_UUID_NA_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized IndexShard createShard(int sShardId) throws ElasticsearchException {
|
public synchronized IndexShard createShard(int sShardId) throws ElasticsearchException {
|
||||||
/*
|
/*
|
||||||
* TODO: we execute this in parallel but it's a synced method. Yet, we might
|
* TODO: we execute this in parallel but it's a synced method. Yet, we might
|
||||||
|
@ -330,7 +320,7 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
|
|
||||||
ModulesBuilder modules = new ModulesBuilder();
|
ModulesBuilder modules = new ModulesBuilder();
|
||||||
modules.add(new ShardsPluginsModule(indexSettings, pluginsService));
|
modules.add(new ShardsPluginsModule(indexSettings, pluginsService));
|
||||||
modules.add(new IndexShardModule(indexSettings, shardId));
|
modules.add(new IndexShardModule(shardId));
|
||||||
modules.add(new ShardIndexingModule());
|
modules.add(new ShardIndexingModule());
|
||||||
modules.add(new ShardSearchModule());
|
modules.add(new ShardSearchModule());
|
||||||
modules.add(new ShardGetModule());
|
modules.add(new ShardGetModule());
|
||||||
|
@ -377,7 +367,6 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeShard(int shardId, String reason) throws ElasticsearchException {
|
public void removeShard(int shardId, String reason) throws ElasticsearchException {
|
||||||
removeShard(shardId, reason, null);
|
removeShard(shardId, reason, null);
|
||||||
}
|
}
|
||||||
|
@ -418,7 +407,7 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
||||||
// and close the shard so no operations are allowed to it
|
// and close the shard so no operations are allowed to it
|
||||||
if (indexShard != null) {
|
if (indexShard != null) {
|
||||||
try {
|
try {
|
||||||
((InternalIndexShard) indexShard).close(reason);
|
((IndexShard) indexShard).close(reason);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
logger.debug("[{}] failed to close index shard", e, shardId);
|
logger.debug("[{}] failed to close index shard", e, shardId);
|
||||||
// ignore
|
// ignore
|
|
@ -44,12 +44,11 @@ import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.mapper.object.ObjectMapper;
|
import org.elasticsearch.index.mapper.object.ObjectMapper;
|
||||||
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.ShardUtils;
|
import org.elasticsearch.index.shard.ShardUtils;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.warmer.IndicesWarmer;
|
import org.elasticsearch.indices.warmer.IndicesWarmer;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
|
@ -93,7 +92,7 @@ public class BitsetFilterCache extends AbstractIndexComponent implements LeafRea
|
||||||
this.indicesWarmer = indicesWarmer;
|
this.indicesWarmer = indicesWarmer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIndexService(InternalIndexService indexService) {
|
public void setIndexService(IndexService indexService) {
|
||||||
this.indexService = indexService;
|
this.indexService = indexService;
|
||||||
// First the indicesWarmer is set and then the indexService is set, because of this there is a small window of
|
// First the indicesWarmer is set and then the indexService is set, because of this there is a small window of
|
||||||
// time where indexService is null. This is why the warmer should only registered after indexService has been set.
|
// time where indexService is null. This is why the warmer should only registered after indexService has been set.
|
||||||
|
|
|
@ -22,7 +22,7 @@ package org.elasticsearch.index.cache.filter;
|
||||||
import org.apache.lucene.search.Filter;
|
import org.apache.lucene.search.Filter;
|
||||||
import org.elasticsearch.common.component.CloseableComponent;
|
import org.elasticsearch.common.component.CloseableComponent;
|
||||||
import org.elasticsearch.index.IndexComponent;
|
import org.elasticsearch.index.IndexComponent;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
@ -25,7 +25,7 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.AbstractIndexComponent;
|
import org.elasticsearch.index.AbstractIndexComponent;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.cache.filter.FilterCache;
|
import org.elasticsearch.index.cache.filter.FilterCache;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -43,11 +43,11 @@ import org.elasticsearch.index.AbstractIndexComponent;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.cache.filter.FilterCache;
|
import org.elasticsearch.index.cache.filter.FilterCache;
|
||||||
import org.elasticsearch.index.cache.filter.support.CacheKeyFilter;
|
import org.elasticsearch.index.cache.filter.support.CacheKeyFilter;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.ShardUtils;
|
import org.elasticsearch.index.shard.ShardUtils;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.cache.filter.IndicesFilterCache;
|
import org.elasticsearch.indices.cache.filter.IndicesFilterCache;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
|
@ -35,7 +35,7 @@ import org.elasticsearch.index.fielddata.plain.*;
|
||||||
import org.elasticsearch.index.mapper.FieldMapper;
|
import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.IndexFieldMapper;
|
import org.elasticsearch.index.mapper.internal.IndexFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||||
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
|
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
|
||||||
|
|
|
@ -24,11 +24,9 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.*;
|
import org.elasticsearch.index.shard.*;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.snapshots.IndexShardSnapshotAndRestoreService;
|
import org.elasticsearch.index.snapshots.IndexShardSnapshotAndRestoreService;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
@ -47,7 +45,7 @@ public class IndexShardGatewayService extends AbstractIndexShardComponent implem
|
||||||
|
|
||||||
private final ClusterService clusterService;
|
private final ClusterService clusterService;
|
||||||
|
|
||||||
private final InternalIndexShard indexShard;
|
private final IndexShard indexShard;
|
||||||
|
|
||||||
private final IndexShardGateway shardGateway;
|
private final IndexShardGateway shardGateway;
|
||||||
|
|
||||||
|
@ -60,7 +58,7 @@ public class IndexShardGatewayService extends AbstractIndexShardComponent implem
|
||||||
IndexShard indexShard, IndexShardGateway shardGateway, IndexShardSnapshotAndRestoreService snapshotService, ClusterService clusterService) {
|
IndexShard indexShard, IndexShardGateway shardGateway, IndexShardSnapshotAndRestoreService snapshotService, ClusterService clusterService) {
|
||||||
super(shardId, indexSettings);
|
super(shardId, indexSettings);
|
||||||
this.threadPool = threadPool;
|
this.threadPool = threadPool;
|
||||||
this.indexShard = (InternalIndexShard) indexShard;
|
this.indexShard = indexShard;
|
||||||
this.shardGateway = shardGateway;
|
this.shardGateway = shardGateway;
|
||||||
this.snapshotService = snapshotService;
|
this.snapshotService = snapshotService;
|
||||||
this.recoveryState = new RecoveryState(shardId);
|
this.recoveryState = new RecoveryState(shardId);
|
||||||
|
|
|
@ -36,25 +36,21 @@ import org.elasticsearch.common.util.concurrent.FutureUtils;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.gateway.IndexShardGateway;
|
import org.elasticsearch.index.gateway.IndexShardGateway;
|
||||||
import org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException;
|
import org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.translog.*;
|
import org.elasticsearch.index.translog.*;
|
||||||
import org.elasticsearch.index.translog.fs.FsTranslog;
|
|
||||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||||
import org.elasticsearch.rest.RestStatus;
|
import org.elasticsearch.rest.RestStatus;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
import java.io.EOFException;
|
import java.io.EOFException;
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -72,7 +68,7 @@ public class LocalIndexShardGateway extends AbstractIndexShardComponent implemen
|
||||||
private final ThreadPool threadPool;
|
private final ThreadPool threadPool;
|
||||||
private final MappingUpdatedAction mappingUpdatedAction;
|
private final MappingUpdatedAction mappingUpdatedAction;
|
||||||
private final IndexService indexService;
|
private final IndexService indexService;
|
||||||
private final InternalIndexShard indexShard;
|
private final IndexShard indexShard;
|
||||||
|
|
||||||
private final TimeValue waitForMappingUpdatePostRecovery;
|
private final TimeValue waitForMappingUpdatePostRecovery;
|
||||||
|
|
||||||
|
@ -88,7 +84,7 @@ public class LocalIndexShardGateway extends AbstractIndexShardComponent implemen
|
||||||
this.threadPool = threadPool;
|
this.threadPool = threadPool;
|
||||||
this.mappingUpdatedAction = mappingUpdatedAction;
|
this.mappingUpdatedAction = mappingUpdatedAction;
|
||||||
this.indexService = indexService;
|
this.indexService = indexService;
|
||||||
this.indexShard = (InternalIndexShard) indexShard;
|
this.indexShard = indexShard;
|
||||||
|
|
||||||
this.waitForMappingUpdatePostRecovery = componentSettings.getAsTime("wait_for_mapping_update_post_recovery", TimeValue.timeValueSeconds(30));
|
this.waitForMappingUpdatePostRecovery = componentSettings.getAsTime("wait_for_mapping_update_post_recovery", TimeValue.timeValueSeconds(30));
|
||||||
syncInterval = componentSettings.getAsTime("sync", TimeValue.timeValueSeconds(5));
|
syncInterval = componentSettings.getAsTime("sync", TimeValue.timeValueSeconds(5));
|
||||||
|
|
|
@ -47,7 +47,7 @@ import org.elasticsearch.index.mapper.internal.*;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.translog.Translog;
|
import org.elasticsearch.index.translog.Translog;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
import org.elasticsearch.search.fetch.source.FetchSourceContext;
|
||||||
|
|
|
@ -50,7 +50,7 @@ import org.elasticsearch.index.query.QueryParsingException;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesLifecycle;
|
import org.elasticsearch.indices.IndicesLifecycle;
|
||||||
import org.elasticsearch.percolator.PercolatorService;
|
import org.elasticsearch.percolator.PercolatorService;
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ public class PercolatorQueriesRegistry extends AbstractIndexShardComponent {
|
||||||
private int loadQueries(IndexShard shard) {
|
private int loadQueries(IndexShard shard) {
|
||||||
shard.refresh("percolator_load_queries", true);
|
shard.refresh("percolator_load_queries", true);
|
||||||
// Maybe add a mode load? This isn't really a write. We need write b/c state=post_recovery
|
// Maybe add a mode load? This isn't really a write. We need write b/c state=post_recovery
|
||||||
try (Engine.Searcher searcher = shard.acquireSearcher("percolator_load_queries", IndexShard.Mode.WRITE)) {
|
try (Engine.Searcher searcher = shard.acquireSearcher("percolator_load_queries", true)) {
|
||||||
Query query = new ConstantScoreQuery(
|
Query query = new ConstantScoreQuery(
|
||||||
indexCache.filter().cache(
|
indexCache.filter().cache(
|
||||||
new TermFilter(new Term(TypeFieldMapper.NAME, PercolatorService.TYPE_NAME))
|
new TermFilter(new Term(TypeFieldMapper.NAME, PercolatorService.TYPE_NAME))
|
||||||
|
|
|
@ -1,110 +0,0 @@
|
||||||
/*
|
|
||||||
* Licensed to Elasticsearch under one or more contributor
|
|
||||||
* license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.index.service;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableSet;
|
|
||||||
import org.elasticsearch.ElasticsearchException;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
|
||||||
import org.elasticsearch.common.inject.Injector;
|
|
||||||
import org.elasticsearch.index.IndexComponent;
|
|
||||||
import org.elasticsearch.index.IndexShardMissingException;
|
|
||||||
import org.elasticsearch.index.aliases.IndexAliasesService;
|
|
||||||
import org.elasticsearch.index.analysis.AnalysisService;
|
|
||||||
import org.elasticsearch.index.cache.IndexCache;
|
|
||||||
import org.elasticsearch.index.cache.bitset.BitsetFilterCache;
|
|
||||||
import org.elasticsearch.index.engine.IndexEngine;
|
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldDataService;
|
|
||||||
import org.elasticsearch.index.gateway.IndexGateway;
|
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
|
||||||
import org.elasticsearch.index.settings.IndexSettingsService;
|
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
|
||||||
import org.elasticsearch.index.store.IndexStore;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public interface IndexService extends IndexComponent, Iterable<IndexShard> {
|
|
||||||
|
|
||||||
Injector injector();
|
|
||||||
|
|
||||||
IndexGateway gateway();
|
|
||||||
|
|
||||||
IndexCache cache();
|
|
||||||
|
|
||||||
IndexFieldDataService fieldData();
|
|
||||||
|
|
||||||
BitsetFilterCache bitsetFilterCache();
|
|
||||||
|
|
||||||
IndexSettingsService settingsService();
|
|
||||||
|
|
||||||
AnalysisService analysisService();
|
|
||||||
|
|
||||||
MapperService mapperService();
|
|
||||||
|
|
||||||
IndexQueryParserService queryParserService();
|
|
||||||
|
|
||||||
SimilarityService similarityService();
|
|
||||||
|
|
||||||
IndexAliasesService aliasesService();
|
|
||||||
|
|
||||||
IndexEngine engine();
|
|
||||||
|
|
||||||
IndexStore store();
|
|
||||||
|
|
||||||
IndexShard createShard(int sShardId) throws ElasticsearchException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes the shard, does not delete local data or the gateway.
|
|
||||||
*/
|
|
||||||
void removeShard(int shardId, String reason) throws ElasticsearchException;
|
|
||||||
|
|
||||||
int numberOfShards();
|
|
||||||
|
|
||||||
ImmutableSet<Integer> shardIds();
|
|
||||||
|
|
||||||
boolean hasShard(int shardId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the shard with the provided id, or null if there is no such shard.
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
IndexShard shard(int shardId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the shard with the provided id, or throw an exception if it doesn't exist.
|
|
||||||
*/
|
|
||||||
IndexShard shardSafe(int shardId) throws IndexShardMissingException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the shard injector for the provided id, or null if there is no such shard.
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
Injector shardInjector(int shardId);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the shard injector for the provided id, or throw an exception if there is no such shard.
|
|
||||||
*/
|
|
||||||
Injector shardInjectorSafe(int shardId) throws IndexShardMissingException;
|
|
||||||
|
|
||||||
String indexUUID();
|
|
||||||
|
|
||||||
}
|
|
|
@ -35,7 +35,7 @@ import org.elasticsearch.index.merge.policy.LogDocMergePolicyProvider;
|
||||||
import org.elasticsearch.index.merge.policy.TieredMergePolicyProvider;
|
import org.elasticsearch.index.merge.policy.TieredMergePolicyProvider;
|
||||||
import org.elasticsearch.index.merge.scheduler.ConcurrentMergeSchedulerProvider;
|
import org.elasticsearch.index.merge.scheduler.ConcurrentMergeSchedulerProvider;
|
||||||
import org.elasticsearch.index.search.slowlog.ShardSlowLogSearchService;
|
import org.elasticsearch.index.search.slowlog.ShardSlowLogSearchService;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
||||||
import org.elasticsearch.index.translog.TranslogService;
|
import org.elasticsearch.index.translog.TranslogService;
|
||||||
import org.elasticsearch.index.translog.fs.FsTranslog;
|
import org.elasticsearch.index.translog.fs.FsTranslog;
|
||||||
|
@ -71,7 +71,7 @@ public class IndexDynamicSettingsModule extends AbstractModule {
|
||||||
indexDynamicSettings.addDynamicSetting(IndexMetaData.SETTING_BLOCKS_WRITE);
|
indexDynamicSettings.addDynamicSetting(IndexMetaData.SETTING_BLOCKS_WRITE);
|
||||||
indexDynamicSettings.addDynamicSetting(IndexMetaData.SETTING_BLOCKS_METADATA);
|
indexDynamicSettings.addDynamicSetting(IndexMetaData.SETTING_BLOCKS_METADATA);
|
||||||
indexDynamicSettings.addDynamicSetting(IndicesTTLService.INDEX_TTL_DISABLE_PURGE);
|
indexDynamicSettings.addDynamicSetting(IndicesTTLService.INDEX_TTL_DISABLE_PURGE);
|
||||||
indexDynamicSettings.addDynamicSetting(InternalIndexShard.INDEX_REFRESH_INTERVAL, Validator.TIME);
|
indexDynamicSettings.addDynamicSetting(IndexShard.INDEX_REFRESH_INTERVAL, Validator.TIME);
|
||||||
indexDynamicSettings.addDynamicSetting(LocalGatewayAllocator.INDEX_RECOVERY_INITIAL_SHARDS);
|
indexDynamicSettings.addDynamicSetting(LocalGatewayAllocator.INDEX_RECOVERY_INITIAL_SHARDS);
|
||||||
indexDynamicSettings.addDynamicSetting(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MIN_MERGE_SIZE, Validator.BYTES_SIZE);
|
indexDynamicSettings.addDynamicSetting(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MIN_MERGE_SIZE, Validator.BYTES_SIZE);
|
||||||
indexDynamicSettings.addDynamicSetting(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MAX_MERGE_SIZE, Validator.BYTES_SIZE);
|
indexDynamicSettings.addDynamicSetting(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MAX_MERGE_SIZE, Validator.BYTES_SIZE);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.elasticsearch.index.shard.service;
|
package org.elasticsearch.index.shard;
|
||||||
|
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
import org.apache.lucene.codecs.PostingsFormat;
|
import org.apache.lucene.codecs.PostingsFormat;
|
||||||
|
@ -86,21 +86,9 @@ import org.elasticsearch.index.refresh.RefreshStats;
|
||||||
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
||||||
import org.elasticsearch.index.search.stats.SearchStats;
|
import org.elasticsearch.index.search.stats.SearchStats;
|
||||||
import org.elasticsearch.index.search.stats.ShardSearchService;
|
import org.elasticsearch.index.search.stats.ShardSearchService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.settings.IndexSettingsService;
|
import org.elasticsearch.index.settings.IndexSettingsService;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
|
||||||
import org.elasticsearch.index.shard.DocsStats;
|
|
||||||
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardNotRecoveringException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardNotStartedException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardRecoveringException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardRelocatedException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardStartedException;
|
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.store.Store;
|
||||||
import org.elasticsearch.index.store.StoreStats;
|
import org.elasticsearch.index.store.StoreStats;
|
||||||
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
||||||
|
@ -128,7 +116,7 @@ import static org.elasticsearch.index.mapper.SourceToParse.source;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class InternalIndexShard extends AbstractIndexShardComponent implements IndexShard {
|
public class IndexShard extends AbstractIndexShardComponent implements IndexShardComponent {
|
||||||
|
|
||||||
private final ThreadPool threadPool;
|
private final ThreadPool threadPool;
|
||||||
private final IndexSettingsService indexSettingsService;
|
private final IndexSettingsService indexSettingsService;
|
||||||
|
@ -177,10 +165,10 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
private final MeanMetric flushMetric = new MeanMetric();
|
private final MeanMetric flushMetric = new MeanMetric();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public InternalIndexShard(ShardId shardId, @IndexSettings Settings indexSettings, IndexSettingsService indexSettingsService, IndicesLifecycle indicesLifecycle, Store store, Engine engine, MergeSchedulerProvider mergeScheduler, Translog translog,
|
public IndexShard(ShardId shardId, @IndexSettings Settings indexSettings, IndexSettingsService indexSettingsService, IndicesLifecycle indicesLifecycle, Store store, Engine engine, MergeSchedulerProvider mergeScheduler, Translog translog,
|
||||||
ThreadPool threadPool, MapperService mapperService, IndexQueryParserService queryParserService, IndexCache indexCache, IndexAliasesService indexAliasesService, ShardIndexingService indexingService, ShardGetService getService, ShardSearchService searchService, ShardIndexWarmerService shardWarmerService,
|
ThreadPool threadPool, MapperService mapperService, IndexQueryParserService queryParserService, IndexCache indexCache, IndexAliasesService indexAliasesService, ShardIndexingService indexingService, ShardGetService getService, ShardSearchService searchService, ShardIndexWarmerService shardWarmerService,
|
||||||
ShardFilterCache shardFilterCache, ShardFieldData shardFieldData, PercolatorQueriesRegistry percolatorQueriesRegistry, ShardPercolateService shardPercolateService, CodecService codecService,
|
ShardFilterCache shardFilterCache, ShardFieldData shardFieldData, PercolatorQueriesRegistry percolatorQueriesRegistry, ShardPercolateService shardPercolateService, CodecService codecService,
|
||||||
ShardTermVectorsService termVectorsService, IndexFieldDataService indexFieldDataService, IndexService indexService, ShardSuggestService shardSuggestService, ShardQueryCache shardQueryCache, ShardBitsetFilterCache shardBitsetFilterCache) {
|
ShardTermVectorsService termVectorsService, IndexFieldDataService indexFieldDataService, IndexService indexService, ShardSuggestService shardSuggestService, ShardQueryCache shardQueryCache, ShardBitsetFilterCache shardBitsetFilterCache) {
|
||||||
super(shardId, indexSettings);
|
super(shardId, indexSettings);
|
||||||
this.indicesLifecycle = (InternalIndicesLifecycle) indicesLifecycle;
|
this.indicesLifecycle = (InternalIndicesLifecycle) indicesLifecycle;
|
||||||
this.indexSettingsService = indexSettingsService;
|
this.indexSettingsService = indexSettingsService;
|
||||||
|
@ -239,72 +227,63 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return this.indexingService;
|
return this.indexingService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardGetService getService() {
|
public ShardGetService getService() {
|
||||||
return this.getService;
|
return this.getService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardTermVectorsService termVectorsService() {
|
public ShardTermVectorsService termVectorsService() {
|
||||||
return termVectorsService;
|
return termVectorsService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardSuggestService shardSuggestService() {
|
public ShardSuggestService shardSuggestService() {
|
||||||
return shardSuggestService;
|
return shardSuggestService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardBitsetFilterCache shardBitsetFilterCache() {
|
public ShardBitsetFilterCache shardBitsetFilterCache() {
|
||||||
return shardBitsetFilterCache;
|
return shardBitsetFilterCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexFieldDataService indexFieldDataService() {
|
public IndexFieldDataService indexFieldDataService() {
|
||||||
return indexFieldDataService;
|
return indexFieldDataService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MapperService mapperService() {
|
public MapperService mapperService() {
|
||||||
return mapperService;
|
return mapperService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexService indexService() {
|
public IndexService indexService() {
|
||||||
return indexService;
|
return indexService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardSearchService searchService() {
|
public ShardSearchService searchService() {
|
||||||
return this.searchService;
|
return this.searchService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardIndexWarmerService warmerService() {
|
public ShardIndexWarmerService warmerService() {
|
||||||
return this.shardWarmerService;
|
return this.shardWarmerService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardFilterCache filterCache() {
|
public ShardFilterCache filterCache() {
|
||||||
return this.shardFilterCache;
|
return this.shardFilterCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardQueryCache queryCache() {
|
public ShardQueryCache queryCache() {
|
||||||
return this.shardQueryCache;
|
return this.shardQueryCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardFieldData fieldData() {
|
public ShardFieldData fieldData() {
|
||||||
return this.shardFieldData;
|
return this.shardFieldData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
|
* Returns the latest cluster routing entry received with this shard. Might be null if the
|
||||||
|
* shard was just created.
|
||||||
|
*/
|
||||||
public ShardRouting routingEntry() {
|
public ShardRouting routingEntry() {
|
||||||
return this.shardRouting;
|
return this.shardRouting;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InternalIndexShard routingEntry(ShardRouting newRouting) {
|
public IndexShard routingEntry(ShardRouting newRouting) {
|
||||||
ShardRouting currentRouting = this.shardRouting;
|
ShardRouting currentRouting = this.shardRouting;
|
||||||
if (!newRouting.shardId().equals(shardId())) {
|
if (!newRouting.shardId().equals(shardId())) {
|
||||||
throw new ElasticsearchIllegalArgumentException("Trying to set a routing entry with shardId [" + newRouting.shardId() + "] on a shard with shardId [" + shardId() + "]");
|
throw new ElasticsearchIllegalArgumentException("Trying to set a routing entry with shardId [" + newRouting.shardId() + "] on a shard with shardId [" + shardId() + "]");
|
||||||
|
@ -377,7 +356,7 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public InternalIndexShard relocated(String reason) throws IndexShardNotStartedException {
|
public IndexShard relocated(String reason) throws IndexShardNotStartedException {
|
||||||
synchronized (mutex) {
|
synchronized (mutex) {
|
||||||
if (state != IndexShardState.STARTED) {
|
if (state != IndexShardState.STARTED) {
|
||||||
throw new IndexShardNotStartedException(shardId, state);
|
throw new IndexShardNotStartedException(shardId, state);
|
||||||
|
@ -387,7 +366,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexShardState state() {
|
public IndexShardState state() {
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
@ -407,7 +385,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return previousState;
|
return previousState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.Create prepareCreate(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates, boolean autoGeneratedId) throws ElasticsearchException {
|
public Engine.Create prepareCreate(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates, boolean autoGeneratedId) throws ElasticsearchException {
|
||||||
long startTime = System.nanoTime();
|
long startTime = System.nanoTime();
|
||||||
Tuple<DocumentMapper, Boolean> docMapper = mapperService.documentMapperWithAutoCreate(source.type());
|
Tuple<DocumentMapper, Boolean> docMapper = mapperService.documentMapperWithAutoCreate(source.type());
|
||||||
|
@ -415,7 +392,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return new Engine.Create(docMapper.v1(), docMapper.v1().uidMapper().term(doc.uid().stringValue()), doc, version, versionType, origin, startTime, state != IndexShardState.STARTED || canHaveDuplicates, autoGeneratedId);
|
return new Engine.Create(docMapper.v1(), docMapper.v1().uidMapper().term(doc.uid().stringValue()), doc, version, versionType, origin, startTime, state != IndexShardState.STARTED || canHaveDuplicates, autoGeneratedId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ParsedDocument create(Engine.Create create) throws ElasticsearchException {
|
public ParsedDocument create(Engine.Create create) throws ElasticsearchException {
|
||||||
writeAllowed(create.origin());
|
writeAllowed(create.origin());
|
||||||
create = indexingService.preCreate(create);
|
create = indexingService.preCreate(create);
|
||||||
|
@ -433,7 +409,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return create.parsedDoc();
|
return create.parsedDoc();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.Index prepareIndex(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates) throws ElasticsearchException {
|
public Engine.Index prepareIndex(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates) throws ElasticsearchException {
|
||||||
long startTime = System.nanoTime();
|
long startTime = System.nanoTime();
|
||||||
Tuple<DocumentMapper, Boolean> docMapper = mapperService.documentMapperWithAutoCreate(source.type());
|
Tuple<DocumentMapper, Boolean> docMapper = mapperService.documentMapperWithAutoCreate(source.type());
|
||||||
|
@ -441,7 +416,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return new Engine.Index(docMapper.v1(), docMapper.v1().uidMapper().term(doc.uid().stringValue()), doc, version, versionType, origin, startTime, state != IndexShardState.STARTED || canHaveDuplicates);
|
return new Engine.Index(docMapper.v1(), docMapper.v1().uidMapper().term(doc.uid().stringValue()), doc, version, versionType, origin, startTime, state != IndexShardState.STARTED || canHaveDuplicates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ParsedDocument index(Engine.Index index) throws ElasticsearchException {
|
public ParsedDocument index(Engine.Index index) throws ElasticsearchException {
|
||||||
writeAllowed(index.origin());
|
writeAllowed(index.origin());
|
||||||
index = indexingService.preIndex(index);
|
index = indexingService.preIndex(index);
|
||||||
|
@ -459,14 +433,12 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return index.parsedDoc();
|
return index.parsedDoc();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.Delete prepareDelete(String type, String id, long version, VersionType versionType, Engine.Operation.Origin origin) throws ElasticsearchException {
|
public Engine.Delete prepareDelete(String type, String id, long version, VersionType versionType, Engine.Operation.Origin origin) throws ElasticsearchException {
|
||||||
long startTime = System.nanoTime();
|
long startTime = System.nanoTime();
|
||||||
DocumentMapper docMapper = mapperService.documentMapperWithAutoCreate(type).v1();
|
DocumentMapper docMapper = mapperService.documentMapperWithAutoCreate(type).v1();
|
||||||
return new Engine.Delete(type, id, docMapper.uidMapper().term(type, id), version, versionType, origin, startTime, false);
|
return new Engine.Delete(type, id, docMapper.uidMapper().term(type, id), version, versionType, origin, startTime, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void delete(Engine.Delete delete) throws ElasticsearchException {
|
public void delete(Engine.Delete delete) throws ElasticsearchException {
|
||||||
writeAllowed(delete.origin());
|
writeAllowed(delete.origin());
|
||||||
delete = indexingService.preDelete(delete);
|
delete = indexingService.preDelete(delete);
|
||||||
|
@ -483,7 +455,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
indexingService.postDelete(delete);
|
indexingService.postDelete(delete);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.DeleteByQuery prepareDeleteByQuery(BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) throws ElasticsearchException {
|
public Engine.DeleteByQuery prepareDeleteByQuery(BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) throws ElasticsearchException {
|
||||||
long startTime = System.nanoTime();
|
long startTime = System.nanoTime();
|
||||||
if (types == null) {
|
if (types == null) {
|
||||||
|
@ -497,7 +468,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return new Engine.DeleteByQuery(query, source, filteringAliases, aliasFilter, parentFilter, origin, startTime, types);
|
return new Engine.DeleteByQuery(query, source, filteringAliases, aliasFilter, parentFilter, origin, startTime, types);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteByQuery(Engine.DeleteByQuery deleteByQuery) throws ElasticsearchException {
|
public void deleteByQuery(Engine.DeleteByQuery deleteByQuery) throws ElasticsearchException {
|
||||||
writeAllowed(deleteByQuery.origin());
|
writeAllowed(deleteByQuery.origin());
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
|
@ -509,13 +479,11 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
indexingService.postDeleteByQuery(deleteByQuery);
|
indexingService.postDeleteByQuery(deleteByQuery);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.GetResult get(Engine.Get get) throws ElasticsearchException {
|
public Engine.GetResult get(Engine.Get get) throws ElasticsearchException {
|
||||||
readAllowed();
|
readAllowed();
|
||||||
return engine.get(get);
|
return engine.get(get);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void refresh(String source, boolean force) throws ElasticsearchException {
|
public void refresh(String source, boolean force) throws ElasticsearchException {
|
||||||
verifyNotClosed();
|
verifyNotClosed();
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
|
@ -526,17 +494,14 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
refreshMetric.inc(System.nanoTime() - time);
|
refreshMetric.inc(System.nanoTime() - time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RefreshStats refreshStats() {
|
public RefreshStats refreshStats() {
|
||||||
return new RefreshStats(refreshMetric.count(), TimeUnit.NANOSECONDS.toMillis(refreshMetric.sum()));
|
return new RefreshStats(refreshMetric.count(), TimeUnit.NANOSECONDS.toMillis(refreshMetric.sum()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FlushStats flushStats() {
|
public FlushStats flushStats() {
|
||||||
return new FlushStats(flushMetric.count(), TimeUnit.NANOSECONDS.toMillis(flushMetric.sum()));
|
return new FlushStats(flushMetric.count(), TimeUnit.NANOSECONDS.toMillis(flushMetric.sum()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public DocsStats docStats() {
|
public DocsStats docStats() {
|
||||||
final Engine.Searcher searcher = acquireSearcher("doc_stats");
|
final Engine.Searcher searcher = acquireSearcher("doc_stats");
|
||||||
try {
|
try {
|
||||||
|
@ -546,22 +511,18 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexingStats indexingStats(String... types) {
|
public IndexingStats indexingStats(String... types) {
|
||||||
return indexingService.stats(types);
|
return indexingService.stats(types);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public SearchStats searchStats(String... groups) {
|
public SearchStats searchStats(String... groups) {
|
||||||
return searchService.stats(groups);
|
return searchService.stats(groups);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public GetStats getStats() {
|
public GetStats getStats() {
|
||||||
return getService.stats();
|
return getService.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public StoreStats storeStats() {
|
public StoreStats storeStats() {
|
||||||
try {
|
try {
|
||||||
return store.stats();
|
return store.stats();
|
||||||
|
@ -572,60 +533,49 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public MergeStats mergeStats() {
|
public MergeStats mergeStats() {
|
||||||
return mergeScheduler.stats();
|
return mergeScheduler.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public SegmentsStats segmentStats() {
|
public SegmentsStats segmentStats() {
|
||||||
SegmentsStats segmentsStats = engine.segmentsStats();
|
SegmentsStats segmentsStats = engine.segmentsStats();
|
||||||
segmentsStats.addBitsetMemoryInBytes(shardBitsetFilterCache.getMemorySizeInBytes());
|
segmentsStats.addBitsetMemoryInBytes(shardBitsetFilterCache.getMemorySizeInBytes());
|
||||||
return segmentsStats;
|
return segmentsStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public WarmerStats warmerStats() {
|
public WarmerStats warmerStats() {
|
||||||
return shardWarmerService.stats();
|
return shardWarmerService.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FilterCacheStats filterCacheStats() {
|
public FilterCacheStats filterCacheStats() {
|
||||||
return shardFilterCache.stats();
|
return shardFilterCache.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public FieldDataStats fieldDataStats(String... fields) {
|
public FieldDataStats fieldDataStats(String... fields) {
|
||||||
return shardFieldData.stats(fields);
|
return shardFieldData.stats(fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public PercolatorQueriesRegistry percolateRegistry() {
|
public PercolatorQueriesRegistry percolateRegistry() {
|
||||||
return percolatorQueriesRegistry;
|
return percolatorQueriesRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ShardPercolateService shardPercolateService() {
|
public ShardPercolateService shardPercolateService() {
|
||||||
return shardPercolateService;
|
return shardPercolateService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public IdCacheStats idCacheStats() {
|
public IdCacheStats idCacheStats() {
|
||||||
long memorySizeInBytes = shardFieldData.stats(ParentFieldMapper.NAME).getFields().get(ParentFieldMapper.NAME);
|
long memorySizeInBytes = shardFieldData.stats(ParentFieldMapper.NAME).getFields().get(ParentFieldMapper.NAME);
|
||||||
return new IdCacheStats(memorySizeInBytes);
|
return new IdCacheStats(memorySizeInBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TranslogStats translogStats() {
|
public TranslogStats translogStats() {
|
||||||
return translog.stats();
|
return translog.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public SuggestStats suggestStats() {
|
public SuggestStats suggestStats() {
|
||||||
return shardSuggestService.stats();
|
return shardSuggestService.stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public CompletionStats completionStats(String... fields) {
|
public CompletionStats completionStats(String... fields) {
|
||||||
CompletionStats completionStats = new CompletionStats();
|
CompletionStats completionStats = new CompletionStats();
|
||||||
final Engine.Searcher currentSearcher = acquireSearcher("completion_stats");
|
final Engine.Searcher currentSearcher = acquireSearcher("completion_stats");
|
||||||
|
@ -641,7 +591,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
return completionStats;
|
return completionStats;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void flush(FlushRequest request) throws ElasticsearchException {
|
public void flush(FlushRequest request) throws ElasticsearchException {
|
||||||
// we allows flush while recovering, since we allow for operations to happen
|
// we allows flush while recovering, since we allow for operations to happen
|
||||||
// while recovering, and we want to keep the translog at bay (up to deletes, which
|
// while recovering, and we want to keep the translog at bay (up to deletes, which
|
||||||
|
@ -655,7 +604,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
flushMetric.inc(System.nanoTime() - time);
|
flushMetric.inc(System.nanoTime() - time);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void optimize(OptimizeRequest optimize) throws ElasticsearchException {
|
public void optimize(OptimizeRequest optimize) throws ElasticsearchException {
|
||||||
verifyStarted();
|
verifyStarted();
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
|
@ -675,26 +623,22 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void recover(Engine.RecoveryHandler recoveryHandler) throws EngineException {
|
public void recover(Engine.RecoveryHandler recoveryHandler) throws EngineException {
|
||||||
verifyStarted();
|
verifyStarted();
|
||||||
engine.recover(recoveryHandler);
|
engine.recover(recoveryHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void failShard(String reason, Throwable e) {
|
public void failShard(String reason, Throwable e) {
|
||||||
// fail the engine. This will cause this shard to also be removed from the node's index service.
|
// fail the engine. This will cause this shard to also be removed from the node's index service.
|
||||||
engine.failEngine(reason, e);
|
engine.failEngine(reason, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Engine.Searcher acquireSearcher(String source) {
|
public Engine.Searcher acquireSearcher(String source) {
|
||||||
return acquireSearcher(source, Mode.READ);
|
return acquireSearcher(source, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public Engine.Searcher acquireSearcher(String source, boolean searcherForWriteOperation) {
|
||||||
public Engine.Searcher acquireSearcher(String source, Mode mode) {
|
readAllowed(searcherForWriteOperation);
|
||||||
readAllowed(mode);
|
|
||||||
return engine.acquireSearcher(source);
|
return engine.acquireSearcher(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -716,7 +660,7 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public InternalIndexShard postRecovery(String reason) throws IndexShardStartedException, IndexShardRelocatedException, IndexShardClosedException {
|
public IndexShard postRecovery(String reason) throws IndexShardStartedException, IndexShardRelocatedException, IndexShardClosedException {
|
||||||
synchronized (mutex) {
|
synchronized (mutex) {
|
||||||
if (state == IndexShardState.CLOSED) {
|
if (state == IndexShardState.CLOSED) {
|
||||||
throw new IndexShardClosedException(shardId);
|
throw new IndexShardClosedException(shardId);
|
||||||
|
@ -854,23 +798,20 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
public void readAllowed() throws IllegalIndexShardStateException {
|
public void readAllowed() throws IllegalIndexShardStateException {
|
||||||
readAllowed(Mode.READ);
|
readAllowed(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void readAllowed(Mode mode) throws IllegalIndexShardStateException {
|
private void readAllowed(boolean writeOperation) throws IllegalIndexShardStateException {
|
||||||
IndexShardState state = this.state; // one time volatile read
|
IndexShardState state = this.state; // one time volatile read
|
||||||
switch (mode) {
|
if (writeOperation) {
|
||||||
case READ:
|
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED && state != IndexShardState.RECOVERING && state != IndexShardState.POST_RECOVERY) {
|
||||||
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED) {
|
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
||||||
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
}
|
||||||
}
|
} else {
|
||||||
break;
|
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED) {
|
||||||
case WRITE:
|
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
||||||
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED && state != IndexShardState.RECOVERING && state != IndexShardState.POST_RECOVERY) {
|
}
|
||||||
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -939,9 +880,9 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
if (state == IndexShardState.CLOSED) {
|
if (state == IndexShardState.CLOSED) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TimeValue refreshInterval = settings.getAsTime(INDEX_REFRESH_INTERVAL, InternalIndexShard.this.refreshInterval);
|
TimeValue refreshInterval = settings.getAsTime(INDEX_REFRESH_INTERVAL, IndexShard.this.refreshInterval);
|
||||||
if (!refreshInterval.equals(InternalIndexShard.this.refreshInterval)) {
|
if (!refreshInterval.equals(IndexShard.this.refreshInterval)) {
|
||||||
logger.info("updating refresh_interval from [{}] to [{}]", InternalIndexShard.this.refreshInterval, refreshInterval);
|
logger.info("updating refresh_interval from [{}] to [{}]", IndexShard.this.refreshInterval, refreshInterval);
|
||||||
if (refreshScheduledFuture != null) {
|
if (refreshScheduledFuture != null) {
|
||||||
// NOTE: we pass false here so we do NOT attempt Thread.interrupt if EngineRefresher.run is currently running. This is
|
// NOTE: we pass false here so we do NOT attempt Thread.interrupt if EngineRefresher.run is currently running. This is
|
||||||
// very important, because doing so can cause files to suddenly be closed if they were doing IO when the interrupt
|
// very important, because doing so can cause files to suddenly be closed if they were doing IO when the interrupt
|
||||||
|
@ -949,7 +890,7 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
||||||
FutureUtils.cancel(refreshScheduledFuture);
|
FutureUtils.cancel(refreshScheduledFuture);
|
||||||
refreshScheduledFuture = null;
|
refreshScheduledFuture = null;
|
||||||
}
|
}
|
||||||
InternalIndexShard.this.refreshInterval = refreshInterval;
|
IndexShard.this.refreshInterval = refreshInterval;
|
||||||
if (refreshInterval.millis() > 0) {
|
if (refreshInterval.millis() > 0) {
|
||||||
refreshScheduledFuture = threadPool.schedule(refreshInterval, ThreadPool.Names.SAME, new EngineRefresher());
|
refreshScheduledFuture = threadPool.schedule(refreshInterval, ThreadPool.Names.SAME, new EngineRefresher());
|
||||||
}
|
}
|
|
@ -21,8 +21,6 @@ package org.elasticsearch.index.shard;
|
||||||
|
|
||||||
import org.elasticsearch.common.inject.AbstractModule;
|
import org.elasticsearch.common.inject.AbstractModule;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -30,19 +28,16 @@ import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
||||||
*/
|
*/
|
||||||
public class IndexShardModule extends AbstractModule {
|
public class IndexShardModule extends AbstractModule {
|
||||||
|
|
||||||
private final Settings settings;
|
|
||||||
|
|
||||||
private final ShardId shardId;
|
private final ShardId shardId;
|
||||||
|
|
||||||
public IndexShardModule(Settings settings, ShardId shardId) {
|
public IndexShardModule(ShardId shardId) {
|
||||||
this.settings = settings;
|
|
||||||
this.shardId = shardId;
|
this.shardId = shardId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(ShardId.class).toInstance(shardId);
|
bind(ShardId.class).toInstance(shardId);
|
||||||
bind(IndexShard.class).to(InternalIndexShard.class).asEagerSingleton();
|
bind(IndexShard.class).asEagerSingleton();
|
||||||
bind(ShardIndexWarmerService.class).asEagerSingleton();
|
bind(ShardIndexWarmerService.class).asEagerSingleton();
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,187 +0,0 @@
|
||||||
/*
|
|
||||||
* Licensed to Elasticsearch under one or more contributor
|
|
||||||
* license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.index.shard.service;
|
|
||||||
|
|
||||||
import org.elasticsearch.ElasticsearchException;
|
|
||||||
import org.elasticsearch.action.admin.indices.flush.FlushRequest;
|
|
||||||
import org.elasticsearch.action.admin.indices.optimize.OptimizeRequest;
|
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
|
||||||
import org.elasticsearch.common.bytes.BytesReference;
|
|
||||||
import org.elasticsearch.index.VersionType;
|
|
||||||
import org.elasticsearch.index.cache.bitset.ShardBitsetFilterCache;
|
|
||||||
import org.elasticsearch.index.cache.filter.FilterCacheStats;
|
|
||||||
import org.elasticsearch.index.cache.filter.ShardFilterCache;
|
|
||||||
import org.elasticsearch.index.cache.id.IdCacheStats;
|
|
||||||
import org.elasticsearch.index.cache.query.ShardQueryCache;
|
|
||||||
import org.elasticsearch.index.deletionpolicy.SnapshotIndexCommit;
|
|
||||||
import org.elasticsearch.index.engine.Engine;
|
|
||||||
import org.elasticsearch.index.engine.EngineException;
|
|
||||||
import org.elasticsearch.index.engine.SegmentsStats;
|
|
||||||
import org.elasticsearch.index.fielddata.FieldDataStats;
|
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldDataService;
|
|
||||||
import org.elasticsearch.index.fielddata.ShardFieldData;
|
|
||||||
import org.elasticsearch.index.flush.FlushStats;
|
|
||||||
import org.elasticsearch.index.get.GetStats;
|
|
||||||
import org.elasticsearch.index.get.ShardGetService;
|
|
||||||
import org.elasticsearch.index.indexing.IndexingStats;
|
|
||||||
import org.elasticsearch.index.indexing.ShardIndexingService;
|
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
|
||||||
import org.elasticsearch.index.mapper.ParsedDocument;
|
|
||||||
import org.elasticsearch.index.mapper.SourceToParse;
|
|
||||||
import org.elasticsearch.index.merge.MergeStats;
|
|
||||||
import org.elasticsearch.index.percolator.PercolatorQueriesRegistry;
|
|
||||||
import org.elasticsearch.index.percolator.stats.ShardPercolateService;
|
|
||||||
import org.elasticsearch.index.refresh.RefreshStats;
|
|
||||||
import org.elasticsearch.index.search.stats.SearchStats;
|
|
||||||
import org.elasticsearch.index.search.stats.ShardSearchService;
|
|
||||||
import org.elasticsearch.index.service.IndexService;
|
|
||||||
import org.elasticsearch.index.shard.*;
|
|
||||||
import org.elasticsearch.index.store.StoreStats;
|
|
||||||
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
|
||||||
import org.elasticsearch.index.suggest.stats.SuggestStats;
|
|
||||||
import org.elasticsearch.index.termvectors.ShardTermVectorsService;
|
|
||||||
import org.elasticsearch.index.translog.TranslogStats;
|
|
||||||
import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
|
||||||
import org.elasticsearch.index.warmer.WarmerStats;
|
|
||||||
import org.elasticsearch.search.suggest.completion.CompletionStats;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public interface IndexShard extends IndexShardComponent {
|
|
||||||
|
|
||||||
ShardIndexingService indexingService();
|
|
||||||
|
|
||||||
ShardGetService getService();
|
|
||||||
|
|
||||||
ShardSearchService searchService();
|
|
||||||
|
|
||||||
ShardIndexWarmerService warmerService();
|
|
||||||
|
|
||||||
ShardFilterCache filterCache();
|
|
||||||
|
|
||||||
ShardQueryCache queryCache();
|
|
||||||
|
|
||||||
ShardFieldData fieldData();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the latest cluster routing entry received with this shard. Might be null if the
|
|
||||||
* shard was just created.
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
ShardRouting routingEntry();
|
|
||||||
|
|
||||||
DocsStats docStats();
|
|
||||||
|
|
||||||
StoreStats storeStats();
|
|
||||||
|
|
||||||
IndexingStats indexingStats(String... types);
|
|
||||||
|
|
||||||
SearchStats searchStats(String... groups);
|
|
||||||
|
|
||||||
GetStats getStats();
|
|
||||||
|
|
||||||
MergeStats mergeStats();
|
|
||||||
|
|
||||||
SegmentsStats segmentStats();
|
|
||||||
|
|
||||||
RefreshStats refreshStats();
|
|
||||||
|
|
||||||
FlushStats flushStats();
|
|
||||||
|
|
||||||
WarmerStats warmerStats();
|
|
||||||
|
|
||||||
FilterCacheStats filterCacheStats();
|
|
||||||
|
|
||||||
IdCacheStats idCacheStats();
|
|
||||||
|
|
||||||
FieldDataStats fieldDataStats(String... fields);
|
|
||||||
|
|
||||||
CompletionStats completionStats(String... fields);
|
|
||||||
|
|
||||||
TranslogStats translogStats();
|
|
||||||
|
|
||||||
SuggestStats suggestStats();
|
|
||||||
|
|
||||||
PercolatorQueriesRegistry percolateRegistry();
|
|
||||||
|
|
||||||
ShardPercolateService shardPercolateService();
|
|
||||||
|
|
||||||
ShardTermVectorsService termVectorsService();
|
|
||||||
|
|
||||||
ShardSuggestService shardSuggestService();
|
|
||||||
|
|
||||||
ShardBitsetFilterCache shardBitsetFilterCache();
|
|
||||||
|
|
||||||
MapperService mapperService();
|
|
||||||
|
|
||||||
IndexFieldDataService indexFieldDataService();
|
|
||||||
|
|
||||||
IndexService indexService();
|
|
||||||
|
|
||||||
IndexShardState state();
|
|
||||||
|
|
||||||
Engine.Create prepareCreate(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates, boolean autoGeneratedId) throws ElasticsearchException;
|
|
||||||
|
|
||||||
ParsedDocument create(Engine.Create create) throws ElasticsearchException;
|
|
||||||
|
|
||||||
Engine.Index prepareIndex(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates) throws ElasticsearchException;
|
|
||||||
|
|
||||||
ParsedDocument index(Engine.Index index) throws ElasticsearchException;
|
|
||||||
|
|
||||||
Engine.Delete prepareDelete(String type, String id, long version, VersionType versionType, Engine.Operation.Origin origin) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void delete(Engine.Delete delete) throws ElasticsearchException;
|
|
||||||
|
|
||||||
Engine.DeleteByQuery prepareDeleteByQuery(BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void deleteByQuery(Engine.DeleteByQuery deleteByQuery) throws ElasticsearchException;
|
|
||||||
|
|
||||||
Engine.GetResult get(Engine.Get get) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void refresh(String source, boolean force) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void flush(FlushRequest request) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void optimize(OptimizeRequest optimize) throws ElasticsearchException;
|
|
||||||
|
|
||||||
void recover(Engine.RecoveryHandler recoveryHandler) throws EngineException;
|
|
||||||
|
|
||||||
void failShard(String reason, @Nullable Throwable e);
|
|
||||||
|
|
||||||
Engine.Searcher acquireSearcher(String source);
|
|
||||||
|
|
||||||
Engine.Searcher acquireSearcher(String source, Mode mode);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns <tt>true</tt> if this shard can ignore a recovery attempt made to it (since the already doing/done it)
|
|
||||||
*/
|
|
||||||
public boolean ignoreRecoveryAttempt();
|
|
||||||
|
|
||||||
void readAllowed() throws IllegalIndexShardStateException;
|
|
||||||
|
|
||||||
ShardId shardId();
|
|
||||||
|
|
||||||
public enum Mode {
|
|
||||||
READ,
|
|
||||||
WRITE
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -33,8 +33,7 @@ import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.repositories.RepositoriesService;
|
import org.elasticsearch.repositories.RepositoriesService;
|
||||||
import org.elasticsearch.snapshots.RestoreService;
|
import org.elasticsearch.snapshots.RestoreService;
|
||||||
|
|
||||||
|
@ -46,7 +45,7 @@ import org.elasticsearch.snapshots.RestoreService;
|
||||||
*/
|
*/
|
||||||
public class IndexShardSnapshotAndRestoreService extends AbstractIndexShardComponent {
|
public class IndexShardSnapshotAndRestoreService extends AbstractIndexShardComponent {
|
||||||
|
|
||||||
private final InternalIndexShard indexShard;
|
private final IndexShard indexShard;
|
||||||
|
|
||||||
private final RepositoriesService repositoriesService;
|
private final RepositoriesService repositoriesService;
|
||||||
|
|
||||||
|
@ -55,7 +54,7 @@ public class IndexShardSnapshotAndRestoreService extends AbstractIndexShardCompo
|
||||||
@Inject
|
@Inject
|
||||||
public IndexShardSnapshotAndRestoreService(ShardId shardId, @IndexSettings Settings indexSettings, IndexShard indexShard, RepositoriesService repositoriesService, RestoreService restoreService) {
|
public IndexShardSnapshotAndRestoreService(ShardId shardId, @IndexSettings Settings indexSettings, IndexShard indexShard, RepositoriesService repositoriesService, RestoreService restoreService) {
|
||||||
super(shardId, indexSettings);
|
super(shardId, indexSettings);
|
||||||
this.indexShard = (InternalIndexShard) indexShard;
|
this.indexShard = indexShard;
|
||||||
this.repositoriesService = repositoriesService;
|
this.repositoriesService = repositoriesService;
|
||||||
this.restoreService = restoreService;
|
this.restoreService = restoreService;
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||||
import org.elasticsearch.common.xcontent.*;
|
import org.elasticsearch.common.xcontent.*;
|
||||||
import org.elasticsearch.index.deletionpolicy.SnapshotIndexCommit;
|
import org.elasticsearch.index.deletionpolicy.SnapshotIndexCommit;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.snapshots.*;
|
import org.elasticsearch.index.snapshots.*;
|
||||||
import org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardSnapshot.FileInfo;
|
import org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardSnapshot.FileInfo;
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.store.DirectoryService;
|
import org.elasticsearch.index.store.DirectoryService;
|
||||||
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.store.DirectoryService;
|
import org.elasticsearch.index.store.DirectoryService;
|
||||||
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.store.DirectoryService;
|
import org.elasticsearch.index.store.DirectoryService;
|
||||||
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.store.DirectoryService;
|
import org.elasticsearch.index.store.DirectoryService;
|
||||||
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
import org.elasticsearch.index.store.support.AbstractIndexStore;
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.elasticsearch.common.unit.ByteSizeValue;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.AbstractIndexComponent;
|
import org.elasticsearch.index.AbstractIndexComponent;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.settings.IndexSettingsService;
|
import org.elasticsearch.index.settings.IndexSettingsService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
|
|
|
@ -42,11 +42,11 @@ import org.elasticsearch.index.get.GetResult;
|
||||||
import org.elasticsearch.index.mapper.*;
|
import org.elasticsearch.index.mapper.*;
|
||||||
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.search.dfs.AggregatedDfs;
|
import org.elasticsearch.search.dfs.AggregatedDfs;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.elasticsearch.common.unit.ByteSizeUnit;
|
||||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.common.util.concurrent.FutureUtils;
|
import org.elasticsearch.common.util.concurrent.FutureUtils;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
|
||||||
import org.elasticsearch.index.engine.FlushNotAllowedEngineException;
|
import org.elasticsearch.index.engine.FlushNotAllowedEngineException;
|
||||||
import org.elasticsearch.index.settings.IndexSettings;
|
import org.elasticsearch.index.settings.IndexSettings;
|
||||||
import org.elasticsearch.index.settings.IndexSettingsService;
|
import org.elasticsearch.index.settings.IndexSettingsService;
|
||||||
|
@ -34,7 +33,7 @@ import org.elasticsearch.index.shard.AbstractIndexShardComponent;
|
||||||
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
import java.util.concurrent.ScheduledFuture;
|
import java.util.concurrent.ScheduledFuture;
|
||||||
|
|
|
@ -22,10 +22,10 @@ package org.elasticsearch.indices;
|
||||||
import org.elasticsearch.cluster.routing.ShardRouting;
|
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||||
import org.elasticsearch.common.Nullable;
|
import org.elasticsearch.common.Nullable;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A global component allowing to register for lifecycle of an index (create/closed) and
|
* A global component allowing to register for lifecycle of an index (create/closed) and
|
||||||
|
@ -161,7 +161,7 @@ public interface IndicesLifecycle {
|
||||||
/**
|
/**
|
||||||
* Called before the index gets deleted.
|
* Called before the index gets deleted.
|
||||||
* This listener method is invoked after
|
* This listener method is invoked after
|
||||||
* {@link #beforeIndexClosed(org.elasticsearch.index.service.IndexService)} when an index is deleted
|
* {@link #beforeIndexClosed(org.elasticsearch.index.IndexService)} when an index is deleted
|
||||||
*
|
*
|
||||||
* @param indexService The index service
|
* @param indexService The index service
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -63,7 +63,7 @@ public class IndicesModule extends AbstractModule implements SpawnModules {
|
||||||
protected void configure() {
|
protected void configure() {
|
||||||
bind(IndicesLifecycle.class).to(InternalIndicesLifecycle.class).asEagerSingleton();
|
bind(IndicesLifecycle.class).to(InternalIndicesLifecycle.class).asEagerSingleton();
|
||||||
|
|
||||||
bind(IndicesService.class).to(InternalIndicesService.class).asEagerSingleton();
|
bind(IndicesService.class).asEagerSingleton();
|
||||||
|
|
||||||
bind(RecoverySettings.class).asEagerSingleton();
|
bind(RecoverySettings.class).asEagerSingleton();
|
||||||
bind(RecoveryTarget.class).asEagerSingleton();
|
bind(RecoveryTarget.class).asEagerSingleton();
|
||||||
|
|
|
@ -19,48 +19,260 @@
|
||||||
|
|
||||||
package org.elasticsearch.indices;
|
package org.elasticsearch.indices;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.base.Function;
|
||||||
|
import com.google.common.collect.*;
|
||||||
|
import org.apache.lucene.util.IOUtils;
|
||||||
import org.elasticsearch.ElasticsearchException;
|
import org.elasticsearch.ElasticsearchException;
|
||||||
|
import org.elasticsearch.ElasticsearchIllegalStateException;
|
||||||
|
import org.elasticsearch.action.admin.indices.stats.CommonStats;
|
||||||
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags;
|
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags;
|
||||||
|
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags.Flag;
|
||||||
|
import org.elasticsearch.action.admin.indices.stats.IndexShardStats;
|
||||||
|
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
||||||
import org.elasticsearch.common.Nullable;
|
import org.elasticsearch.common.Nullable;
|
||||||
import org.elasticsearch.common.component.LifecycleComponent;
|
import org.elasticsearch.common.component.AbstractLifecycleComponent;
|
||||||
|
import org.elasticsearch.common.inject.*;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.common.util.concurrent.EsExecutors;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
|
import org.elasticsearch.gateway.Gateway;
|
||||||
|
import org.elasticsearch.index.*;
|
||||||
|
import org.elasticsearch.index.aliases.IndexAliasesServiceModule;
|
||||||
|
import org.elasticsearch.index.analysis.AnalysisModule;
|
||||||
|
import org.elasticsearch.index.analysis.AnalysisService;
|
||||||
|
import org.elasticsearch.index.cache.IndexCache;
|
||||||
|
import org.elasticsearch.index.cache.IndexCacheModule;
|
||||||
|
import org.elasticsearch.index.codec.CodecModule;
|
||||||
|
import org.elasticsearch.index.engine.IndexEngine;
|
||||||
|
import org.elasticsearch.index.engine.IndexEngineModule;
|
||||||
|
import org.elasticsearch.index.fielddata.IndexFieldDataModule;
|
||||||
|
import org.elasticsearch.index.fielddata.IndexFieldDataService;
|
||||||
|
import org.elasticsearch.index.flush.FlushStats;
|
||||||
|
import org.elasticsearch.index.gateway.IndexGateway;
|
||||||
|
import org.elasticsearch.index.gateway.IndexGatewayModule;
|
||||||
|
import org.elasticsearch.index.get.GetStats;
|
||||||
|
import org.elasticsearch.index.indexing.IndexingStats;
|
||||||
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
|
import org.elasticsearch.index.mapper.MapperServiceModule;
|
||||||
|
import org.elasticsearch.index.merge.MergeStats;
|
||||||
|
import org.elasticsearch.index.query.IndexQueryParserModule;
|
||||||
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
|
import org.elasticsearch.index.refresh.RefreshStats;
|
||||||
|
import org.elasticsearch.index.search.stats.SearchStats;
|
||||||
|
import org.elasticsearch.index.IndexService;
|
||||||
|
import org.elasticsearch.index.settings.IndexSettingsModule;
|
||||||
|
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
|
import org.elasticsearch.index.similarity.SimilarityModule;
|
||||||
|
import org.elasticsearch.index.store.IndexStore;
|
||||||
|
import org.elasticsearch.index.store.IndexStoreModule;
|
||||||
|
import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
||||||
|
import org.elasticsearch.indices.recovery.RecoverySettings;
|
||||||
|
import org.elasticsearch.indices.store.IndicesStore;
|
||||||
|
import org.elasticsearch.plugins.IndexPluginsModule;
|
||||||
|
import org.elasticsearch.plugins.PluginsService;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.google.common.collect.Maps.newHashMap;
|
||||||
|
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS;
|
||||||
|
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS;
|
||||||
|
import static org.elasticsearch.common.collect.MapBuilder.newMapBuilder;
|
||||||
|
import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public interface IndicesService extends Iterable<IndexService>, LifecycleComponent<IndicesService> {
|
public class IndicesService extends AbstractLifecycleComponent<IndicesService> implements Iterable<IndexService> {
|
||||||
|
|
||||||
/**
|
private final InternalIndicesLifecycle indicesLifecycle;
|
||||||
* Returns <tt>true</tt> if changes (adding / removing) indices, shards and so on are allowed.
|
|
||||||
*/
|
private final IndicesAnalysisService indicesAnalysisService;
|
||||||
public boolean changesAllowed();
|
|
||||||
|
private IndicesStore indicesStore;
|
||||||
|
|
||||||
|
private final Injector injector;
|
||||||
|
|
||||||
|
private final PluginsService pluginsService;
|
||||||
|
|
||||||
|
private final NodeEnvironment nodeEnv;
|
||||||
|
|
||||||
|
private final Map<String, Injector> indicesInjectors = new HashMap<>();
|
||||||
|
|
||||||
|
private volatile ImmutableMap<String, IndexService> indices = ImmutableMap.of();
|
||||||
|
|
||||||
|
private final OldShardsStats oldShardsStats = new OldShardsStats();
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public IndicesService(Settings settings, IndicesLifecycle indicesLifecycle, IndicesAnalysisService indicesAnalysisService, Injector injector, NodeEnvironment nodeEnv) {
|
||||||
|
super(settings);
|
||||||
|
this.indicesLifecycle = (InternalIndicesLifecycle) indicesLifecycle;
|
||||||
|
this.indicesAnalysisService = indicesAnalysisService;
|
||||||
|
this.injector = injector;
|
||||||
|
|
||||||
|
this.pluginsService = injector.getInstance(PluginsService.class);
|
||||||
|
|
||||||
|
this.indicesLifecycle.addListener(oldShardsStats);
|
||||||
|
this.nodeEnv = nodeEnv;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
void setIndicesStore(IndicesStore store) {
|
||||||
|
this.indicesStore = store;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doStart() throws ElasticsearchException {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doStop() throws ElasticsearchException {
|
||||||
|
ImmutableSet<String> indices = ImmutableSet.copyOf(this.indices.keySet());
|
||||||
|
final CountDownLatch latch = new CountDownLatch(indices.size());
|
||||||
|
|
||||||
|
final ExecutorService indicesStopExecutor = Executors.newFixedThreadPool(5, EsExecutors.daemonThreadFactory("indices_shutdown"));
|
||||||
|
|
||||||
|
for (final String index : indices) {
|
||||||
|
indicesStopExecutor.execute(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
removeIndex(index, "shutdown", false, new IndexCloseListener() {
|
||||||
|
@Override
|
||||||
|
public void onAllShardsClosed(Index index, List<Throwable> failures) {
|
||||||
|
latch.countDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShardClosed(ShardId shardId) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShardCloseFailed(ShardId shardId, Throwable t) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Throwable e) {
|
||||||
|
latch.countDown();
|
||||||
|
logger.warn("failed to delete index on stop [" + index + "]", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if (latch.await(30, TimeUnit.SECONDS) == false) {
|
||||||
|
logger.warn("Not all shards are closed yet, waited 30sec - stopping service");
|
||||||
|
}
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// ignore
|
||||||
|
} finally {
|
||||||
|
indicesStopExecutor.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void doClose() throws ElasticsearchException {
|
||||||
|
injector.getInstance(RecoverySettings.class).close();
|
||||||
|
indicesStore.close();
|
||||||
|
indicesAnalysisService.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IndicesLifecycle indicesLifecycle() {
|
||||||
|
return this.indicesLifecycle;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the node stats indices stats. The <tt>includePrevious</tt> flag controls
|
* Returns the node stats indices stats. The <tt>includePrevious</tt> flag controls
|
||||||
* if old shards stats will be aggregated as well (only for relevant stats, such as
|
* if old shards stats will be aggregated as well (only for relevant stats, such as
|
||||||
* refresh and indexing, not for docs/store).
|
* refresh and indexing, not for docs/store).
|
||||||
*/
|
*/
|
||||||
NodeIndicesStats stats(boolean includePrevious);
|
public NodeIndicesStats stats(boolean includePrevious) {
|
||||||
|
return stats(true, new CommonStatsFlags().all());
|
||||||
|
}
|
||||||
|
|
||||||
NodeIndicesStats stats(boolean includePrevious, CommonStatsFlags flags);
|
public NodeIndicesStats stats(boolean includePrevious, CommonStatsFlags flags) {
|
||||||
|
CommonStats oldStats = new CommonStats(flags);
|
||||||
|
|
||||||
boolean hasIndex(String index);
|
if (includePrevious) {
|
||||||
|
Flag[] setFlags = flags.getFlags();
|
||||||
|
for (Flag flag : setFlags) {
|
||||||
|
switch (flag) {
|
||||||
|
case Get:
|
||||||
|
oldStats.get.add(oldShardsStats.getStats);
|
||||||
|
break;
|
||||||
|
case Indexing:
|
||||||
|
oldStats.indexing.add(oldShardsStats.indexingStats);
|
||||||
|
break;
|
||||||
|
case Search:
|
||||||
|
oldStats.search.add(oldShardsStats.searchStats);
|
||||||
|
break;
|
||||||
|
case Merge:
|
||||||
|
oldStats.merge.add(oldShardsStats.mergeStats);
|
||||||
|
break;
|
||||||
|
case Refresh:
|
||||||
|
oldStats.refresh.add(oldShardsStats.refreshStats);
|
||||||
|
break;
|
||||||
|
case Flush:
|
||||||
|
oldStats.flush.add(oldShardsStats.flushStats);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IndicesLifecycle indicesLifecycle();
|
Map<Index, List<IndexShardStats>> statsByShard = Maps.newHashMap();
|
||||||
|
for (IndexService indexService : indices.values()) {
|
||||||
|
for (IndexShard indexShard : indexService) {
|
||||||
|
try {
|
||||||
|
if (indexShard.routingEntry() == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
IndexShardStats indexShardStats = new IndexShardStats(indexShard.shardId(), new ShardStats[] { new ShardStats(indexShard, indexShard.routingEntry(), flags) });
|
||||||
|
if (!statsByShard.containsKey(indexService.index())) {
|
||||||
|
statsByShard.put(indexService.index(), Lists.<IndexShardStats>newArrayList(indexShardStats));
|
||||||
|
} else {
|
||||||
|
statsByShard.get(indexService.index()).add(indexShardStats);
|
||||||
|
}
|
||||||
|
} catch (IllegalIndexShardStateException e) {
|
||||||
|
// we can safely ignore illegal state on ones that are closing for example
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new NodeIndicesStats(oldStats, statsByShard);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns <tt>true</tt> if changes (adding / removing) indices, shards and so on are allowed.
|
||||||
|
*/
|
||||||
|
public boolean changesAllowed() {
|
||||||
|
// we check on stop here since we defined stop when we delete the indices
|
||||||
|
return lifecycle.started();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public UnmodifiableIterator<IndexService> iterator() {
|
||||||
|
return indices.values().iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasIndex(String index) {
|
||||||
|
return indices.containsKey(index);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a snapshot of the started indices and the associated {@link IndexService} instances.
|
* Returns a snapshot of the started indices and the associated {@link IndexService} instances.
|
||||||
*
|
*
|
||||||
* The map being returned is not a live view and subsequent calls can return a different view.
|
* The map being returned is not a live view and subsequent calls can return a different view.
|
||||||
*/
|
*/
|
||||||
ImmutableMap<String, IndexService> indices();
|
public ImmutableMap<String, IndexService> indices() {
|
||||||
|
return indices;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an IndexService for the specified index if exists otherwise returns <code>null</code>.
|
* Returns an IndexService for the specified index if exists otherwise returns <code>null</code>.
|
||||||
|
@ -69,14 +281,77 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
||||||
* index maybe removed in the meantime, so preferable use the associated {@link IndexService} in order to prevent NPE.
|
* index maybe removed in the meantime, so preferable use the associated {@link IndexService} in order to prevent NPE.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
IndexService indexService(String index);
|
public IndexService indexService(String index) {
|
||||||
|
return indices.get(index);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an IndexService for the specified index if exists otherwise a {@link IndexMissingException} is thrown.
|
* Returns an IndexService for the specified index if exists otherwise a {@link IndexMissingException} is thrown.
|
||||||
*/
|
*/
|
||||||
IndexService indexServiceSafe(String index) throws IndexMissingException;
|
public IndexService indexServiceSafe(String index) throws IndexMissingException {
|
||||||
|
IndexService indexService = indexService(index);
|
||||||
|
if (indexService == null) {
|
||||||
|
throw new IndexMissingException(new Index(index));
|
||||||
|
}
|
||||||
|
return indexService;
|
||||||
|
}
|
||||||
|
|
||||||
IndexService createIndex(String index, Settings settings, String localNodeId) throws ElasticsearchException;
|
public synchronized IndexService createIndex(String sIndexName, Settings settings, String localNodeId) throws ElasticsearchException {
|
||||||
|
if (!lifecycle.started()) {
|
||||||
|
throw new ElasticsearchIllegalStateException("Can't create an index [" + sIndexName + "], node is closed");
|
||||||
|
}
|
||||||
|
Index index = new Index(sIndexName);
|
||||||
|
if (indicesInjectors.containsKey(index.name())) {
|
||||||
|
throw new IndexAlreadyExistsException(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
indicesLifecycle.beforeIndexCreated(index);
|
||||||
|
|
||||||
|
logger.debug("creating Index [{}], shards [{}]/[{}]", sIndexName, settings.get(SETTING_NUMBER_OF_SHARDS), settings.get(SETTING_NUMBER_OF_REPLICAS));
|
||||||
|
|
||||||
|
Settings indexSettings = settingsBuilder()
|
||||||
|
.put(this.settings)
|
||||||
|
.put(settings)
|
||||||
|
.classLoader(settings.getClassLoader())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ModulesBuilder modules = new ModulesBuilder();
|
||||||
|
modules.add(new IndexNameModule(index));
|
||||||
|
modules.add(new LocalNodeIdModule(localNodeId));
|
||||||
|
modules.add(new IndexSettingsModule(index, indexSettings));
|
||||||
|
modules.add(new IndexPluginsModule(indexSettings, pluginsService));
|
||||||
|
modules.add(new IndexStoreModule(indexSettings));
|
||||||
|
modules.add(new IndexEngineModule(indexSettings));
|
||||||
|
modules.add(new AnalysisModule(indexSettings, indicesAnalysisService));
|
||||||
|
modules.add(new SimilarityModule(indexSettings));
|
||||||
|
modules.add(new IndexCacheModule(indexSettings));
|
||||||
|
modules.add(new IndexFieldDataModule(indexSettings));
|
||||||
|
modules.add(new CodecModule(indexSettings));
|
||||||
|
modules.add(new MapperServiceModule());
|
||||||
|
modules.add(new IndexQueryParserModule(indexSettings));
|
||||||
|
modules.add(new IndexAliasesServiceModule());
|
||||||
|
modules.add(new IndexGatewayModule(indexSettings, injector.getInstance(Gateway.class)));
|
||||||
|
modules.add(new IndexModule(indexSettings));
|
||||||
|
|
||||||
|
Injector indexInjector;
|
||||||
|
try {
|
||||||
|
indexInjector = modules.createChildInjector(injector);
|
||||||
|
} catch (CreationException e) {
|
||||||
|
throw new IndexCreationException(index, Injectors.getFirstErrorFailure(e));
|
||||||
|
} catch (Throwable e) {
|
||||||
|
throw new IndexCreationException(index, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
indicesInjectors.put(index.name(), indexInjector);
|
||||||
|
|
||||||
|
IndexService indexService = indexInjector.getInstance(IndexService.class);
|
||||||
|
|
||||||
|
indicesLifecycle.afterIndexCreated(indexService);
|
||||||
|
|
||||||
|
indices = newMapBuilder(indices).put(index.name(), indexService).immutableMap();
|
||||||
|
|
||||||
|
return indexService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the given index from this service and releases all associated resources. Persistent parts of the index
|
* Removes the given index from this service and releases all associated resources. Persistent parts of the index
|
||||||
|
@ -84,7 +359,9 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
||||||
* @param index the index to remove
|
* @param index the index to remove
|
||||||
* @param reason the high level reason causing this removal
|
* @param reason the high level reason causing this removal
|
||||||
*/
|
*/
|
||||||
void removeIndex(String index, String reason) throws ElasticsearchException;
|
public void removeIndex(String index, String reason) throws ElasticsearchException {
|
||||||
|
removeIndex(index, reason, false, null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes the given index. Persistent parts of the index
|
* Deletes the given index. Persistent parts of the index
|
||||||
|
@ -95,7 +372,122 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
||||||
* @param index the index to delete
|
* @param index the index to delete
|
||||||
* @param reason the high level reason causing this delete
|
* @param reason the high level reason causing this delete
|
||||||
*/
|
*/
|
||||||
void deleteIndex(String index, String reason) throws ElasticsearchException;
|
public void deleteIndex(String index, String reason) throws ElasticsearchException {
|
||||||
|
removeIndex(index, reason, true, new IndexCloseListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAllShardsClosed(Index index, List<Throwable> failures) {
|
||||||
|
try {
|
||||||
|
nodeEnv.deleteIndexDirectorySafe(index);
|
||||||
|
logger.debug("deleted index [{}] from filesystem - failures {}", index, failures);
|
||||||
|
} catch (Exception e) {
|
||||||
|
for (Throwable t : failures) {
|
||||||
|
e.addSuppressed(t);
|
||||||
|
}
|
||||||
|
logger.debug("failed to deleted index [{}] from filesystem", e, index);
|
||||||
|
// ignore - still some shards locked here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShardClosed(ShardId shardId) {
|
||||||
|
try {
|
||||||
|
// this is called under the shard lock - we can safely delete it
|
||||||
|
IOUtils.rm(nodeEnv.shardPaths(shardId));
|
||||||
|
logger.debug("deleted shard [{}] from filesystem", shardId);
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.warn("Can't delete shard {} ", e, shardId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShardCloseFailed(ShardId shardId, Throwable t) {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeIndex(String index, String reason, boolean delete, @Nullable IndexCloseListener listener) throws ElasticsearchException {
|
||||||
|
try {
|
||||||
|
final IndexService indexService;
|
||||||
|
final Injector indexInjector;
|
||||||
|
synchronized (this) {
|
||||||
|
indexInjector = indicesInjectors.remove(index);
|
||||||
|
if (indexInjector == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.debug("[{}] closing ... (reason [{}])", index, reason);
|
||||||
|
Map<String, IndexService> tmpMap = newHashMap(indices);
|
||||||
|
indexService = tmpMap.remove(index);
|
||||||
|
indices = ImmutableMap.copyOf(tmpMap);
|
||||||
|
}
|
||||||
|
|
||||||
|
indicesLifecycle.beforeIndexClosed(indexService);
|
||||||
|
if (delete) {
|
||||||
|
indicesLifecycle.beforeIndexDeleted(indexService);
|
||||||
|
}
|
||||||
|
IOUtils.close(Iterables.transform(pluginsService.indexServices(), new Function<Class<? extends Closeable>, Closeable>() {
|
||||||
|
@Override
|
||||||
|
public Closeable apply(Class<? extends Closeable> input) {
|
||||||
|
return indexInjector.getInstance(input);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
|
||||||
|
logger.debug("[{}] closing index service (reason [{}])", index, reason);
|
||||||
|
((IndexService) indexService).close(reason, listener);
|
||||||
|
|
||||||
|
logger.debug("[{}] closing index cache (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexCache.class).close();
|
||||||
|
logger.debug("[{}] clearing index field data (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexFieldDataService.class).clear();
|
||||||
|
logger.debug("[{}] closing analysis service (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(AnalysisService.class).close();
|
||||||
|
logger.debug("[{}] closing index engine (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexEngine.class).close();
|
||||||
|
|
||||||
|
logger.debug("[{}] closing index gateway (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexGateway.class).close();
|
||||||
|
logger.debug("[{}] closing mapper service (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(MapperService.class).close();
|
||||||
|
logger.debug("[{}] closing index query parser service (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexQueryParserService.class).close();
|
||||||
|
|
||||||
|
logger.debug("[{}] closing index service (reason [{}])", index, reason);
|
||||||
|
indexInjector.getInstance(IndexStore.class).close();
|
||||||
|
|
||||||
|
Injectors.close(injector);
|
||||||
|
|
||||||
|
logger.debug("[{}] closed... (reason [{}])", index, reason);
|
||||||
|
indicesLifecycle.afterIndexClosed(indexService.index());
|
||||||
|
if (delete) {
|
||||||
|
indicesLifecycle.afterIndexDeleted(indexService.index());
|
||||||
|
}
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new ElasticsearchException("failed to remove index " + index, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class OldShardsStats extends IndicesLifecycle.Listener {
|
||||||
|
|
||||||
|
final SearchStats searchStats = new SearchStats();
|
||||||
|
final GetStats getStats = new GetStats();
|
||||||
|
final IndexingStats indexingStats = new IndexingStats();
|
||||||
|
final MergeStats mergeStats = new MergeStats();
|
||||||
|
final RefreshStats refreshStats = new RefreshStats();
|
||||||
|
final FlushStats flushStats = new FlushStats();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public synchronized void beforeIndexShardClosed(ShardId shardId, @Nullable IndexShard indexShard) {
|
||||||
|
if (indexShard != null) {
|
||||||
|
getStats.add(indexShard.getStats());
|
||||||
|
indexingStats.add(indexShard.indexingStats(), false);
|
||||||
|
searchStats.add(indexShard.searchStats(), false);
|
||||||
|
mergeStats.add(indexShard.mergeStats());
|
||||||
|
refreshStats.add(indexShard.refreshStats());
|
||||||
|
flushStats.add(indexShard.flushStats());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A listener interface that can be used to get notification once a shard or all shards
|
* A listener interface that can be used to get notification once a shard or all shards
|
||||||
|
@ -125,4 +517,4 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
||||||
public void onShardCloseFailed(ShardId shardId, Throwable t);
|
public void onShardCloseFailed(ShardId shardId, Throwable t);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -25,10 +25,10 @@ import org.elasticsearch.common.component.AbstractComponent;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.Index;
|
import org.elasticsearch.index.Index;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
|
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
|
|
@ -1,459 +0,0 @@
|
||||||
/*
|
|
||||||
* Licensed to Elasticsearch under one or more contributor
|
|
||||||
* license agreements. See the NOTICE file distributed with
|
|
||||||
* this work for additional information regarding copyright
|
|
||||||
* ownership. Elasticsearch licenses this file to you under
|
|
||||||
* the Apache License, Version 2.0 (the "License"); you may
|
|
||||||
* not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing,
|
|
||||||
* software distributed under the License is distributed on an
|
|
||||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
||||||
* KIND, either express or implied. See the License for the
|
|
||||||
* specific language governing permissions and limitations
|
|
||||||
* under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.elasticsearch.indices;
|
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
|
||||||
import com.google.common.collect.*;
|
|
||||||
import org.apache.lucene.util.IOUtils;
|
|
||||||
import org.elasticsearch.ElasticsearchException;
|
|
||||||
import org.elasticsearch.ElasticsearchIllegalStateException;
|
|
||||||
import org.elasticsearch.action.admin.indices.stats.CommonStats;
|
|
||||||
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags;
|
|
||||||
import org.elasticsearch.action.admin.indices.stats.CommonStatsFlags.Flag;
|
|
||||||
import org.elasticsearch.action.admin.indices.stats.IndexShardStats;
|
|
||||||
import org.elasticsearch.action.admin.indices.stats.ShardStats;
|
|
||||||
import org.elasticsearch.common.Nullable;
|
|
||||||
import org.elasticsearch.common.component.AbstractLifecycleComponent;
|
|
||||||
import org.elasticsearch.common.inject.*;
|
|
||||||
import org.elasticsearch.common.settings.Settings;
|
|
||||||
import org.elasticsearch.common.util.concurrent.EsExecutors;
|
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
|
||||||
import org.elasticsearch.gateway.Gateway;
|
|
||||||
import org.elasticsearch.index.*;
|
|
||||||
import org.elasticsearch.index.aliases.IndexAliasesServiceModule;
|
|
||||||
import org.elasticsearch.index.analysis.AnalysisModule;
|
|
||||||
import org.elasticsearch.index.analysis.AnalysisService;
|
|
||||||
import org.elasticsearch.index.cache.IndexCache;
|
|
||||||
import org.elasticsearch.index.cache.IndexCacheModule;
|
|
||||||
import org.elasticsearch.index.codec.CodecModule;
|
|
||||||
import org.elasticsearch.index.engine.IndexEngine;
|
|
||||||
import org.elasticsearch.index.engine.IndexEngineModule;
|
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldDataModule;
|
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldDataService;
|
|
||||||
import org.elasticsearch.index.flush.FlushStats;
|
|
||||||
import org.elasticsearch.index.gateway.IndexGateway;
|
|
||||||
import org.elasticsearch.index.gateway.IndexGatewayModule;
|
|
||||||
import org.elasticsearch.index.get.GetStats;
|
|
||||||
import org.elasticsearch.index.indexing.IndexingStats;
|
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
|
||||||
import org.elasticsearch.index.mapper.MapperServiceModule;
|
|
||||||
import org.elasticsearch.index.merge.MergeStats;
|
|
||||||
import org.elasticsearch.index.query.IndexQueryParserModule;
|
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
|
||||||
import org.elasticsearch.index.refresh.RefreshStats;
|
|
||||||
import org.elasticsearch.index.search.stats.SearchStats;
|
|
||||||
import org.elasticsearch.index.service.IndexService;
|
|
||||||
import org.elasticsearch.index.service.InternalIndexService;
|
|
||||||
import org.elasticsearch.index.settings.IndexSettingsModule;
|
|
||||||
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.index.similarity.SimilarityModule;
|
|
||||||
import org.elasticsearch.index.store.IndexStore;
|
|
||||||
import org.elasticsearch.index.store.IndexStoreModule;
|
|
||||||
import org.elasticsearch.indices.analysis.IndicesAnalysisService;
|
|
||||||
import org.elasticsearch.indices.recovery.RecoverySettings;
|
|
||||||
import org.elasticsearch.indices.store.IndicesStore;
|
|
||||||
import org.elasticsearch.plugins.IndexPluginsModule;
|
|
||||||
import org.elasticsearch.plugins.PluginsService;
|
|
||||||
|
|
||||||
import java.io.Closeable;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.CountDownLatch;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
import static com.google.common.collect.Maps.newHashMap;
|
|
||||||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS;
|
|
||||||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS;
|
|
||||||
import static org.elasticsearch.common.collect.MapBuilder.newMapBuilder;
|
|
||||||
import static org.elasticsearch.common.settings.ImmutableSettings.settingsBuilder;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class InternalIndicesService extends AbstractLifecycleComponent<IndicesService> implements IndicesService {
|
|
||||||
|
|
||||||
private final InternalIndicesLifecycle indicesLifecycle;
|
|
||||||
|
|
||||||
private final IndicesAnalysisService indicesAnalysisService;
|
|
||||||
|
|
||||||
private final IndicesStore indicesStore;
|
|
||||||
|
|
||||||
private final Injector injector;
|
|
||||||
|
|
||||||
private final PluginsService pluginsService;
|
|
||||||
|
|
||||||
private final NodeEnvironment nodeEnv;
|
|
||||||
|
|
||||||
private final Map<String, Injector> indicesInjectors = new HashMap<>();
|
|
||||||
|
|
||||||
private volatile ImmutableMap<String, IndexService> indices = ImmutableMap.of();
|
|
||||||
|
|
||||||
private final OldShardsStats oldShardsStats = new OldShardsStats();
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public InternalIndicesService(Settings settings, IndicesLifecycle indicesLifecycle, IndicesAnalysisService indicesAnalysisService, IndicesStore indicesStore, Injector injector, NodeEnvironment nodeEnv) {
|
|
||||||
super(settings);
|
|
||||||
this.indicesLifecycle = (InternalIndicesLifecycle) indicesLifecycle;
|
|
||||||
this.indicesAnalysisService = indicesAnalysisService;
|
|
||||||
this.indicesStore = indicesStore;
|
|
||||||
this.injector = injector;
|
|
||||||
|
|
||||||
this.pluginsService = injector.getInstance(PluginsService.class);
|
|
||||||
|
|
||||||
this.indicesLifecycle.addListener(oldShardsStats);
|
|
||||||
this.nodeEnv = nodeEnv;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void doStart() throws ElasticsearchException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void doStop() throws ElasticsearchException {
|
|
||||||
ImmutableSet<String> indices = ImmutableSet.copyOf(this.indices.keySet());
|
|
||||||
final CountDownLatch latch = new CountDownLatch(indices.size());
|
|
||||||
|
|
||||||
final ExecutorService indicesStopExecutor = Executors.newFixedThreadPool(5, EsExecutors.daemonThreadFactory("indices_shutdown"));
|
|
||||||
|
|
||||||
for (final String index : indices) {
|
|
||||||
indicesStopExecutor.execute(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
removeIndex(index, "shutdown", false, new IndexCloseListener() {
|
|
||||||
@Override
|
|
||||||
public void onAllShardsClosed(Index index, List<Throwable> failures) {
|
|
||||||
latch.countDown();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onShardClosed(ShardId shardId) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onShardCloseFailed(ShardId shardId, Throwable t) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Throwable e) {
|
|
||||||
latch.countDown();
|
|
||||||
logger.warn("failed to delete index on stop [" + index + "]", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
if (latch.await(30, TimeUnit.SECONDS) == false) {
|
|
||||||
logger.warn("Not all shards are closed yet, waited 30sec - stopping service");
|
|
||||||
}
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
// ignore
|
|
||||||
} finally {
|
|
||||||
indicesStopExecutor.shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void doClose() throws ElasticsearchException {
|
|
||||||
injector.getInstance(RecoverySettings.class).close();
|
|
||||||
indicesStore.close();
|
|
||||||
indicesAnalysisService.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndicesLifecycle indicesLifecycle() {
|
|
||||||
return this.indicesLifecycle;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NodeIndicesStats stats(boolean includePrevious) {
|
|
||||||
return stats(true, new CommonStatsFlags().all());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NodeIndicesStats stats(boolean includePrevious, CommonStatsFlags flags) {
|
|
||||||
CommonStats oldStats = new CommonStats(flags);
|
|
||||||
|
|
||||||
if (includePrevious) {
|
|
||||||
Flag[] setFlags = flags.getFlags();
|
|
||||||
for (Flag flag : setFlags) {
|
|
||||||
switch (flag) {
|
|
||||||
case Get:
|
|
||||||
oldStats.get.add(oldShardsStats.getStats);
|
|
||||||
break;
|
|
||||||
case Indexing:
|
|
||||||
oldStats.indexing.add(oldShardsStats.indexingStats);
|
|
||||||
break;
|
|
||||||
case Search:
|
|
||||||
oldStats.search.add(oldShardsStats.searchStats);
|
|
||||||
break;
|
|
||||||
case Merge:
|
|
||||||
oldStats.merge.add(oldShardsStats.mergeStats);
|
|
||||||
break;
|
|
||||||
case Refresh:
|
|
||||||
oldStats.refresh.add(oldShardsStats.refreshStats);
|
|
||||||
break;
|
|
||||||
case Flush:
|
|
||||||
oldStats.flush.add(oldShardsStats.flushStats);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<Index, List<IndexShardStats>> statsByShard = Maps.newHashMap();
|
|
||||||
for (IndexService indexService : indices.values()) {
|
|
||||||
for (IndexShard indexShard : indexService) {
|
|
||||||
try {
|
|
||||||
if (indexShard.routingEntry() == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
IndexShardStats indexShardStats = new IndexShardStats(indexShard.shardId(), new ShardStats[] { new ShardStats(indexShard, indexShard.routingEntry(), flags) });
|
|
||||||
if (!statsByShard.containsKey(indexService.index())) {
|
|
||||||
statsByShard.put(indexService.index(), Lists.<IndexShardStats>newArrayList(indexShardStats));
|
|
||||||
} else {
|
|
||||||
statsByShard.get(indexService.index()).add(indexShardStats);
|
|
||||||
}
|
|
||||||
} catch (IllegalIndexShardStateException e) {
|
|
||||||
// we can safely ignore illegal state on ones that are closing for example
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new NodeIndicesStats(oldStats, statsByShard);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns <tt>true</tt> if changes (adding / removing) indices, shards and so on are allowed.
|
|
||||||
*/
|
|
||||||
public boolean changesAllowed() {
|
|
||||||
// we check on stop here since we defined stop when we delete the indices
|
|
||||||
return lifecycle.started();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public UnmodifiableIterator<IndexService> iterator() {
|
|
||||||
return indices.values().iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasIndex(String index) {
|
|
||||||
return indices.containsKey(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ImmutableMap<String, IndexService> indices() {
|
|
||||||
return indices;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IndexService indexService(String index) {
|
|
||||||
return indices.get(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IndexService indexServiceSafe(String index) throws IndexMissingException {
|
|
||||||
IndexService indexService = indexService(index);
|
|
||||||
if (indexService == null) {
|
|
||||||
throw new IndexMissingException(new Index(index));
|
|
||||||
}
|
|
||||||
return indexService;
|
|
||||||
}
|
|
||||||
|
|
||||||
public synchronized IndexService createIndex(String sIndexName, Settings settings, String localNodeId) throws ElasticsearchException {
|
|
||||||
if (!lifecycle.started()) {
|
|
||||||
throw new ElasticsearchIllegalStateException("Can't create an index [" + sIndexName + "], node is closed");
|
|
||||||
}
|
|
||||||
Index index = new Index(sIndexName);
|
|
||||||
if (indicesInjectors.containsKey(index.name())) {
|
|
||||||
throw new IndexAlreadyExistsException(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
indicesLifecycle.beforeIndexCreated(index);
|
|
||||||
|
|
||||||
logger.debug("creating Index [{}], shards [{}]/[{}]", sIndexName, settings.get(SETTING_NUMBER_OF_SHARDS), settings.get(SETTING_NUMBER_OF_REPLICAS));
|
|
||||||
|
|
||||||
Settings indexSettings = settingsBuilder()
|
|
||||||
.put(this.settings)
|
|
||||||
.put(settings)
|
|
||||||
.classLoader(settings.getClassLoader())
|
|
||||||
.build();
|
|
||||||
|
|
||||||
ModulesBuilder modules = new ModulesBuilder();
|
|
||||||
modules.add(new IndexNameModule(index));
|
|
||||||
modules.add(new LocalNodeIdModule(localNodeId));
|
|
||||||
modules.add(new IndexSettingsModule(index, indexSettings));
|
|
||||||
modules.add(new IndexPluginsModule(indexSettings, pluginsService));
|
|
||||||
modules.add(new IndexStoreModule(indexSettings));
|
|
||||||
modules.add(new IndexEngineModule(indexSettings));
|
|
||||||
modules.add(new AnalysisModule(indexSettings, indicesAnalysisService));
|
|
||||||
modules.add(new SimilarityModule(indexSettings));
|
|
||||||
modules.add(new IndexCacheModule(indexSettings));
|
|
||||||
modules.add(new IndexFieldDataModule(indexSettings));
|
|
||||||
modules.add(new CodecModule(indexSettings));
|
|
||||||
modules.add(new MapperServiceModule());
|
|
||||||
modules.add(new IndexQueryParserModule(indexSettings));
|
|
||||||
modules.add(new IndexAliasesServiceModule());
|
|
||||||
modules.add(new IndexGatewayModule(indexSettings, injector.getInstance(Gateway.class)));
|
|
||||||
modules.add(new IndexModule(indexSettings));
|
|
||||||
|
|
||||||
Injector indexInjector;
|
|
||||||
try {
|
|
||||||
indexInjector = modules.createChildInjector(injector);
|
|
||||||
} catch (CreationException e) {
|
|
||||||
throw new IndexCreationException(index, Injectors.getFirstErrorFailure(e));
|
|
||||||
} catch (Throwable e) {
|
|
||||||
throw new IndexCreationException(index, e);
|
|
||||||
}
|
|
||||||
|
|
||||||
indicesInjectors.put(index.name(), indexInjector);
|
|
||||||
|
|
||||||
IndexService indexService = indexInjector.getInstance(IndexService.class);
|
|
||||||
|
|
||||||
indicesLifecycle.afterIndexCreated(indexService);
|
|
||||||
|
|
||||||
indices = newMapBuilder(indices).put(index.name(), indexService).immutableMap();
|
|
||||||
|
|
||||||
return indexService;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removeIndex(String index, String reason) throws ElasticsearchException {
|
|
||||||
removeIndex(index, reason, false, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteIndex(String index, String reason) throws ElasticsearchException {
|
|
||||||
removeIndex(index, reason, true, new IndicesService.IndexCloseListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onAllShardsClosed(Index index, List<Throwable> failures) {
|
|
||||||
try {
|
|
||||||
nodeEnv.deleteIndexDirectorySafe(index);
|
|
||||||
logger.debug("deleted index [{}] from filesystem - failures {}", index, failures);
|
|
||||||
} catch (Exception e) {
|
|
||||||
for (Throwable t : failures) {
|
|
||||||
e.addSuppressed(t);
|
|
||||||
}
|
|
||||||
logger.debug("failed to deleted index [{}] from filesystem", e, index);
|
|
||||||
// ignore - still some shards locked here
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onShardClosed(ShardId shardId) {
|
|
||||||
try {
|
|
||||||
// this is called under the shard lock - we can safely delete it
|
|
||||||
IOUtils.rm(nodeEnv.shardPaths(shardId));
|
|
||||||
logger.debug("deleted shard [{}] from filesystem", shardId);
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.warn("Can't delete shard {} ", e, shardId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onShardCloseFailed(ShardId shardId, Throwable t) {
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void removeIndex(String index, String reason, boolean delete, @Nullable IndexCloseListener listener) throws ElasticsearchException {
|
|
||||||
try {
|
|
||||||
final IndexService indexService;
|
|
||||||
final Injector indexInjector;
|
|
||||||
synchronized (this) {
|
|
||||||
indexInjector = indicesInjectors.remove(index);
|
|
||||||
if (indexInjector == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.debug("[{}] closing ... (reason [{}])", index, reason);
|
|
||||||
Map<String, IndexService> tmpMap = newHashMap(indices);
|
|
||||||
indexService = tmpMap.remove(index);
|
|
||||||
indices = ImmutableMap.copyOf(tmpMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
indicesLifecycle.beforeIndexClosed(indexService);
|
|
||||||
if (delete) {
|
|
||||||
indicesLifecycle.beforeIndexDeleted(indexService);
|
|
||||||
}
|
|
||||||
IOUtils.close(Iterables.transform(pluginsService.indexServices(), new Function<Class<? extends Closeable>, Closeable>() {
|
|
||||||
@Override
|
|
||||||
public Closeable apply(Class<? extends Closeable> input) {
|
|
||||||
return indexInjector.getInstance(input);
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
|
|
||||||
logger.debug("[{}] closing index service (reason [{}])", index, reason);
|
|
||||||
((InternalIndexService) indexService).close(reason, listener);
|
|
||||||
|
|
||||||
logger.debug("[{}] closing index cache (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexCache.class).close();
|
|
||||||
logger.debug("[{}] clearing index field data (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexFieldDataService.class).clear();
|
|
||||||
logger.debug("[{}] closing analysis service (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(AnalysisService.class).close();
|
|
||||||
logger.debug("[{}] closing index engine (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexEngine.class).close();
|
|
||||||
|
|
||||||
logger.debug("[{}] closing index gateway (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexGateway.class).close();
|
|
||||||
logger.debug("[{}] closing mapper service (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(MapperService.class).close();
|
|
||||||
logger.debug("[{}] closing index query parser service (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexQueryParserService.class).close();
|
|
||||||
|
|
||||||
logger.debug("[{}] closing index service (reason [{}])", index, reason);
|
|
||||||
indexInjector.getInstance(IndexStore.class).close();
|
|
||||||
|
|
||||||
Injectors.close(injector);
|
|
||||||
|
|
||||||
logger.debug("[{}] closed... (reason [{}])", index, reason);
|
|
||||||
indicesLifecycle.afterIndexClosed(indexService.index());
|
|
||||||
if (delete) {
|
|
||||||
indicesLifecycle.afterIndexDeleted(indexService.index());
|
|
||||||
}
|
|
||||||
} catch (IOException ex) {
|
|
||||||
throw new ElasticsearchException("failed to remove index " + index, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static class OldShardsStats extends IndicesLifecycle.Listener {
|
|
||||||
|
|
||||||
final SearchStats searchStats = new SearchStats();
|
|
||||||
final GetStats getStats = new GetStats();
|
|
||||||
final IndexingStats indexingStats = new IndexingStats();
|
|
||||||
final MergeStats mergeStats = new MergeStats();
|
|
||||||
final RefreshStats refreshStats = new RefreshStats();
|
|
||||||
final FlushStats flushStats = new FlushStats();
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public synchronized void beforeIndexShardClosed(ShardId shardId, @Nullable IndexShard indexShard) {
|
|
||||||
if (indexShard != null) {
|
|
||||||
getStats.add(indexShard.getStats());
|
|
||||||
indexingStats.add(indexShard.indexingStats(), false);
|
|
||||||
searchStats.add(indexShard.searchStats(), false);
|
|
||||||
mergeStats.add(indexShard.mergeStats());
|
|
||||||
refreshStats.add(indexShard.refreshStats());
|
|
||||||
flushStats.add(indexShard.flushStats());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -45,8 +45,6 @@ import org.elasticsearch.index.percolator.stats.PercolateStats;
|
||||||
import org.elasticsearch.index.refresh.RefreshStats;
|
import org.elasticsearch.index.refresh.RefreshStats;
|
||||||
import org.elasticsearch.index.search.stats.SearchStats;
|
import org.elasticsearch.index.search.stats.SearchStats;
|
||||||
import org.elasticsearch.index.shard.DocsStats;
|
import org.elasticsearch.index.shard.DocsStats;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
|
||||||
import org.elasticsearch.index.store.StoreStats;
|
import org.elasticsearch.index.store.StoreStats;
|
||||||
import org.elasticsearch.index.suggest.stats.SuggestStats;
|
import org.elasticsearch.index.suggest.stats.SuggestStats;
|
||||||
import org.elasticsearch.search.suggest.completion.CompletionStats;
|
import org.elasticsearch.search.suggest.completion.CompletionStats;
|
||||||
|
|
|
@ -44,7 +44,7 @@ import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||||
import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException;
|
import org.elasticsearch.common.util.concurrent.EsRejectedExecutionException;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.search.SearchShardTarget;
|
import org.elasticsearch.search.SearchShardTarget;
|
||||||
import org.elasticsearch.search.internal.SearchContext;
|
import org.elasticsearch.search.internal.SearchContext;
|
||||||
import org.elasticsearch.search.internal.ShardSearchRequest;
|
import org.elasticsearch.search.internal.ShardSearchRequest;
|
||||||
|
|
|
@ -47,7 +47,6 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.Index;
|
|
||||||
import org.elasticsearch.index.IndexShardAlreadyExistsException;
|
import org.elasticsearch.index.IndexShardAlreadyExistsException;
|
||||||
import org.elasticsearch.index.IndexShardMissingException;
|
import org.elasticsearch.index.IndexShardMissingException;
|
||||||
import org.elasticsearch.index.aliases.IndexAlias;
|
import org.elasticsearch.index.aliases.IndexAlias;
|
||||||
|
@ -57,19 +56,17 @@ import org.elasticsearch.index.gateway.IndexShardGatewayRecoveryException;
|
||||||
import org.elasticsearch.index.gateway.IndexShardGatewayService;
|
import org.elasticsearch.index.gateway.IndexShardGatewayService;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.settings.IndexSettingsService;
|
import org.elasticsearch.index.settings.IndexSettingsService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryFailedException;
|
import org.elasticsearch.indices.recovery.RecoveryFailedException;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||||
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
@ -552,7 +549,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shard(shardId);
|
IndexShard indexShard = indexService.shard(shardId);
|
||||||
if (indexShard != null) {
|
if (indexShard != null) {
|
||||||
ShardRouting currentRoutingEntry = indexShard.routingEntry();
|
ShardRouting currentRoutingEntry = indexShard.routingEntry();
|
||||||
// if the current and global routing are initializing, but are still not the same, its a different "shard" being allocated
|
// if the current and global routing are initializing, but are still not the same, its a different "shard" being allocated
|
||||||
|
@ -685,7 +682,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
||||||
if (logger.isDebugEnabled()) {
|
if (logger.isDebugEnabled()) {
|
||||||
logger.debug("[{}][{}] creating shard", shardRouting.index(), shardId);
|
logger.debug("[{}][{}] creating shard", shardRouting.index(), shardId);
|
||||||
}
|
}
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.createShard(shardId);
|
IndexShard indexShard = indexService.createShard(shardId);
|
||||||
indexShard.routingEntry(shardRouting);
|
indexShard.routingEntry(shardRouting);
|
||||||
indexShard.engine().addFailedEngineListener(failedEngineHandler);
|
indexShard.engine().addFailedEngineListener(failedEngineHandler);
|
||||||
} catch (IndexShardAlreadyExistsException e) {
|
} catch (IndexShardAlreadyExistsException e) {
|
||||||
|
@ -710,7 +707,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(shardId);
|
final IndexShard indexShard = indexService.shardSafe(shardId);
|
||||||
|
|
||||||
if (indexShard.ignoreRecoveryAttempt()) {
|
if (indexShard.ignoreRecoveryAttempt()) {
|
||||||
// we are already recovering (we can get to this state since the cluster event can happen several
|
// we are already recovering (we can get to this state since the cluster event can happen several
|
||||||
|
|
|
@ -37,10 +37,10 @@ import org.elasticsearch.index.fielddata.FieldDataType;
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldData;
|
import org.elasticsearch.index.fielddata.IndexFieldData;
|
||||||
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
|
import org.elasticsearch.index.fielddata.IndexFieldDataCache;
|
||||||
import org.elasticsearch.index.mapper.FieldMapper;
|
import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.ShardUtils;
|
import org.elasticsearch.index.shard.ShardUtils;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -31,11 +31,10 @@ import org.elasticsearch.common.util.concurrent.FutureUtils;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.engine.EngineClosedException;
|
import org.elasticsearch.index.engine.EngineClosedException;
|
||||||
import org.elasticsearch.index.engine.FlushNotAllowedEngineException;
|
import org.elasticsearch.index.engine.FlushNotAllowedEngineException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.translog.Translog;
|
import org.elasticsearch.index.translog.Translog;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.monitor.jvm.JvmInfo;
|
import org.elasticsearch.monitor.jvm.JvmInfo;
|
||||||
|
@ -164,8 +163,8 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
||||||
for (IndexShard indexShard : activeToInactiveIndexingShards) {
|
for (IndexShard indexShard : activeToInactiveIndexingShards) {
|
||||||
// update inactive indexing buffer size
|
// update inactive indexing buffer size
|
||||||
try {
|
try {
|
||||||
((InternalIndexShard) indexShard).engine().updateIndexingBufferSize(Engine.INACTIVE_SHARD_INDEXING_BUFFER);
|
((IndexShard) indexShard).engine().updateIndexingBufferSize(Engine.INACTIVE_SHARD_INDEXING_BUFFER);
|
||||||
((InternalIndexShard) indexShard).translog().updateBuffer(Translog.INACTIVE_SHARD_TRANSLOG_BUFFER);
|
((IndexShard) indexShard).translog().updateBuffer(Translog.INACTIVE_SHARD_TRANSLOG_BUFFER);
|
||||||
} catch (EngineClosedException e) {
|
} catch (EngineClosedException e) {
|
||||||
// ignore
|
// ignore
|
||||||
} catch (FlushNotAllowedEngineException e) {
|
} catch (FlushNotAllowedEngineException e) {
|
||||||
|
@ -194,7 +193,7 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
||||||
|
|
||||||
final long time = threadPool.estimatedTimeInMillis();
|
final long time = threadPool.estimatedTimeInMillis();
|
||||||
|
|
||||||
Translog translog = ((InternalIndexShard) indexShard).translog();
|
Translog translog = ((IndexShard) indexShard).translog();
|
||||||
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
||||||
if (status == null) {
|
if (status == null) {
|
||||||
status = new ShardIndexingStatus();
|
status = new ShardIndexingStatus();
|
||||||
|
@ -302,8 +301,8 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
||||||
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
||||||
if (status == null || status.activeIndexing) {
|
if (status == null || status.activeIndexing) {
|
||||||
try {
|
try {
|
||||||
((InternalIndexShard) indexShard).engine().updateIndexingBufferSize(shardIndexingBufferSize);
|
((IndexShard) indexShard).engine().updateIndexingBufferSize(shardIndexingBufferSize);
|
||||||
((InternalIndexShard) indexShard).translog().updateBuffer(shardTranslogBufferSize);
|
((IndexShard) indexShard).translog().updateBuffer(shardTranslogBufferSize);
|
||||||
} catch (EngineClosedException e) {
|
} catch (EngineClosedException e) {
|
||||||
// ignore
|
// ignore
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -25,8 +25,7 @@ import org.elasticsearch.common.logging.ESLogger;
|
||||||
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
import org.elasticsearch.index.shard.IndexShardClosedException;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentMap;
|
import java.util.concurrent.ConcurrentMap;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
@ -53,7 +52,7 @@ public class RecoveriesCollection {
|
||||||
*
|
*
|
||||||
* @return the id of the new recovery.
|
* @return the id of the new recovery.
|
||||||
*/
|
*/
|
||||||
public long startRecovery(InternalIndexShard indexShard, DiscoveryNode sourceNode, RecoveryState state, RecoveryTarget.RecoveryListener listener) {
|
public long startRecovery(IndexShard indexShard, DiscoveryNode sourceNode, RecoveryState state, RecoveryTarget.RecoveryListener listener) {
|
||||||
RecoveryStatus status = new RecoveryStatus(indexShard, sourceNode, state, listener);
|
RecoveryStatus status = new RecoveryStatus(indexShard, sourceNode, state, listener);
|
||||||
RecoveryStatus existingStatus = onGoingRecoveries.putIfAbsent(status.recoveryId(), status);
|
RecoveryStatus existingStatus = onGoingRecoveries.putIfAbsent(status.recoveryId(), status);
|
||||||
assert existingStatus == null : "found two RecoveryStatus instances with the same id";
|
assert existingStatus == null : "found two RecoveryStatus instances with the same id";
|
||||||
|
|
|
@ -29,10 +29,9 @@ import org.elasticsearch.common.component.AbstractComponent;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.indices.IndicesLifecycle;
|
import org.elasticsearch.indices.IndicesLifecycle;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
@ -41,8 +40,6 @@ import org.elasticsearch.transport.TransportChannel;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
|
||||||
import java.util.concurrent.ConcurrentMap;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The source recovery accepts recovery requests from other peer shards and start the recovery process from this
|
* The source recovery accepts recovery requests from other peer shards and start the recovery process from this
|
||||||
|
@ -92,7 +89,7 @@ public class RecoverySource extends AbstractComponent {
|
||||||
|
|
||||||
private RecoveryResponse recover(final StartRecoveryRequest request) {
|
private RecoveryResponse recover(final StartRecoveryRequest request) {
|
||||||
final IndexService indexService = indicesService.indexServiceSafe(request.shardId().index().name());
|
final IndexService indexService = indicesService.indexServiceSafe(request.shardId().index().name());
|
||||||
final InternalIndexShard shard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
final IndexShard shard = indexService.shardSafe(request.shardId().id());
|
||||||
|
|
||||||
// starting recovery from that our (the source) shard state is marking the shard to be in recovery mode as well, otherwise
|
// starting recovery from that our (the source) shard state is marking the shard to be in recovery mode as well, otherwise
|
||||||
// the index operations will not be routed to it properly
|
// the index operations will not be routed to it properly
|
||||||
|
|
|
@ -29,7 +29,7 @@ import org.elasticsearch.common.logging.Loggers;
|
||||||
import org.elasticsearch.common.util.concurrent.AbstractRefCounted;
|
import org.elasticsearch.common.util.concurrent.AbstractRefCounted;
|
||||||
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.store.Store;
|
||||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
||||||
|
|
||||||
private final ShardId shardId;
|
private final ShardId shardId;
|
||||||
private final long recoveryId;
|
private final long recoveryId;
|
||||||
private final InternalIndexShard indexShard;
|
private final IndexShard indexShard;
|
||||||
private final RecoveryState state;
|
private final RecoveryState state;
|
||||||
private final DiscoveryNode sourceNode;
|
private final DiscoveryNode sourceNode;
|
||||||
private final String tempFilePrefix;
|
private final String tempFilePrefix;
|
||||||
|
@ -71,7 +71,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
||||||
private final ConcurrentMap<String, IndexOutput> openIndexOutputs = ConcurrentCollections.newConcurrentMap();
|
private final ConcurrentMap<String, IndexOutput> openIndexOutputs = ConcurrentCollections.newConcurrentMap();
|
||||||
private final Store.LegacyChecksums legacyChecksums = new Store.LegacyChecksums();
|
private final Store.LegacyChecksums legacyChecksums = new Store.LegacyChecksums();
|
||||||
|
|
||||||
public RecoveryStatus(InternalIndexShard indexShard, DiscoveryNode sourceNode, RecoveryState state, RecoveryTarget.RecoveryListener listener) {
|
public RecoveryStatus(IndexShard indexShard, DiscoveryNode sourceNode, RecoveryState state, RecoveryTarget.RecoveryListener listener) {
|
||||||
super("recovery_status");
|
super("recovery_status");
|
||||||
this.recoveryId = idGenerator.incrementAndGet();
|
this.recoveryId = idGenerator.incrementAndGet();
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
|
@ -97,7 +97,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
||||||
return shardId;
|
return shardId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InternalIndexShard indexShard() {
|
public IndexShard indexShard() {
|
||||||
ensureRefCount();
|
ensureRefCount();
|
||||||
return indexShard;
|
return indexShard;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,7 @@ import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
||||||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
import org.elasticsearch.index.shard.IndexShardClosedException;
|
||||||
import org.elasticsearch.index.shard.IndexShardNotStartedException;
|
import org.elasticsearch.index.shard.IndexShardNotStartedException;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.store.Store;
|
||||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||||
import org.elasticsearch.index.translog.Translog;
|
import org.elasticsearch.index.translog.Translog;
|
||||||
|
@ -124,7 +123,7 @@ public class RecoveryTarget extends AbstractComponent {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startRecovery(final InternalIndexShard indexShard, final RecoveryState.Type recoveryType, final DiscoveryNode sourceNode, final RecoveryListener listener) {
|
public void startRecovery(final IndexShard indexShard, final RecoveryState.Type recoveryType, final DiscoveryNode sourceNode, final RecoveryListener listener) {
|
||||||
try {
|
try {
|
||||||
indexShard.recovering("from " + sourceNode);
|
indexShard.recovering("from " + sourceNode);
|
||||||
} catch (IllegalIndexShardStateException e) {
|
} catch (IllegalIndexShardStateException e) {
|
||||||
|
|
|
@ -21,7 +21,6 @@ package org.elasticsearch.indices.recovery;
|
||||||
|
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import org.apache.lucene.index.CorruptIndexException;
|
import org.apache.lucene.index.CorruptIndexException;
|
||||||
import org.apache.lucene.store.IOContext;
|
import org.apache.lucene.store.IOContext;
|
||||||
import org.apache.lucene.store.IndexInput;
|
import org.apache.lucene.store.IndexInput;
|
||||||
|
@ -46,11 +45,11 @@ import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||||
import org.elasticsearch.index.deletionpolicy.SnapshotIndexCommit;
|
import org.elasticsearch.index.deletionpolicy.SnapshotIndexCommit;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
||||||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
import org.elasticsearch.index.shard.IndexShardClosedException;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.store.Store;
|
||||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||||
import org.elasticsearch.index.translog.Translog;
|
import org.elasticsearch.index.translog.Translog;
|
||||||
|
@ -75,7 +74,7 @@ public final class ShardRecoveryHandler implements Engine.RecoveryHandler {
|
||||||
|
|
||||||
private final ESLogger logger;
|
private final ESLogger logger;
|
||||||
// Shard that is going to be recovered (the "source")
|
// Shard that is going to be recovered (the "source")
|
||||||
private final InternalIndexShard shard;
|
private final IndexShard shard;
|
||||||
private final String indexName;
|
private final String indexName;
|
||||||
private final int shardId;
|
private final int shardId;
|
||||||
// Request containing source and target node information
|
// Request containing source and target node information
|
||||||
|
@ -101,7 +100,7 @@ public final class ShardRecoveryHandler implements Engine.RecoveryHandler {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
public ShardRecoveryHandler(final InternalIndexShard shard, final StartRecoveryRequest request, final RecoverySettings recoverySettings,
|
public ShardRecoveryHandler(final IndexShard shard, final StartRecoveryRequest request, final RecoverySettings recoverySettings,
|
||||||
final TransportService transportService, final TimeValue internalActionTimeout,
|
final TransportService transportService, final TimeValue internalActionTimeout,
|
||||||
final TimeValue internalActionLongTimeout, final ClusterService clusterService,
|
final TimeValue internalActionLongTimeout, final ClusterService clusterService,
|
||||||
final IndicesService indicesService, final MappingUpdatedAction mappingUpdatedAction, final ESLogger logger) {
|
final IndicesService indicesService, final MappingUpdatedAction mappingUpdatedAction, final ESLogger logger) {
|
||||||
|
|
|
@ -37,16 +37,15 @@ import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.ByteSizeUnit;
|
import org.elasticsearch.common.unit.ByteSizeUnit;
|
||||||
import org.elasticsearch.common.unit.ByteSizeValue;
|
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.node.settings.NodeSettingsService;
|
import org.elasticsearch.node.settings.NodeSettingsService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.*;
|
import org.elasticsearch.transport.*;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
|
@ -40,16 +40,15 @@ import org.elasticsearch.common.io.stream.Streamable;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.env.NodeEnvironment;
|
import org.elasticsearch.env.NodeEnvironment;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.store.Store;
|
import org.elasticsearch.index.store.Store;
|
||||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.TransportService;
|
import org.elasticsearch.transport.TransportService;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
@ -146,7 +145,7 @@ public class TransportNodesListShardStoreMetaData extends TransportNodesOperatio
|
||||||
private StoreFilesMetaData listStoreMetaData(ShardId shardId) throws IOException {
|
private StoreFilesMetaData listStoreMetaData(ShardId shardId) throws IOException {
|
||||||
IndexService indexService = indicesService.indexService(shardId.index().name());
|
IndexService indexService = indicesService.indexService(shardId.index().name());
|
||||||
if (indexService != null) {
|
if (indexService != null) {
|
||||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shard(shardId.id());
|
IndexShard indexShard = indexService.shard(shardId.id());
|
||||||
if (indexShard != null) {
|
if (indexShard != null) {
|
||||||
final Store store = indexShard.store();
|
final Store store = indexShard.store();
|
||||||
store.incRef();
|
store.incRef();
|
||||||
|
|
|
@ -46,9 +46,9 @@ import org.elasticsearch.index.mapper.FieldMappers;
|
||||||
import org.elasticsearch.index.mapper.Uid;
|
import org.elasticsearch.index.mapper.Uid;
|
||||||
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.IndexShardState;
|
import org.elasticsearch.index.shard.IndexShardState;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.node.settings.NodeSettingsService;
|
import org.elasticsearch.node.settings.NodeSettingsService;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.apache.lucene.index.IndexReader;
|
||||||
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
||||||
import org.elasticsearch.index.engine.Engine;
|
import org.elasticsearch.index.engine.Engine;
|
||||||
import org.elasticsearch.index.shard.ShardId;
|
import org.elasticsearch.index.shard.ShardId;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -26,8 +26,8 @@ import org.elasticsearch.common.component.AbstractComponent;
|
||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.unit.TimeValue;
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,8 @@ import org.elasticsearch.index.mapper.ParsedDocument;
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.query.ParsedFilter;
|
import org.elasticsearch.index.query.ParsedFilter;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
import org.elasticsearch.index.similarity.SimilarityService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.Scroll;
|
import org.elasticsearch.search.Scroll;
|
||||||
|
|
|
@ -73,8 +73,8 @@ import org.elasticsearch.index.mapper.internal.IdFieldMapper;
|
||||||
import org.elasticsearch.index.percolator.stats.ShardPercolateService;
|
import org.elasticsearch.index.percolator.stats.ShardPercolateService;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.percolator.QueryCollector.Count;
|
import org.elasticsearch.percolator.QueryCollector.Count;
|
||||||
import org.elasticsearch.percolator.QueryCollector.Match;
|
import org.elasticsearch.percolator.QueryCollector.Match;
|
||||||
|
|
|
@ -62,8 +62,8 @@ import org.elasticsearch.index.mapper.FieldMapper.Loading;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.query.TemplateQueryParser;
|
import org.elasticsearch.index.query.TemplateQueryParser;
|
||||||
import org.elasticsearch.index.search.stats.StatsGroupsParseElement;
|
import org.elasticsearch.index.search.stats.StatsGroupsParseElement;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.indices.IndicesLifecycle;
|
import org.elasticsearch.indices.IndicesLifecycle;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
import org.elasticsearch.indices.IndicesService;
|
||||||
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
|
import org.elasticsearch.indices.cache.query.IndicesQueryCache;
|
||||||
|
|
|
@ -49,8 +49,8 @@ import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.query.ParsedFilter;
|
import org.elasticsearch.index.query.ParsedFilter;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
import org.elasticsearch.index.similarity.SimilarityService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.Scroll;
|
import org.elasticsearch.search.Scroll;
|
||||||
|
|
|
@ -37,7 +37,7 @@ import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.query.ParsedFilter;
|
import org.elasticsearch.index.query.ParsedFilter;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
import org.elasticsearch.index.similarity.SimilarityService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.Scroll;
|
import org.elasticsearch.search.Scroll;
|
||||||
|
|
|
@ -43,7 +43,7 @@ import org.elasticsearch.index.query.IndexQueryParserService;
|
||||||
import org.elasticsearch.index.query.ParsedFilter;
|
import org.elasticsearch.index.query.ParsedFilter;
|
||||||
import org.elasticsearch.index.query.ParsedQuery;
|
import org.elasticsearch.index.query.ParsedQuery;
|
||||||
import org.elasticsearch.index.query.QueryParseContext;
|
import org.elasticsearch.index.query.QueryParseContext;
|
||||||
import org.elasticsearch.index.shard.service.IndexShard;
|
import org.elasticsearch.index.shard.IndexShard;
|
||||||
import org.elasticsearch.index.similarity.SimilarityService;
|
import org.elasticsearch.index.similarity.SimilarityService;
|
||||||
import org.elasticsearch.script.ScriptService;
|
import org.elasticsearch.script.ScriptService;
|
||||||
import org.elasticsearch.search.Scroll;
|
import org.elasticsearch.search.Scroll;
|
||||||
|
|
|
@ -36,7 +36,7 @@ import org.elasticsearch.index.engine.Engine.Searcher;
|
||||||
import org.elasticsearch.index.query.FilterBuilder;
|
import org.elasticsearch.index.query.FilterBuilder;
|
||||||
import org.elasticsearch.index.query.FilterBuilders;
|
import org.elasticsearch.index.query.FilterBuilders;
|
||||||
import org.elasticsearch.index.query.TermFilterBuilder;
|
import org.elasticsearch.index.query.TermFilterBuilder;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
|
|
||||||
public class DocIdSetsTests extends ElasticsearchSingleNodeTest {
|
public class DocIdSetsTests extends ElasticsearchSingleNodeTest {
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.query.FilterBuilder;
|
import org.elasticsearch.index.query.FilterBuilder;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.InvalidAliasNameException;
|
import org.elasticsearch.indices.InvalidAliasNameException;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
|
@ -53,7 +53,7 @@ import org.elasticsearch.index.codec.postingsformat.*;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
import org.elasticsearch.index.mapper.internal.UidFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.internal.VersionFieldMapper;
|
import org.elasticsearch.index.mapper.internal.VersionFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeLuceneTestCase;
|
import org.elasticsearch.test.ElasticsearchSingleNodeLuceneTestCase;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
package org.elasticsearch.index.engine.internal;
|
package org.elasticsearch.index.engine.internal;
|
||||||
|
|
||||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
|
|
|
@ -26,7 +26,6 @@ import org.apache.lucene.index.*;
|
||||||
import org.apache.lucene.search.Filter;
|
import org.apache.lucene.search.Filter;
|
||||||
import org.apache.lucene.store.RAMDirectory;
|
import org.apache.lucene.store.RAMDirectory;
|
||||||
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
|
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
|
||||||
import org.elasticsearch.common.lucene.Lucene;
|
|
||||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.mapper.ContentPath;
|
import org.elasticsearch.index.mapper.ContentPath;
|
||||||
|
@ -34,7 +33,7 @@ import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
||||||
import org.elasticsearch.index.mapper.MapperBuilders;
|
import org.elasticsearch.index.mapper.MapperBuilders;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
|
import org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
|
|
@ -33,7 +33,7 @@ import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
||||||
import org.elasticsearch.index.mapper.MapperBuilders;
|
import org.elasticsearch.index.mapper.MapperBuilders;
|
||||||
import org.elasticsearch.index.mapper.core.*;
|
import org.elasticsearch.index.mapper.core.*;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
|
@ -21,10 +21,7 @@ package org.elasticsearch.index.mapper.boost;
|
||||||
|
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetFieldMappingsResponse;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
|
||||||
import org.elasticsearch.index.service.IndexService;
|
|
||||||
import org.elasticsearch.test.ElasticsearchIntegrationTest;
|
import org.elasticsearch.test.ElasticsearchIntegrationTest;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
|
|
@ -21,13 +21,11 @@ package org.elasticsearch.index.mapper.boost;
|
||||||
|
|
||||||
import org.apache.lucene.index.IndexOptions;
|
import org.apache.lucene.index.IndexOptions;
|
||||||
import org.apache.lucene.index.IndexableField;
|
import org.apache.lucene.index.IndexableField;
|
||||||
import org.elasticsearch.common.compress.CompressedString;
|
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.ParsedDocument;
|
import org.elasticsearch.index.mapper.ParsedDocument;
|
||||||
import org.elasticsearch.index.mapper.internal.BoostFieldMapper;
|
import org.elasticsearch.index.mapper.internal.BoostFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.indices.IndicesService;
|
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ import org.elasticsearch.index.mapper.*;
|
||||||
import org.elasticsearch.index.mapper.ParseContext.Document;
|
import org.elasticsearch.index.mapper.ParseContext.Document;
|
||||||
import org.elasticsearch.index.mapper.core.LongFieldMapper;
|
import org.elasticsearch.index.mapper.core.LongFieldMapper;
|
||||||
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.FieldMappers;
|
import org.elasticsearch.index.mapper.FieldMappers;
|
||||||
import org.elasticsearch.index.mapper.ParsedDocument;
|
import org.elasticsearch.index.mapper.ParsedDocument;
|
||||||
import org.elasticsearch.index.mapper.StrictDynamicMappingException;
|
import org.elasticsearch.index.mapper.StrictDynamicMappingException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ import org.elasticsearch.index.mapper.FieldMapper;
|
||||||
import org.elasticsearch.index.mapper.ParseContext.Document;
|
import org.elasticsearch.index.mapper.ParseContext.Document;
|
||||||
import org.elasticsearch.index.mapper.core.*;
|
import org.elasticsearch.index.mapper.core.*;
|
||||||
import org.elasticsearch.index.mapper.geo.GeoPointFieldMapper;
|
import org.elasticsearch.index.mapper.geo.GeoPointFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ package org.elasticsearch.index.mapper.null_value;
|
||||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.mapper.MapperParsingException;
|
import org.elasticsearch.index.mapper.MapperParsingException;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.settings.ImmutableSettings;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.index.mapper.*;
|
import org.elasticsearch.index.mapper.*;
|
||||||
import org.elasticsearch.index.mapper.ParseContext.Document;
|
import org.elasticsearch.index.mapper.ParseContext.Document;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.common.xcontent.XContentType;
|
import org.elasticsearch.common.xcontent.XContentType;
|
||||||
import org.elasticsearch.index.mapper.*;
|
import org.elasticsearch.index.mapper.*;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@
|
||||||
package org.elasticsearch.index.mapper.string;
|
package org.elasticsearch.index.mapper.string;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import org.apache.lucene.index.FieldInfo;
|
|
||||||
import org.apache.lucene.index.DocValuesType;
|
import org.apache.lucene.index.DocValuesType;
|
||||||
import org.apache.lucene.index.IndexOptions;
|
import org.apache.lucene.index.IndexOptions;
|
||||||
import org.apache.lucene.index.IndexableField;
|
import org.apache.lucene.index.IndexableField;
|
||||||
|
@ -36,7 +35,7 @@ import org.elasticsearch.index.mapper.DocumentMapper.MergeResult;
|
||||||
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
import org.elasticsearch.index.mapper.Mapper.BuilderContext;
|
||||||
import org.elasticsearch.index.mapper.ParseContext.Document;
|
import org.elasticsearch.index.mapper.ParseContext.Document;
|
||||||
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
import org.elasticsearch.index.mapper.core.StringFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
|
@ -28,7 +28,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.mapper.*;
|
import org.elasticsearch.index.mapper.*;
|
||||||
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||||
import org.elasticsearch.index.mapper.MapperService;
|
import org.elasticsearch.index.mapper.MapperService;
|
||||||
import org.elasticsearch.index.service.IndexService;
|
import org.elasticsearch.index.IndexService;
|
||||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue