Skip to content

Commit 7ac0060

Browse files
Speed up Searchable Snapshot Allocator (#83186)
This one still shows up a lot in profiling even when not using searchable snapshots just because these settings are so costly to look up. => fixed the standard way by moving the setting up to index metadata
1 parent 0873893 commit 7ac0060

File tree

32 files changed

+82
-105
lines changed

32 files changed

+82
-105
lines changed

server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadata.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.elasticsearch.index.shard.IndexLongFieldRange;
4545
import org.elasticsearch.index.shard.ShardId;
4646
import org.elasticsearch.rest.RestStatus;
47+
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
4748
import org.elasticsearch.xcontent.ToXContent;
4849
import org.elasticsearch.xcontent.ToXContentFragment;
4950
import org.elasticsearch.xcontent.XContentBuilder;
@@ -73,6 +74,7 @@
7374
import static org.elasticsearch.cluster.node.DiscoveryNodeFilters.validateIpValue;
7475
import static org.elasticsearch.common.settings.Settings.readSettingsFromStream;
7576
import static org.elasticsearch.common.settings.Settings.writeSettingsToStream;
77+
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOT_PARTIAL_SETTING_KEY;
7678

7779
public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragment {
7880

@@ -505,6 +507,10 @@ public static APIBlock readFrom(StreamInput input) throws IOException {
505507

506508
private final AutoExpandReplicas autoExpandReplicas;
507509

510+
private final boolean isSearchableSnapshot;
511+
512+
private final boolean isPartialSearchableSnapshot;
513+
508514
private IndexMetadata(
509515
final Index index,
510516
final long version,
@@ -539,7 +545,9 @@ private IndexMetadata(
539545
@Nullable final List<String> tierPreference,
540546
final int shardsPerNodeLimit,
541547
final LifecycleExecutionState lifecycleExecutionState,
542-
final AutoExpandReplicas autoExpandReplicas
548+
final AutoExpandReplicas autoExpandReplicas,
549+
final boolean isSearchableSnapshot,
550+
final boolean isPartialSearchableSnapshot
543551
) {
544552
this.index = index;
545553
this.version = version;
@@ -582,6 +590,8 @@ private IndexMetadata(
582590
this.shardsPerNodeLimit = shardsPerNodeLimit;
583591
this.lifecycleExecutionState = lifecycleExecutionState;
584592
this.autoExpandReplicas = autoExpandReplicas;
593+
this.isSearchableSnapshot = isSearchableSnapshot;
594+
this.isPartialSearchableSnapshot = isPartialSearchableSnapshot;
585595
assert numberOfShards * routingFactor == routingNumShards : routingNumShards + " must be a multiple of " + numberOfShards;
586596
}
587597

@@ -623,7 +633,9 @@ IndexMetadata withMappingMetadata(MappingMetadata mapping) {
623633
this.tierPreference,
624634
this.shardsPerNodeLimit,
625635
this.lifecycleExecutionState,
626-
this.autoExpandReplicas
636+
this.autoExpandReplicas,
637+
this.isSearchableSnapshot,
638+
this.isPartialSearchableSnapshot
627639
);
628640
}
629641

@@ -755,6 +767,14 @@ public AutoExpandReplicas getAutoExpandReplicas() {
755767
return autoExpandReplicas;
756768
}
757769

770+
public boolean isSearchableSnapshot() {
771+
return isSearchableSnapshot;
772+
}
773+
774+
public boolean isPartialSearchableSnapshot() {
775+
return isPartialSearchableSnapshot;
776+
}
777+
758778
/**
759779
* Return the concrete mapping for this index or {@code null} if this index has no mappings at all.
760780
*/
@@ -1588,6 +1608,7 @@ public IndexMetadata build() {
15881608
lifecycleExecutionState = LifecycleExecutionState.EMPTY_STATE;
15891609
}
15901610

1611+
final boolean isSearchableSnapshot = SearchableSnapshotsSettings.isSearchableSnapshotStore(settings);
15911612
return new IndexMetadata(
15921613
new Index(index, uuid),
15931614
version,
@@ -1622,7 +1643,9 @@ public IndexMetadata build() {
16221643
tierPreference,
16231644
ShardsLimitAllocationDecider.INDEX_TOTAL_SHARDS_PER_NODE_SETTING.get(settings),
16241645
lifecycleExecutionState,
1625-
AutoExpandReplicas.SETTING.get(settings)
1646+
AutoExpandReplicas.SETTING.get(settings),
1647+
isSearchableSnapshot,
1648+
isSearchableSnapshot && settings.getAsBoolean(SEARCHABLE_SNAPSHOT_PARTIAL_SETTING_KEY, false)
16261649
);
16271650
}
16281651

server/src/main/java/org/elasticsearch/cluster/metadata/IndexMetadataVerifier.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
import java.util.Map;
3737
import java.util.Set;
3838

39-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isPartialSearchableSnapshotIndex;
40-
4139
/**
4240
* This service is responsible for verifying index metadata when an index is introduced
4341
* to the cluster, for example when restarting nodes, importing dangling indices, or restoring
@@ -240,9 +238,9 @@ IndexMetadata archiveBrokenIndexSettings(IndexMetadata indexMetadata) {
240238
* _tier_preference: data_frozen, removing any pre-existing tier allocation rules.
241239
*/
242240
IndexMetadata convertSharedCacheTierPreference(IndexMetadata indexMetadata) {
243-
final Settings settings = indexMetadata.getSettings();
244241
// Only remove these settings for a shared_cache searchable snapshot
245-
if (isPartialSearchableSnapshotIndex(settings)) {
242+
if (indexMetadata.isPartialSearchableSnapshot()) {
243+
final Settings settings = indexMetadata.getSettings();
246244
final Settings.Builder settingsBuilder = Settings.builder().put(settings);
247245
// Clear any allocation rules other than preference for tier
248246
settingsBuilder.remove("index.routing.allocation.include._tier");

server/src/main/java/org/elasticsearch/cluster/metadata/MetadataCreateIndexService.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
import static org.elasticsearch.cluster.metadata.MetadataIndexTemplateService.resolveSettings;
106106
import static org.elasticsearch.index.IndexModule.INDEX_RECOVERY_TYPE_SETTING;
107107
import static org.elasticsearch.index.IndexModule.INDEX_STORE_TYPE_SETTING;
108-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
109108

110109
/**
111110
* Service responsible for submitting create index requests
@@ -1307,7 +1306,7 @@ private static List<String> validateIndexCustomPath(Settings settings, @Nullable
13071306
*/
13081307
static List<String> validateShrinkIndex(ClusterState state, String sourceIndex, String targetIndexName, Settings targetIndexSettings) {
13091308
IndexMetadata sourceMetadata = validateResize(state, sourceIndex, targetIndexName, targetIndexSettings);
1310-
if (isSearchableSnapshotStore(sourceMetadata.getSettings())) {
1309+
if (sourceMetadata.isSearchableSnapshot()) {
13111310
throw new IllegalArgumentException("can't shrink searchable snapshot index [" + sourceIndex + ']');
13121311
}
13131312
assert INDEX_NUMBER_OF_SHARDS_SETTING.exists(targetIndexSettings);
@@ -1340,15 +1339,15 @@ static List<String> validateShrinkIndex(ClusterState state, String sourceIndex,
13401339

13411340
static void validateSplitIndex(ClusterState state, String sourceIndex, String targetIndexName, Settings targetIndexSettings) {
13421341
IndexMetadata sourceMetadata = validateResize(state, sourceIndex, targetIndexName, targetIndexSettings);
1343-
if (isSearchableSnapshotStore(sourceMetadata.getSettings())) {
1342+
if (sourceMetadata.isSearchableSnapshot()) {
13441343
throw new IllegalArgumentException("can't split searchable snapshot index [" + sourceIndex + ']');
13451344
}
13461345
IndexMetadata.selectSplitShard(0, sourceMetadata, INDEX_NUMBER_OF_SHARDS_SETTING.get(targetIndexSettings));
13471346
}
13481347

13491348
static void validateCloneIndex(ClusterState state, String sourceIndex, String targetIndexName, Settings targetIndexSettings) {
13501349
IndexMetadata sourceMetadata = validateResize(state, sourceIndex, targetIndexName, targetIndexSettings);
1351-
if (isSearchableSnapshotStore(sourceMetadata.getSettings())) {
1350+
if (sourceMetadata.isSearchableSnapshot()) {
13521351
for (Setting<?> nonCloneableSetting : Arrays.asList(INDEX_STORE_TYPE_SETTING, INDEX_RECOVERY_TYPE_SETTING)) {
13531352
if (nonCloneableSetting.exists(targetIndexSettings) == false) {
13541353
throw new IllegalArgumentException(

server/src/main/java/org/elasticsearch/index/shard/StoreRecovery.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@
5454

5555
import static org.elasticsearch.common.lucene.Lucene.indexWriterConfigWithNoMerging;
5656
import static org.elasticsearch.core.TimeValue.timeValueMillis;
57-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
5857

5958
/**
6059
* This package private utility class encapsulates the logic to recover an index shard from either an existing index on
@@ -552,7 +551,7 @@ private void restore(
552551
}
553552

554553
public static void bootstrap(final IndexShard indexShard, final Store store) throws IOException {
555-
if (isSearchableSnapshotStore(indexShard.indexSettings().getSettings()) == false) {
554+
if (indexShard.indexSettings.getIndexMetadata().isSearchableSnapshot() == false) {
556555
// not bootstrapping new history for searchable snapshots (which are read-only) allows sequence-number based peer recoveries
557556
store.bootstrapNewHistory();
558557
}

server/src/main/java/org/elasticsearch/indices/recovery/PeerRecoveryTargetService.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@
6666

6767
import static org.elasticsearch.core.TimeValue.timeValueMillis;
6868
import static org.elasticsearch.index.seqno.SequenceNumbers.UNASSIGNED_SEQ_NO;
69-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
7069

7170
/**
7271
* The recovery target handles recoveries of peer shards of the shard+node to recover to.
@@ -228,7 +227,7 @@ private void doRecovery(final long recoveryId, final StartRecoveryRequest preExi
228227
assert recoveryTarget.sourceNode() != null : "can not do a recovery without a source node";
229228
logger.trace("{} preparing shard for peer recovery", recoveryTarget.shardId());
230229
indexShard.prepareForIndexRecovery();
231-
if (isSearchableSnapshotStore(indexShard.indexSettings().getSettings())) {
230+
if (indexShard.indexSettings().getIndexMetadata().isSearchableSnapshot()) {
232231
// for searchable snapshots, peer recovery is treated similarly to recovery from snapshot
233232
indexShard.getIndexEventListener().afterFilesRestoredFromRepository(indexShard);
234233
final Store store = indexShard.store();

server/src/main/java/org/elasticsearch/repositories/RepositoriesService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
import static java.util.Collections.unmodifiableMap;
6464
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOTS_REPOSITORY_NAME_SETTING_KEY;
6565
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.SEARCHABLE_SNAPSHOTS_REPOSITORY_UUID_SETTING_KEY;
66-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
6766

6867
/**
6968
* Service responsible for maintaining and providing access to snapshot repositories on nodes.
@@ -734,7 +733,7 @@ private static void ensureNoSearchableSnapshotsIndicesInUse(ClusterState cluster
734733
long count = 0L;
735734
List<Index> indices = null;
736735
for (IndexMetadata indexMetadata : clusterState.metadata()) {
737-
if (indexSettingsMatchRepositoryMetadata(indexMetadata.getSettings(), repositoryMetadata)) {
736+
if (indexSettingsMatchRepositoryMetadata(indexMetadata, repositoryMetadata)) {
738737
if (indices == null) {
739738
indices = new ArrayList<>();
740739
}
@@ -756,8 +755,9 @@ private static void ensureNoSearchableSnapshotsIndicesInUse(ClusterState cluster
756755
}
757756
}
758757

759-
private static boolean indexSettingsMatchRepositoryMetadata(Settings indexSettings, RepositoryMetadata repositoryMetadata) {
760-
if (isSearchableSnapshotStore(indexSettings)) {
758+
private static boolean indexSettingsMatchRepositoryMetadata(IndexMetadata indexMetadata, RepositoryMetadata repositoryMetadata) {
759+
if (indexMetadata.isSearchableSnapshot()) {
760+
final Settings indexSettings = indexMetadata.getSettings();
761761
final String indexRepositoryUuid = indexSettings.get(SEARCHABLE_SNAPSHOTS_REPOSITORY_UUID_SETTING_KEY);
762762
if (Strings.hasLength(indexRepositoryUuid)) {
763763
return Objects.equals(repositoryMetadata.uuid(), indexRepositoryUuid);

server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@
150150
import java.util.stream.Stream;
151151

152152
import static org.elasticsearch.index.snapshots.blobstore.BlobStoreIndexShardSnapshot.FileInfo.canonicalName;
153-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
154153

155154
/**
156155
* BlobStore - based implementation of Snapshot Repository
@@ -2679,7 +2678,7 @@ public void snapshotShard(SnapshotShardContext context) {
26792678
long indexTotalFileSize = 0;
26802679
final BlockingQueue<BlobStoreIndexShardSnapshot.FileInfo> filesToSnapshot = new LinkedBlockingQueue<>();
26812680

2682-
if (isSearchableSnapshotStore(store.indexSettings().getSettings())) {
2681+
if (store.indexSettings().getIndexMetadata().isSearchableSnapshot()) {
26832682
indexCommitPointFiles = Collections.emptyList();
26842683
} else if (filesFromSegmentInfos == null) {
26852684
// If we did not find a set of files that is equal to the current commit we determine the files to upload by comparing files

server/src/main/java/org/elasticsearch/repositories/blobstore/FileRestoreContext.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131

3232
import static java.util.Collections.emptyMap;
3333
import static java.util.Collections.unmodifiableMap;
34-
import static org.elasticsearch.snapshots.SearchableSnapshotsSettings.isSearchableSnapshotStore;
3534

3635
/**
3736
* This context will execute a file restore of the lucene files. It is primarily designed to be used to
@@ -69,7 +68,7 @@ public void restore(SnapshotFiles snapshotFiles, Store store, ActionListener<Voi
6968
store.incRef();
7069
try {
7170
final List<BlobStoreIndexShardSnapshot.FileInfo> filesToRecover = new ArrayList<>();
72-
if (isSearchableSnapshotStore(store.indexSettings().getSettings())) {
71+
if (store.indexSettings().getIndexMetadata().isSearchableSnapshot()) {
7372
for (BlobStoreIndexShardSnapshot.FileInfo fileInfo : snapshotFiles.indexFiles()) {
7473
assert store.directory().fileLength(fileInfo.physicalName()) == fileInfo.length();
7574
recoveryState.getIndex().addFileDetail(fileInfo.physicalName(), fileInfo.length(), true);

x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/AutoFollowCoordinator.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.elasticsearch.index.Index;
3838
import org.elasticsearch.index.IndexSettings;
3939
import org.elasticsearch.license.LicenseUtils;
40-
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
4140
import org.elasticsearch.transport.NoSuchRemoteClusterException;
4241
import org.elasticsearch.xpack.ccr.Ccr;
4342
import org.elasticsearch.xpack.ccr.CcrLicenseChecker;
@@ -600,8 +599,8 @@ private void checkAutoFollowPattern(
600599
)
601600
);
602601
} else {
603-
final Settings leaderIndexSettings = remoteMetadata.getIndexSafe(indexToFollow).getSettings();
604-
if (IndexSettings.INDEX_SOFT_DELETES_SETTING.get(leaderIndexSettings) == false) {
602+
final IndexMetadata leaderIndexMetadata = remoteMetadata.getIndexSafe(indexToFollow);
603+
if (IndexSettings.INDEX_SOFT_DELETES_SETTING.get(leaderIndexMetadata.getSettings()) == false) {
605604
String message = String.format(
606605
Locale.ROOT,
607606
"index [%s] cannot be followed, because soft deletes are not enabled",
@@ -615,7 +614,7 @@ private void checkAutoFollowPattern(
615614
}
616615
groupedListener.onResponse(new Tuple<>(indexToFollow, failure));
617616
});
618-
} else if (SearchableSnapshotsSettings.isSearchableSnapshotStore(leaderIndexSettings)) {
617+
} else if (leaderIndexMetadata.isSearchableSnapshot()) {
619618
String message = String.format(
620619
Locale.ROOT,
621620
"index to follow [%s] is a searchable snapshot index and cannot be used for cross-cluster replication purpose",

x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportPutFollowAction.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.elasticsearch.license.LicenseUtils;
3636
import org.elasticsearch.snapshots.RestoreInfo;
3737
import org.elasticsearch.snapshots.RestoreService;
38-
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
3938
import org.elasticsearch.tasks.Task;
4039
import org.elasticsearch.threadpool.ThreadPool;
4140
import org.elasticsearch.transport.TransportService;
@@ -135,7 +134,7 @@ private void createFollowerIndex(
135134
);
136135
return;
137136
}
138-
if (SearchableSnapshotsSettings.isSearchableSnapshotStore(leaderIndexMetadata.getSettings())) {
137+
if (leaderIndexMetadata.isSearchableSnapshot()) {
139138
listener.onFailure(
140139
new IllegalArgumentException(
141140
"leader index ["

x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/TransportResumeFollowAction.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import org.elasticsearch.indices.IndicesService;
4444
import org.elasticsearch.license.LicenseUtils;
4545
import org.elasticsearch.persistent.PersistentTasksService;
46-
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
4746
import org.elasticsearch.tasks.Task;
4847
import org.elasticsearch.threadpool.ThreadPool;
4948
import org.elasticsearch.transport.TransportService;
@@ -246,7 +245,7 @@ static void validate(
246245
"leader index [" + leaderIndex.getIndex().getName() + "] does not have soft deletes enabled"
247246
);
248247
}
249-
if (SearchableSnapshotsSettings.isSearchableSnapshotStore(leaderIndex.getSettings())) {
248+
if (leaderIndex.isSearchableSnapshot()) {
250249
throw new IllegalArgumentException(
251250
"leader index ["
252251
+ leaderIndex.getIndex().getName()
@@ -256,7 +255,7 @@ static void validate(
256255
if (IndexSettings.INDEX_SOFT_DELETES_SETTING.get(followIndex.getSettings()) == false) {
257256
throw new IllegalArgumentException("follower index [" + request.getFollowerIndex() + "] does not have soft deletes enabled");
258257
}
259-
if (SearchableSnapshotsSettings.isSearchableSnapshotStore(followIndex.getSettings())) {
258+
if (followIndex.isSearchableSnapshot()) {
260259
throw new IllegalArgumentException(
261260
"follower index ["
262261
+ request.getFollowerIndex()

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/XPackPlugin.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@
5959
import org.elasticsearch.rest.RestController;
6060
import org.elasticsearch.rest.RestHandler;
6161
import org.elasticsearch.script.ScriptService;
62-
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
6362
import org.elasticsearch.snapshots.sourceonly.SourceOnlySnapshotRepository;
6463
import org.elasticsearch.threadpool.ThreadPool;
6564
import org.elasticsearch.watcher.ResourceWatcherService;
@@ -437,7 +436,7 @@ public Map<String, Repository.Factory> getRepositories(
437436
@Override
438437
public Optional<EngineFactory> getEngineFactory(IndexSettings indexSettings) {
439438
if (indexSettings.getValue(SourceOnlySnapshotRepository.SOURCE_ONLY)
440-
&& SearchableSnapshotsSettings.isSearchableSnapshotStore(indexSettings.getSettings()) == false) {
439+
&& indexSettings.getIndexMetadata().isSearchableSnapshot() == false) {
441440
return Optional.of(SourceOnlySnapshotRepository.getEngineFactory());
442441
}
443442

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ilm/MigrateAction.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@
99
import org.apache.logging.log4j.LogManager;
1010
import org.apache.logging.log4j.Logger;
1111
import org.elasticsearch.client.internal.Client;
12+
import org.elasticsearch.cluster.metadata.IndexMetadata;
1213
import org.elasticsearch.cluster.routing.allocation.DataTier;
1314
import org.elasticsearch.common.Strings;
1415
import org.elasticsearch.common.io.stream.StreamInput;
1516
import org.elasticsearch.common.io.stream.StreamOutput;
16-
import org.elasticsearch.common.settings.Settings;
17-
import org.elasticsearch.snapshots.SearchableSnapshotsSettings;
1817
import org.elasticsearch.xcontent.ConstructingObjectParser;
1918
import org.elasticsearch.xcontent.ParseField;
2019
import org.elasticsearch.xcontent.XContentBuilder;
@@ -106,11 +105,11 @@ public List<Step> toSteps(Client client, String phase, StepKey nextStepKey) {
106105
migrationKey,
107106
nextStepKey,
108107
(index, clusterState) -> {
109-
Settings indexSettings = clusterState.metadata().index(index).getSettings();
108+
IndexMetadata indexMetadata = clusterState.metadata().index(index);
110109

111110
// partially mounted indices will already have data_frozen, and we don't want to change that if they do
112-
if (SearchableSnapshotsSettings.isPartialSearchableSnapshotIndex(indexSettings)) {
113-
String policyName = LifecycleSettings.LIFECYCLE_NAME_SETTING.get(indexSettings);
111+
if (indexMetadata.isPartialSearchableSnapshot()) {
112+
String policyName = LifecycleSettings.LIFECYCLE_NAME_SETTING.get(indexMetadata.getSettings());
114113
logger.debug(
115114
"[{}] action in policy [{}] is configured for index [{}] which is a partially mounted index. "
116115
+ "skipping this action",

0 commit comments

Comments
 (0)