|
|
@@ -96,7 +96,6 @@ import java.util.function.LongUnaryOperator;
|
|
|
import java.util.function.Supplier;
|
|
|
|
|
|
import static java.util.Collections.emptyMap;
|
|
|
-import static java.util.Collections.unmodifiableMap;
|
|
|
import static org.elasticsearch.core.Strings.format;
|
|
|
|
|
|
public class IndexService extends AbstractIndexComponent implements IndicesClusterStateService.AllocatedIndex<IndexShard> {
|
|
|
@@ -118,7 +117,7 @@ public class IndexService extends AbstractIndexComponent implements IndicesClust
|
|
|
private final SimilarityService similarityService;
|
|
|
private final EngineFactory engineFactory;
|
|
|
private final IndexWarmer warmer;
|
|
|
- private volatile Map<Integer, IndexShard> shards = emptyMap();
|
|
|
+ private volatile Map<Integer, IndexShard> shards = Map.of();
|
|
|
private final AtomicBoolean closed = new AtomicBoolean(false);
|
|
|
private final AtomicBoolean deleted = new AtomicBoolean(false);
|
|
|
private final IndexSettings indexSettings;
|
|
|
@@ -523,16 +522,13 @@ public class IndexService extends AbstractIndexComponent implements IndicesClust
|
|
|
|
|
|
@Override
|
|
|
public synchronized void removeShard(int shardId, String reason) {
|
|
|
- final ShardId sId = new ShardId(index(), shardId);
|
|
|
- final IndexShard indexShard;
|
|
|
- if (shards.containsKey(shardId) == false) {
|
|
|
+ final IndexShard indexShard = shards.get(shardId);
|
|
|
+ if (indexShard == null) {
|
|
|
return;
|
|
|
}
|
|
|
logger.debug("[{}] closing... (reason: [{}])", shardId, reason);
|
|
|
- HashMap<Integer, IndexShard> newShards = new HashMap<>(shards);
|
|
|
- indexShard = newShards.remove(shardId);
|
|
|
- shards = unmodifiableMap(newShards);
|
|
|
- closeShard(reason, sId, indexShard, indexShard.store(), indexShard.getIndexEventListener());
|
|
|
+ shards = Maps.copyMapWithRemovedEntry(shards, shardId);
|
|
|
+ closeShard(reason, indexShard.shardId(), indexShard, indexShard.store(), indexShard.getIndexEventListener());
|
|
|
logger.debug("[{}] closed (reason: [{}])", shardId, reason);
|
|
|
}
|
|
|
|