Elasticsearch Version
7.x, 8.x
Installed Plugins
No response
Java Version
bundled
OS Version
Darwin
Problem Description
We sometimes see indices with settings that have invalid values.
eg partially mounted indices that can only live in the frozen tier, somehow end up having a _tier_preference that's not data_frozen
only the [data_frozen] tier preference may be used for partial searchable snapshots (got: [data_content])]
The bigger problem is that updating the _tier_preference setting to a correct value is not possible in this case. We see stack traces in the form of:
at org.elasticsearch.cluster.routing.allocation.DataTier$DataTierSettingValidator.validate(DataTier.java:302)
at org.elasticsearch.cluster.routing.allocation.DataTier$DataTierSettingValidator.validate(DataTier.java:269)
at org.elasticsearch.common.settings.Setting.get(Setting.java:515)
at org.elasticsearch.common.settings.Setting.get(Setting.java:485)
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:598)
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:507)
at org.elasticsearch.common.settings.AbstractScopedSettings.validate(AbstractScopedSettings.java:477)
at org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:696)
at org.elasticsearch.indices.IndicesService.verifyIndexMetadata(IndicesService.java:810)
at org.elasticsearch.cluster.metadata.MetadataUpdateSettingsService$1.execute(MetadataUpdateSettingsService.java:271)
at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:51)
at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:836)
at org.elasticsearch.cluster.service.MasterService.calculateTaskOutputs(MasterService.java:403)
at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:243)
at org.elasticsearch.cluster.service.MasterService.access$100(MasterService.java:63)
at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:170)
at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:146)
at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:202)
The problem here is that MetadataUpdateSettingsService calls into IndicesService.verifyIndexMetadata which in turn attempts to create an IndexService using the current, invalid, IndexMetadata https://github.com/elastic/elasticsearch/blob/master/server%2Fsrc%2Fmain%2Fjava%2Forg%2Felasticsearch%2Findices%2FIndicesService.java#L794
Currently we have two solutions:
- delete the problematic indices in one
DELETE call and then mount them again from snapshot OR
- upgrade to a higher version of Elasticsearch as we automatically
update the tier preference for partially mounted indices to the correct data_frozen value
( code )
Steps to Reproduce
We're not sure yet how to get into this situation.
Logs (if relevant)
No response
Elasticsearch Version
7.x, 8.x
Installed Plugins
No response
Java Version
bundled
OS Version
Darwin
Problem Description
We sometimes see indices with settings that have invalid values.
eg partially mounted indices that can only live in the frozen tier, somehow end up having a
_tier_preferencethat's notdata_frozenThe bigger problem is that updating the
_tier_preferencesetting to a correct value is not possible in this case. We see stack traces in the form of:The problem here is that
MetadataUpdateSettingsServicecalls intoIndicesService.verifyIndexMetadatawhich in turn attempts to create anIndexServiceusing the current, invalid,IndexMetadatahttps://github.com/elastic/elasticsearch/blob/master/server%2Fsrc%2Fmain%2Fjava%2Forg%2Felasticsearch%2Findices%2FIndicesService.java#L794Currently we have two solutions:
DELETEcall and then mount them again from snapshot ORupdate the tier preference for partially mounted indices to the correct
data_frozenvalue( code )
Steps to Reproduce
We're not sure yet how to get into this situation.
Logs (if relevant)
No response