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.StreamOutput;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.node.service.NodeService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
|
|
@ -42,7 +42,7 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.index.analysis.*;
|
||||
import org.elasticsearch.index.mapper.FieldMapper;
|
||||
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.indices.IndicesService;
|
||||
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.settings.Settings;
|
||||
import org.elasticsearch.index.mapper.internal.ParentFieldMapper;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.indices.cache.filter.terms.IndicesTermsFilterCache;
|
||||
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.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
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.threadpool.ThreadPool;
|
||||
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.DocumentMapper;
|
||||
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.indices.IndicesService;
|
||||
import org.elasticsearch.indices.TypeMissingException;
|
||||
|
|
|
@ -33,7 +33,7 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
|||
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
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.threadpool.ThreadPool;
|
||||
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.settings.Settings;
|
||||
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.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
||||
|
@ -141,8 +141,8 @@ public class TransportRecoveryAction extends
|
|||
@Override
|
||||
protected ShardRecoveryResponse shardOperation(ShardRecoveryRequest request) throws ElasticsearchException {
|
||||
|
||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
||||
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
IndexShard indexShard = indexService.shardSafe(request.shardId().id());
|
||||
ShardRecoveryResponse shardRecoveryResponse = new ShardRecoveryResponse(request.shardId());
|
||||
|
||||
RecoveryState state = indexShard.recoveryState();
|
||||
|
|
|
@ -33,8 +33,7 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
|||
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
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.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -34,9 +34,9 @@ import org.elasticsearch.cluster.routing.GroupShardsIterator;
|
|||
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
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.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
@ -129,8 +129,8 @@ public class TransportIndicesSegmentsAction extends TransportBroadcastOperationA
|
|||
|
||||
@Override
|
||||
protected ShardSegments shardOperation(IndexShardSegmentRequest request) throws ElasticsearchException {
|
||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
||||
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
IndexShard indexShard = indexService.shardSafe(request.shardId().id());
|
||||
return new ShardSegments(indexShard.routingEntry(), indexShard.engine().segments());
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
|
||||
package org.elasticsearch.action.admin.indices.stats;
|
||||
|
||||
import org.elasticsearch.Version;
|
||||
import org.elasticsearch.common.Nullable;
|
||||
import org.elasticsearch.common.io.stream.StreamInput;
|
||||
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.search.stats.SearchStats;
|
||||
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.suggest.stats.SuggestStats;
|
||||
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.XContentBuilder;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilderString;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
|
||||
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.settings.Settings;
|
||||
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.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
@ -134,8 +134,8 @@ public class TransportIndicesStatsAction extends TransportBroadcastOperationActi
|
|||
|
||||
@Override
|
||||
protected ShardStats shardOperation(IndexShardStatsRequest request) throws ElasticsearchException {
|
||||
InternalIndexService indexService = (InternalIndexService) indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(request.shardId().id());
|
||||
IndexService indexService = indicesService.indexServiceSafe(request.shardId().getIndex());
|
||||
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 (indexShard.routingEntry() == null) {
|
||||
throw new IndexShardMissingException(indexShard.shardId());
|
||||
|
|
|
@ -38,8 +38,8 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.util.BigArrays;
|
||||
import org.elasticsearch.index.query.IndexQueryParserService;
|
||||
import org.elasticsearch.index.query.QueryParsingException;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
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.mapper.DocumentMapper;
|
||||
import org.elasticsearch.index.mapper.SourceToParse;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
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.util.BigArrays;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
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.index.VersionType;
|
||||
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.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
|
|
@ -31,7 +31,7 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.VersionType;
|
||||
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.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -35,8 +35,8 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.util.BigArrays;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.index.query.ParsedQuery;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.search.internal.DefaultSearchContext;
|
||||
|
@ -128,7 +128,7 @@ public class TransportShardDeleteByQueryAction extends TransportShardReplication
|
|||
IndexShard indexShard = indexService.shardSafe(shardRequest.shardId.id());
|
||||
|
||||
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()));
|
||||
try {
|
||||
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.util.BigArrays;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
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.mapper.Uid;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
import org.elasticsearch.search.internal.DefaultSearchContext;
|
||||
|
|
|
@ -28,11 +28,10 @@ import org.elasticsearch.cluster.ClusterState;
|
|||
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -29,11 +29,10 @@ import org.elasticsearch.cluster.ClusterState;
|
|||
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -40,8 +40,8 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.index.mapper.SourceToParse;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.XContentParser;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.suggest.stats.ShardSuggestService;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.index.engine.DocumentAlreadyExistsException;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.node.NodeClosedException;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
|
|
|
@ -29,9 +29,9 @@ import org.elasticsearch.cluster.ClusterState;
|
|||
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -28,9 +28,9 @@ import org.elasticsearch.cluster.ClusterState;
|
|||
import org.elasticsearch.cluster.routing.ShardIterator;
|
||||
import org.elasticsearch.common.inject.Inject;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
|
|
@ -52,8 +52,8 @@ import org.elasticsearch.common.xcontent.XContentHelper;
|
|||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.index.engine.DocumentAlreadyExistsException;
|
||||
import org.elasticsearch.index.engine.VersionConflictEngineException;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.TTLFieldMapper;
|
||||
import org.elasticsearch.index.mapper.internal.TimestampFieldMapper;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
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.ScriptService;
|
||||
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.MapperService;
|
||||
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.IndicesService;
|
||||
import org.elasticsearch.indices.InvalidIndexNameException;
|
||||
|
@ -72,7 +72,6 @@ import org.elasticsearch.threadpool.ThreadPool;
|
|||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.file.DirectoryStream;
|
||||
import java.nio.file.Files;
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.elasticsearch.common.inject.Inject;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.Index;
|
||||
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.IndicesService;
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ import org.elasticsearch.index.Index;
|
|||
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||
import org.elasticsearch.index.mapper.MapperService;
|
||||
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.IndicesService;
|
||||
import org.elasticsearch.indices.InvalidTypeNameException;
|
||||
|
|
|
@ -21,8 +21,6 @@ package org.elasticsearch.index;
|
|||
|
||||
import org.elasticsearch.common.inject.AbstractModule;
|
||||
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
|
||||
protected void configure() {
|
||||
bind(IndexService.class).to(InternalIndexService.class).asEagerSingleton();
|
||||
bind(IndexService.class).asEagerSingleton();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.index.service;
|
||||
package org.elasticsearch.index;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
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.IndexShardModule;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.similarity.SimilarityService;
|
||||
import org.elasticsearch.index.snapshots.IndexShardSnapshotModule;
|
||||
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;
|
||||
|
||||
|
@ -141,11 +140,11 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
|||
private final AtomicBoolean closed = new AtomicBoolean(false);
|
||||
|
||||
@Inject
|
||||
public InternalIndexService(Injector injector, Index index, @IndexSettings Settings indexSettings, NodeEnvironment nodeEnv,
|
||||
AnalysisService analysisService, MapperService mapperService, IndexQueryParserService queryParserService,
|
||||
SimilarityService similarityService, IndexAliasesService aliasesService, IndexCache indexCache, IndexEngine indexEngine,
|
||||
IndexGateway indexGateway, IndexStore indexStore, IndexSettingsService settingsService, IndexFieldDataService indexFieldData,
|
||||
BitsetFilterCache bitSetFilterCache ) {
|
||||
public IndexService(Injector injector, Index index, @IndexSettings Settings indexSettings, NodeEnvironment nodeEnv,
|
||||
AnalysisService analysisService, MapperService mapperService, IndexQueryParserService queryParserService,
|
||||
SimilarityService similarityService, IndexAliasesService aliasesService, IndexCache indexCache, IndexEngine indexEngine,
|
||||
IndexGateway indexGateway, IndexStore indexStore, IndexSettingsService settingsService, IndexFieldDataService indexFieldData,
|
||||
BitsetFilterCache bitSetFilterCache) {
|
||||
super(index, indexSettings);
|
||||
this.injector = injector;
|
||||
this.indexSettings = indexSettings;
|
||||
|
@ -172,7 +171,6 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
|||
this.nodeEnv = nodeEnv;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int numberOfShards() {
|
||||
return shards.size();
|
||||
}
|
||||
|
@ -182,17 +180,20 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
|||
return shards.values().iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasShard(int 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) {
|
||||
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 {
|
||||
IndexShard indexShard = shard(shardId);
|
||||
if (indexShard == null) {
|
||||
|
@ -201,72 +202,58 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
|||
return indexShard;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImmutableSet<Integer> shardIds() {
|
||||
return shards.keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Injector injector() {
|
||||
return injector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexGateway gateway() {
|
||||
return indexGateway;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexSettingsService settingsService() {
|
||||
return this.settingsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexStore store() {
|
||||
return indexStore;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexCache cache() {
|
||||
return indexCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexFieldDataService fieldData() {
|
||||
return indexFieldData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitsetFilterCache bitsetFilterCache() {
|
||||
return bitsetFilterCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnalysisService analysisService() {
|
||||
return this.analysisService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapperService mapperService() {
|
||||
return mapperService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexQueryParserService queryParserService() {
|
||||
return queryParserService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimilarityService similarityService() {
|
||||
return similarityService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexAliasesService aliasesService() {
|
||||
return aliasesService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexEngine engine() {
|
||||
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 {
|
||||
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 {
|
||||
Injector shardInjector = shardInjector(shardId);
|
||||
if (shardInjector == null) {
|
||||
|
@ -300,12 +292,10 @@ public class InternalIndexService extends AbstractIndexComponent implements Inde
|
|||
return shardInjector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String indexUUID() {
|
||||
return indexSettings.get(IndexMetaData.SETTING_UUID, IndexMetaData.INDEX_UUID_NA_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized IndexShard createShard(int sShardId) throws ElasticsearchException {
|
||||
/*
|
||||
* 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();
|
||||
modules.add(new ShardsPluginsModule(indexSettings, pluginsService));
|
||||
modules.add(new IndexShardModule(indexSettings, shardId));
|
||||
modules.add(new IndexShardModule(shardId));
|
||||
modules.add(new ShardIndexingModule());
|
||||
modules.add(new ShardSearchModule());
|
||||
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 {
|
||||
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
|
||||
if (indexShard != null) {
|
||||
try {
|
||||
((InternalIndexShard) indexShard).close(reason);
|
||||
((IndexShard) indexShard).close(reason);
|
||||
} catch (Throwable e) {
|
||||
logger.debug("[{}] failed to close index shard", e, shardId);
|
||||
// ignore
|
|
@ -44,12 +44,11 @@ import org.elasticsearch.index.mapper.DocumentMapper;
|
|||
import org.elasticsearch.index.mapper.MapperService;
|
||||
import org.elasticsearch.index.mapper.object.ObjectMapper;
|
||||
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.service.InternalIndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.settings.IndexSettings;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
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.threadpool.ThreadPool;
|
||||
|
||||
|
@ -93,7 +92,7 @@ public class BitsetFilterCache extends AbstractIndexComponent implements LeafRea
|
|||
this.indicesWarmer = indicesWarmer;
|
||||
}
|
||||
|
||||
public void setIndexService(InternalIndexService indexService) {
|
||||
public void setIndexService(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
|
||||
// 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.elasticsearch.common.component.CloseableComponent;
|
||||
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.Index;
|
||||
import org.elasticsearch.index.cache.filter.FilterCache;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.settings.IndexSettings;
|
||||
|
||||
/**
|
||||
|
|
|
@ -43,11 +43,11 @@ import org.elasticsearch.index.AbstractIndexComponent;
|
|||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.index.cache.filter.FilterCache;
|
||||
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.shard.ShardId;
|
||||
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 java.io.IOException;
|
||||
|
|
|
@ -35,7 +35,7 @@ import org.elasticsearch.index.fielddata.plain.*;
|
|||
import org.elasticsearch.index.mapper.FieldMapper;
|
||||
import org.elasticsearch.index.mapper.internal.IndexFieldMapper;
|
||||
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.indices.breaker.CircuitBreakerService;
|
||||
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.unit.ByteSizeValue;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.index.settings.IndexSettings;
|
||||
import org.elasticsearch.index.shard.*;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.snapshots.IndexShardSnapshotAndRestoreService;
|
||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
@ -47,7 +45,7 @@ public class IndexShardGatewayService extends AbstractIndexShardComponent implem
|
|||
|
||||
private final ClusterService clusterService;
|
||||
|
||||
private final InternalIndexShard indexShard;
|
||||
private final IndexShard indexShard;
|
||||
|
||||
private final IndexShardGateway shardGateway;
|
||||
|
||||
|
@ -60,7 +58,7 @@ public class IndexShardGatewayService extends AbstractIndexShardComponent implem
|
|||
IndexShard indexShard, IndexShardGateway shardGateway, IndexShardSnapshotAndRestoreService snapshotService, ClusterService clusterService) {
|
||||
super(shardId, indexSettings);
|
||||
this.threadPool = threadPool;
|
||||
this.indexShard = (InternalIndexShard) indexShard;
|
||||
this.indexShard = indexShard;
|
||||
this.shardGateway = shardGateway;
|
||||
this.snapshotService = snapshotService;
|
||||
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.gateway.IndexShardGateway;
|
||||
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.shard.AbstractIndexShardComponent;
|
||||
import org.elasticsearch.index.shard.IndexShardState;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.translog.*;
|
||||
import org.elasticsearch.index.translog.fs.FsTranslog;
|
||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||
import org.elasticsearch.rest.RestStatus;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
import java.io.EOFException;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
import java.util.Arrays;
|
||||
import java.util.Set;
|
||||
|
@ -72,7 +68,7 @@ public class LocalIndexShardGateway extends AbstractIndexShardComponent implemen
|
|||
private final ThreadPool threadPool;
|
||||
private final MappingUpdatedAction mappingUpdatedAction;
|
||||
private final IndexService indexService;
|
||||
private final InternalIndexShard indexShard;
|
||||
private final IndexShard indexShard;
|
||||
|
||||
private final TimeValue waitForMappingUpdatePostRecovery;
|
||||
|
||||
|
@ -88,7 +84,7 @@ public class LocalIndexShardGateway extends AbstractIndexShardComponent implemen
|
|||
this.threadPool = threadPool;
|
||||
this.mappingUpdatedAction = mappingUpdatedAction;
|
||||
this.indexService = indexService;
|
||||
this.indexShard = (InternalIndexShard) indexShard;
|
||||
this.indexShard = indexShard;
|
||||
|
||||
this.waitForMappingUpdatePostRecovery = componentSettings.getAsTime("wait_for_mapping_update_post_recovery", TimeValue.timeValueSeconds(30));
|
||||
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.shard.AbstractIndexShardComponent;
|
||||
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.script.ScriptService;
|
||||
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.shard.AbstractIndexShardComponent;
|
||||
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.percolator.PercolatorService;
|
||||
|
||||
|
@ -267,7 +267,7 @@ public class PercolatorQueriesRegistry extends AbstractIndexShardComponent {
|
|||
private int loadQueries(IndexShard shard) {
|
||||
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
|
||||
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(
|
||||
indexCache.filter().cache(
|
||||
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.scheduler.ConcurrentMergeSchedulerProvider;
|
||||
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.translog.TranslogService;
|
||||
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_METADATA);
|
||||
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(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MIN_MERGE_SIZE, Validator.BYTES_SIZE);
|
||||
indexDynamicSettings.addDynamicSetting(LogByteSizeMergePolicyProvider.INDEX_MERGE_POLICY_MAX_MERGE_SIZE, Validator.BYTES_SIZE);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.index.shard.service;
|
||||
package org.elasticsearch.index.shard;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
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.stats.SearchStats;
|
||||
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.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.StoreStats;
|
||||
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 IndexSettingsService indexSettingsService;
|
||||
|
@ -177,10 +165,10 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
private final MeanMetric flushMetric = new MeanMetric();
|
||||
|
||||
@Inject
|
||||
public InternalIndexShard(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,
|
||||
ShardFilterCache shardFilterCache, ShardFieldData shardFieldData, PercolatorQueriesRegistry percolatorQueriesRegistry, ShardPercolateService shardPercolateService, CodecService codecService,
|
||||
ShardTermVectorsService termVectorsService, IndexFieldDataService indexFieldDataService, IndexService indexService, ShardSuggestService shardSuggestService, ShardQueryCache shardQueryCache, ShardBitsetFilterCache shardBitsetFilterCache) {
|
||||
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,
|
||||
ShardFilterCache shardFilterCache, ShardFieldData shardFieldData, PercolatorQueriesRegistry percolatorQueriesRegistry, ShardPercolateService shardPercolateService, CodecService codecService,
|
||||
ShardTermVectorsService termVectorsService, IndexFieldDataService indexFieldDataService, IndexService indexService, ShardSuggestService shardSuggestService, ShardQueryCache shardQueryCache, ShardBitsetFilterCache shardBitsetFilterCache) {
|
||||
super(shardId, indexSettings);
|
||||
this.indicesLifecycle = (InternalIndicesLifecycle) indicesLifecycle;
|
||||
this.indexSettingsService = indexSettingsService;
|
||||
|
@ -239,72 +227,63 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return this.indexingService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardGetService getService() {
|
||||
return this.getService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardTermVectorsService termVectorsService() {
|
||||
return termVectorsService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardSuggestService shardSuggestService() {
|
||||
return shardSuggestService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardBitsetFilterCache shardBitsetFilterCache() {
|
||||
return shardBitsetFilterCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexFieldDataService indexFieldDataService() {
|
||||
return indexFieldDataService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapperService mapperService() {
|
||||
return mapperService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexService indexService() {
|
||||
return indexService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardSearchService searchService() {
|
||||
return this.searchService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardIndexWarmerService warmerService() {
|
||||
return this.shardWarmerService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardFilterCache filterCache() {
|
||||
return this.shardFilterCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardQueryCache queryCache() {
|
||||
return this.shardQueryCache;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardFieldData fieldData() {
|
||||
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() {
|
||||
return this.shardRouting;
|
||||
}
|
||||
|
||||
public InternalIndexShard routingEntry(ShardRouting newRouting) {
|
||||
public IndexShard routingEntry(ShardRouting newRouting) {
|
||||
ShardRouting currentRouting = this.shardRouting;
|
||||
if (!newRouting.shardId().equals(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) {
|
||||
if (state != IndexShardState.STARTED) {
|
||||
throw new IndexShardNotStartedException(shardId, state);
|
||||
|
@ -387,7 +366,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexShardState state() {
|
||||
return state;
|
||||
}
|
||||
|
@ -407,7 +385,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return previousState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.Create prepareCreate(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates, boolean autoGeneratedId) throws ElasticsearchException {
|
||||
long startTime = System.nanoTime();
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParsedDocument create(Engine.Create create) throws ElasticsearchException {
|
||||
writeAllowed(create.origin());
|
||||
create = indexingService.preCreate(create);
|
||||
|
@ -433,7 +409,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return create.parsedDoc();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.Index prepareIndex(SourceToParse source, long version, VersionType versionType, Engine.Operation.Origin origin, boolean canHaveDuplicates) throws ElasticsearchException {
|
||||
long startTime = System.nanoTime();
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParsedDocument index(Engine.Index index) throws ElasticsearchException {
|
||||
writeAllowed(index.origin());
|
||||
index = indexingService.preIndex(index);
|
||||
|
@ -459,14 +433,12 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return index.parsedDoc();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.Delete prepareDelete(String type, String id, long version, VersionType versionType, Engine.Operation.Origin origin) throws ElasticsearchException {
|
||||
long startTime = System.nanoTime();
|
||||
DocumentMapper docMapper = mapperService.documentMapperWithAutoCreate(type).v1();
|
||||
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 {
|
||||
writeAllowed(delete.origin());
|
||||
delete = indexingService.preDelete(delete);
|
||||
|
@ -483,7 +455,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
indexingService.postDelete(delete);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.DeleteByQuery prepareDeleteByQuery(BytesReference source, @Nullable String[] filteringAliases, Engine.Operation.Origin origin, String... types) throws ElasticsearchException {
|
||||
long startTime = System.nanoTime();
|
||||
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);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByQuery(Engine.DeleteByQuery deleteByQuery) throws ElasticsearchException {
|
||||
writeAllowed(deleteByQuery.origin());
|
||||
if (logger.isTraceEnabled()) {
|
||||
|
@ -509,13 +479,11 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
indexingService.postDeleteByQuery(deleteByQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.GetResult get(Engine.Get get) throws ElasticsearchException {
|
||||
readAllowed();
|
||||
return engine.get(get);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refresh(String source, boolean force) throws ElasticsearchException {
|
||||
verifyNotClosed();
|
||||
if (logger.isTraceEnabled()) {
|
||||
|
@ -526,17 +494,14 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
refreshMetric.inc(System.nanoTime() - time);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RefreshStats refreshStats() {
|
||||
return new RefreshStats(refreshMetric.count(), TimeUnit.NANOSECONDS.toMillis(refreshMetric.sum()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public FlushStats flushStats() {
|
||||
return new FlushStats(flushMetric.count(), TimeUnit.NANOSECONDS.toMillis(flushMetric.sum()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public DocsStats docStats() {
|
||||
final Engine.Searcher searcher = acquireSearcher("doc_stats");
|
||||
try {
|
||||
|
@ -546,22 +511,18 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IndexingStats indexingStats(String... types) {
|
||||
return indexingService.stats(types);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SearchStats searchStats(String... groups) {
|
||||
return searchService.stats(groups);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GetStats getStats() {
|
||||
return getService.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public StoreStats storeStats() {
|
||||
try {
|
||||
return store.stats();
|
||||
|
@ -572,60 +533,49 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MergeStats mergeStats() {
|
||||
return mergeScheduler.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SegmentsStats segmentStats() {
|
||||
SegmentsStats segmentsStats = engine.segmentsStats();
|
||||
segmentsStats.addBitsetMemoryInBytes(shardBitsetFilterCache.getMemorySizeInBytes());
|
||||
return segmentsStats;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WarmerStats warmerStats() {
|
||||
return shardWarmerService.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FilterCacheStats filterCacheStats() {
|
||||
return shardFilterCache.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FieldDataStats fieldDataStats(String... fields) {
|
||||
return shardFieldData.stats(fields);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PercolatorQueriesRegistry percolateRegistry() {
|
||||
return percolatorQueriesRegistry;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ShardPercolateService shardPercolateService() {
|
||||
return shardPercolateService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IdCacheStats idCacheStats() {
|
||||
long memorySizeInBytes = shardFieldData.stats(ParentFieldMapper.NAME).getFields().get(ParentFieldMapper.NAME);
|
||||
return new IdCacheStats(memorySizeInBytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TranslogStats translogStats() {
|
||||
return translog.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SuggestStats suggestStats() {
|
||||
return shardSuggestService.stats();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletionStats completionStats(String... fields) {
|
||||
CompletionStats completionStats = new CompletionStats();
|
||||
final Engine.Searcher currentSearcher = acquireSearcher("completion_stats");
|
||||
|
@ -641,7 +591,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
return completionStats;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void flush(FlushRequest request) throws ElasticsearchException {
|
||||
// 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
|
||||
|
@ -655,7 +604,6 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
flushMetric.inc(System.nanoTime() - time);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void optimize(OptimizeRequest optimize) throws ElasticsearchException {
|
||||
verifyStarted();
|
||||
if (logger.isTraceEnabled()) {
|
||||
|
@ -675,26 +623,22 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recover(Engine.RecoveryHandler recoveryHandler) throws EngineException {
|
||||
verifyStarted();
|
||||
engine.recover(recoveryHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
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.
|
||||
engine.failEngine(reason, e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.Searcher acquireSearcher(String source) {
|
||||
return acquireSearcher(source, Mode.READ);
|
||||
return acquireSearcher(source, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Engine.Searcher acquireSearcher(String source, Mode mode) {
|
||||
readAllowed(mode);
|
||||
public Engine.Searcher acquireSearcher(String source, boolean searcherForWriteOperation) {
|
||||
readAllowed(searcherForWriteOperation);
|
||||
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) {
|
||||
if (state == IndexShardState.CLOSED) {
|
||||
throw new IndexShardClosedException(shardId);
|
||||
|
@ -854,23 +798,20 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
}
|
||||
|
||||
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
|
||||
switch (mode) {
|
||||
case READ:
|
||||
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED) {
|
||||
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
||||
}
|
||||
break;
|
||||
case WRITE:
|
||||
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;
|
||||
if (writeOperation) {
|
||||
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");
|
||||
}
|
||||
} else {
|
||||
if (state != IndexShardState.STARTED && state != IndexShardState.RELOCATED) {
|
||||
throw new IllegalIndexShardStateException(shardId, state, "operations only allowed when started/relocated");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -939,9 +880,9 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
if (state == IndexShardState.CLOSED) {
|
||||
return;
|
||||
}
|
||||
TimeValue refreshInterval = settings.getAsTime(INDEX_REFRESH_INTERVAL, InternalIndexShard.this.refreshInterval);
|
||||
if (!refreshInterval.equals(InternalIndexShard.this.refreshInterval)) {
|
||||
logger.info("updating refresh_interval from [{}] to [{}]", InternalIndexShard.this.refreshInterval, refreshInterval);
|
||||
TimeValue refreshInterval = settings.getAsTime(INDEX_REFRESH_INTERVAL, IndexShard.this.refreshInterval);
|
||||
if (!refreshInterval.equals(IndexShard.this.refreshInterval)) {
|
||||
logger.info("updating refresh_interval from [{}] to [{}]", IndexShard.this.refreshInterval, refreshInterval);
|
||||
if (refreshScheduledFuture != null) {
|
||||
// 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
|
||||
|
@ -949,7 +890,7 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I
|
|||
FutureUtils.cancel(refreshScheduledFuture);
|
||||
refreshScheduledFuture = null;
|
||||
}
|
||||
InternalIndexShard.this.refreshInterval = refreshInterval;
|
||||
IndexShard.this.refreshInterval = refreshInterval;
|
||||
if (refreshInterval.millis() > 0) {
|
||||
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.settings.Settings;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
||||
|
||||
/**
|
||||
|
@ -30,19 +28,16 @@ import org.elasticsearch.index.warmer.ShardIndexWarmerService;
|
|||
*/
|
||||
public class IndexShardModule extends AbstractModule {
|
||||
|
||||
private final Settings settings;
|
||||
|
||||
private final ShardId shardId;
|
||||
|
||||
public IndexShardModule(Settings settings, ShardId shardId) {
|
||||
this.settings = settings;
|
||||
public IndexShardModule(ShardId shardId) {
|
||||
this.shardId = shardId;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(ShardId.class).toInstance(shardId);
|
||||
bind(IndexShard.class).to(InternalIndexShard.class).asEagerSingleton();
|
||||
bind(IndexShard.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.IndexShardState;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.repositories.RepositoriesService;
|
||||
import org.elasticsearch.snapshots.RestoreService;
|
||||
|
||||
|
@ -46,7 +45,7 @@ import org.elasticsearch.snapshots.RestoreService;
|
|||
*/
|
||||
public class IndexShardSnapshotAndRestoreService extends AbstractIndexShardComponent {
|
||||
|
||||
private final InternalIndexShard indexShard;
|
||||
private final IndexShard indexShard;
|
||||
|
||||
private final RepositoriesService repositoriesService;
|
||||
|
||||
|
@ -55,7 +54,7 @@ public class IndexShardSnapshotAndRestoreService extends AbstractIndexShardCompo
|
|||
@Inject
|
||||
public IndexShardSnapshotAndRestoreService(ShardId shardId, @IndexSettings Settings indexSettings, IndexShard indexShard, RepositoriesService repositoriesService, RestoreService restoreService) {
|
||||
super(shardId, indexSettings);
|
||||
this.indexShard = (InternalIndexShard) indexShard;
|
||||
this.indexShard = indexShard;
|
||||
this.repositoriesService = repositoriesService;
|
||||
this.restoreService = restoreService;
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ import org.elasticsearch.common.settings.Settings;
|
|||
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||
import org.elasticsearch.common.xcontent.*;
|
||||
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.snapshots.*;
|
||||
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.env.NodeEnvironment;
|
||||
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.store.DirectoryService;
|
||||
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.env.NodeEnvironment;
|
||||
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.store.DirectoryService;
|
||||
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.env.NodeEnvironment;
|
||||
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.store.DirectoryService;
|
||||
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.env.NodeEnvironment;
|
||||
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.store.DirectoryService;
|
||||
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.index.AbstractIndexComponent;
|
||||
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.IndexSettingsService;
|
||||
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.core.StringFieldMapper;
|
||||
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.shard.AbstractIndexShardComponent;
|
||||
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 java.io.IOException;
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.elasticsearch.common.unit.ByteSizeUnit;
|
|||
import org.elasticsearch.common.unit.ByteSizeValue;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.common.util.concurrent.FutureUtils;
|
||||
import org.elasticsearch.index.engine.Engine;
|
||||
import org.elasticsearch.index.engine.FlushNotAllowedEngineException;
|
||||
import org.elasticsearch.index.settings.IndexSettings;
|
||||
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.IndexShardState;
|
||||
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 java.util.concurrent.ScheduledFuture;
|
||||
|
|
|
@ -22,10 +22,10 @@ package org.elasticsearch.indices;
|
|||
import org.elasticsearch.cluster.routing.ShardRouting;
|
||||
import org.elasticsearch.common.Nullable;
|
||||
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.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
|
||||
|
@ -161,7 +161,7 @@ public interface IndicesLifecycle {
|
|||
/**
|
||||
* Called before the index gets deleted.
|
||||
* 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
|
||||
*/
|
||||
|
|
|
@ -63,7 +63,7 @@ public class IndicesModule extends AbstractModule implements SpawnModules {
|
|||
protected void configure() {
|
||||
bind(IndicesLifecycle.class).to(InternalIndicesLifecycle.class).asEagerSingleton();
|
||||
|
||||
bind(IndicesService.class).to(InternalIndicesService.class).asEagerSingleton();
|
||||
bind(IndicesService.class).asEagerSingleton();
|
||||
|
||||
bind(RecoverySettings.class).asEagerSingleton();
|
||||
bind(RecoveryTarget.class).asEagerSingleton();
|
||||
|
|
|
@ -19,48 +19,260 @@
|
|||
|
||||
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.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.LifecycleComponent;
|
||||
import org.elasticsearch.common.component.AbstractLifecycleComponent;
|
||||
import org.elasticsearch.common.inject.*;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
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.IndexService;
|
||||
import org.elasticsearch.index.settings.IndexSettingsModule;
|
||||
import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
||||
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.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> {
|
||||
|
||||
/**
|
||||
* Returns <tt>true</tt> if changes (adding / removing) indices, shards and so on are allowed.
|
||||
*/
|
||||
public boolean changesAllowed();
|
||||
private final InternalIndicesLifecycle indicesLifecycle;
|
||||
|
||||
private final IndicesAnalysisService indicesAnalysisService;
|
||||
|
||||
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
|
||||
* if old shards stats will be aggregated as well (only for relevant stats, such as
|
||||
* 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.
|
||||
*
|
||||
* 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>.
|
||||
|
@ -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.
|
||||
*/
|
||||
@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.
|
||||
*/
|
||||
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
|
||||
|
@ -84,7 +359,9 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
|||
* @param index the index to remove
|
||||
* @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
|
||||
|
@ -95,7 +372,122 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
|||
* @param index the index to 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
|
||||
|
@ -125,4 +517,4 @@ public interface IndicesService extends Iterable<IndexService>, LifecycleCompone
|
|||
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.settings.Settings;
|
||||
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.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
|
||||
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.search.stats.SearchStats;
|
||||
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.suggest.stats.SuggestStats;
|
||||
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.EsRejectedExecutionException;
|
||||
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.internal.SearchContext;
|
||||
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.util.concurrent.ConcurrentCollections;
|
||||
import org.elasticsearch.env.NodeEnvironment;
|
||||
import org.elasticsearch.index.Index;
|
||||
import org.elasticsearch.index.IndexShardAlreadyExistsException;
|
||||
import org.elasticsearch.index.IndexShardMissingException;
|
||||
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.mapper.DocumentMapper;
|
||||
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.shard.IndexShardState;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.indices.recovery.RecoveryFailedException;
|
||||
import org.elasticsearch.indices.recovery.RecoveryState;
|
||||
import org.elasticsearch.indices.recovery.RecoveryTarget;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
@ -552,7 +549,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
|||
continue;
|
||||
}
|
||||
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shard(shardId);
|
||||
IndexShard indexShard = indexService.shard(shardId);
|
||||
if (indexShard != null) {
|
||||
ShardRouting currentRoutingEntry = indexShard.routingEntry();
|
||||
// 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()) {
|
||||
logger.debug("[{}][{}] creating shard", shardRouting.index(), shardId);
|
||||
}
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.createShard(shardId);
|
||||
IndexShard indexShard = indexService.createShard(shardId);
|
||||
indexShard.routingEntry(shardRouting);
|
||||
indexShard.engine().addFailedEngineListener(failedEngineHandler);
|
||||
} catch (IndexShardAlreadyExistsException e) {
|
||||
|
@ -710,7 +707,7 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
|||
return;
|
||||
}
|
||||
}
|
||||
final InternalIndexShard indexShard = (InternalIndexShard) indexService.shardSafe(shardId);
|
||||
final IndexShard indexShard = indexService.shardSafe(shardId);
|
||||
|
||||
if (indexShard.ignoreRecoveryAttempt()) {
|
||||
// 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.IndexFieldDataCache;
|
||||
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.ShardUtils;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
||||
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.EngineClosedException;
|
||||
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.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.translog.Translog;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.monitor.jvm.JvmInfo;
|
||||
|
@ -164,8 +163,8 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
|||
for (IndexShard indexShard : activeToInactiveIndexingShards) {
|
||||
// update inactive indexing buffer size
|
||||
try {
|
||||
((InternalIndexShard) indexShard).engine().updateIndexingBufferSize(Engine.INACTIVE_SHARD_INDEXING_BUFFER);
|
||||
((InternalIndexShard) indexShard).translog().updateBuffer(Translog.INACTIVE_SHARD_TRANSLOG_BUFFER);
|
||||
((IndexShard) indexShard).engine().updateIndexingBufferSize(Engine.INACTIVE_SHARD_INDEXING_BUFFER);
|
||||
((IndexShard) indexShard).translog().updateBuffer(Translog.INACTIVE_SHARD_TRANSLOG_BUFFER);
|
||||
} catch (EngineClosedException e) {
|
||||
// ignore
|
||||
} catch (FlushNotAllowedEngineException e) {
|
||||
|
@ -194,7 +193,7 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
|||
|
||||
final long time = threadPool.estimatedTimeInMillis();
|
||||
|
||||
Translog translog = ((InternalIndexShard) indexShard).translog();
|
||||
Translog translog = ((IndexShard) indexShard).translog();
|
||||
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
||||
if (status == null) {
|
||||
status = new ShardIndexingStatus();
|
||||
|
@ -302,8 +301,8 @@ public class IndexingMemoryController extends AbstractLifecycleComponent<Indexin
|
|||
ShardIndexingStatus status = shardsIndicesStatus.get(indexShard.shardId());
|
||||
if (status == null || status.activeIndexing) {
|
||||
try {
|
||||
((InternalIndexShard) indexShard).engine().updateIndexingBufferSize(shardIndexingBufferSize);
|
||||
((InternalIndexShard) indexShard).translog().updateBuffer(shardTranslogBufferSize);
|
||||
((IndexShard) indexShard).engine().updateIndexingBufferSize(shardIndexingBufferSize);
|
||||
((IndexShard) indexShard).translog().updateBuffer(shardTranslogBufferSize);
|
||||
} catch (EngineClosedException e) {
|
||||
// ignore
|
||||
continue;
|
||||
|
|
|
@ -25,8 +25,7 @@ import org.elasticsearch.common.logging.ESLogger;
|
|||
import org.elasticsearch.common.util.concurrent.ConcurrentCollections;
|
||||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
@ -53,7 +52,7 @@ public class RecoveriesCollection {
|
|||
*
|
||||
* @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 existingStatus = onGoingRecoveries.putIfAbsent(status.recoveryId(), status);
|
||||
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.settings.Settings;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesLifecycle;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
|
@ -41,8 +40,6 @@ import org.elasticsearch.transport.TransportChannel;
|
|||
import org.elasticsearch.transport.TransportService;
|
||||
|
||||
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
|
||||
|
@ -92,7 +89,7 @@ public class RecoverySource extends AbstractComponent {
|
|||
|
||||
private RecoveryResponse recover(final StartRecoveryRequest request) {
|
||||
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
|
||||
// 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.ConcurrentCollections;
|
||||
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.StoreFileMetaData;
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
|||
|
||||
private final ShardId shardId;
|
||||
private final long recoveryId;
|
||||
private final InternalIndexShard indexShard;
|
||||
private final IndexShard indexShard;
|
||||
private final RecoveryState state;
|
||||
private final DiscoveryNode sourceNode;
|
||||
private final String tempFilePrefix;
|
||||
|
@ -71,7 +71,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
|||
private final ConcurrentMap<String, IndexOutput> openIndexOutputs = ConcurrentCollections.newConcurrentMap();
|
||||
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");
|
||||
this.recoveryId = idGenerator.incrementAndGet();
|
||||
this.listener = listener;
|
||||
|
@ -97,7 +97,7 @@ public class RecoveryStatus extends AbstractRefCounted {
|
|||
return shardId;
|
||||
}
|
||||
|
||||
public InternalIndexShard indexShard() {
|
||||
public IndexShard indexShard() {
|
||||
ensureRefCount();
|
||||
return indexShard;
|
||||
}
|
||||
|
|
|
@ -40,8 +40,7 @@ import org.elasticsearch.index.shard.IllegalIndexShardStateException;
|
|||
import org.elasticsearch.index.shard.IndexShardClosedException;
|
||||
import org.elasticsearch.index.shard.IndexShardNotStartedException;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.store.Store;
|
||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||
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 {
|
||||
indexShard.recovering("from " + sourceNode);
|
||||
} catch (IllegalIndexShardStateException e) {
|
||||
|
|
|
@ -21,7 +21,6 @@ package org.elasticsearch.indices.recovery;
|
|||
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.apache.lucene.index.CorruptIndexException;
|
||||
import org.apache.lucene.store.IOContext;
|
||||
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.engine.Engine;
|
||||
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.IndexShardClosedException;
|
||||
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.StoreFileMetaData;
|
||||
import org.elasticsearch.index.translog.Translog;
|
||||
|
@ -75,7 +74,7 @@ public final class ShardRecoveryHandler implements Engine.RecoveryHandler {
|
|||
|
||||
private final ESLogger logger;
|
||||
// Shard that is going to be recovered (the "source")
|
||||
private final InternalIndexShard shard;
|
||||
private final IndexShard shard;
|
||||
private final String indexName;
|
||||
private final int shardId;
|
||||
// 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 TimeValue internalActionLongTimeout, final ClusterService clusterService,
|
||||
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.ByteSizeValue;
|
||||
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.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.node.settings.NodeSettingsService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
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.unit.TimeValue;
|
||||
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.service.InternalIndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.store.Store;
|
||||
import org.elasticsearch.index.store.StoreFileMetaData;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.threadpool.ThreadPool;
|
||||
import org.elasticsearch.transport.TransportService;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
|
@ -146,7 +145,7 @@ public class TransportNodesListShardStoreMetaData extends TransportNodesOperatio
|
|||
private StoreFilesMetaData listStoreMetaData(ShardId shardId) throws IOException {
|
||||
IndexService indexService = indicesService.indexService(shardId.index().name());
|
||||
if (indexService != null) {
|
||||
InternalIndexShard indexShard = (InternalIndexShard) indexService.shard(shardId.id());
|
||||
IndexShard indexShard = indexService.shard(shardId.id());
|
||||
if (indexShard != null) {
|
||||
final Store store = indexShard.store();
|
||||
store.incRef();
|
||||
|
|
|
@ -46,9 +46,9 @@ import org.elasticsearch.index.mapper.FieldMappers;
|
|||
import org.elasticsearch.index.mapper.Uid;
|
||||
import org.elasticsearch.index.mapper.internal.TTLFieldMapper;
|
||||
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.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.index.engine.Engine;
|
||||
import org.elasticsearch.index.shard.ShardId;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
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.settings.Settings;
|
||||
import org.elasticsearch.common.unit.TimeValue;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.ParsedFilter;
|
||||
import org.elasticsearch.index.query.ParsedQuery;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.similarity.SimilarityService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
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.query.ParsedQuery;
|
||||
import org.elasticsearch.index.search.nested.NonNestedDocsFilter;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.percolator.QueryCollector.Count;
|
||||
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.query.TemplateQueryParser;
|
||||
import org.elasticsearch.index.search.stats.StatsGroupsParseElement;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.indices.IndicesLifecycle;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
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.ParsedFilter;
|
||||
import org.elasticsearch.index.query.ParsedQuery;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.shard.service.IndexShard;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.index.shard.IndexShard;
|
||||
import org.elasticsearch.index.similarity.SimilarityService;
|
||||
import org.elasticsearch.script.ScriptService;
|
||||
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.ParsedFilter;
|
||||
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.script.ScriptService;
|
||||
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.ParsedQuery;
|
||||
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.script.ScriptService;
|
||||
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.FilterBuilders;
|
||||
import org.elasticsearch.index.query.TermFilterBuilder;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.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.XContentFactory;
|
||||
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.test.ElasticsearchSingleNodeTest;
|
||||
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.internal.UidFieldMapper;
|
||||
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.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
package org.elasticsearch.index.engine.internal;
|
||||
|
||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
|
||||
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.store.RAMDirectory;
|
||||
import org.apache.lucene.util.LuceneTestCase.SuppressCodecs;
|
||||
import org.elasticsearch.common.lucene.Lucene;
|
||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
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.MapperBuilders;
|
||||
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.test.ElasticsearchSingleNodeTest;
|
||||
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.MapperBuilders;
|
||||
import org.elasticsearch.index.mapper.core.*;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
|
||||
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.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchIntegrationTest;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
import org.junit.Test;
|
||||
|
||||
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.IndexableField;
|
||||
import org.elasticsearch.common.compress.CompressedString;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||
import org.elasticsearch.index.mapper.ParsedDocument;
|
||||
import org.elasticsearch.index.mapper.internal.BoostFieldMapper;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.indices.IndicesService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
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.core.LongFieldMapper;
|
||||
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.junit.Test;
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import org.elasticsearch.index.mapper.DocumentMapper;
|
|||
import org.elasticsearch.index.mapper.FieldMappers;
|
||||
import org.elasticsearch.index.mapper.ParsedDocument;
|
||||
import org.elasticsearch.index.mapper.StrictDynamicMappingException;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
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.core.*;
|
||||
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.junit.Test;
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ package org.elasticsearch.index.mapper.null_value;
|
|||
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.index.mapper.MapperParsingException;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
import org.junit.Test;
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.settings.ImmutableSettings;
|
|||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.index.mapper.*;
|
||||
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.junit.Test;
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.common.xcontent.XContentType;
|
||||
import org.elasticsearch.index.mapper.*;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
import org.junit.Test;
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
package org.elasticsearch.index.mapper.string;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import org.apache.lucene.index.FieldInfo;
|
||||
import org.apache.lucene.index.DocValuesType;
|
||||
import org.apache.lucene.index.IndexOptions;
|
||||
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.ParseContext.Document;
|
||||
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.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
|
|
@ -28,7 +28,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.index.mapper.*;
|
||||
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.junit.Test;
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder;
|
|||
import org.elasticsearch.common.xcontent.XContentFactory;
|
||||
import org.elasticsearch.index.mapper.DocumentMapper;
|
||||
import org.elasticsearch.index.mapper.MapperService;
|
||||
import org.elasticsearch.index.service.IndexService;
|
||||
import org.elasticsearch.index.IndexService;
|
||||
import org.elasticsearch.test.ElasticsearchSingleNodeTest;
|
||||
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