Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable index.mapper.dynamic index setting validation. #109160

Conversation

martijnvg
Copy link
Member

@martijnvg martijnvg commented May 29, 2024

This setting was removed via #25734, because the setting no longer used since 6.0.0

However, the validation only kicked when trying to set this setting on a closed index. Applying the setting on an open index would just work. With severe consequences later on. For example when upgrading the cluster, nodes would refuse to boot, because the validation would kick in.

Relates to #96075

This setting was removed via elastic#25734, because the setting no longer used since 6.0.0

However, the validation only kicked when trying to set this setting on a closed index. Applying the setting on an open index would just work. With severe consequences later on. For example when upgrading the cluster, nodes would refuse to boot, because the validation would kick in.
@martijnvg martijnvg added >bug :StorageEngine/Mapping The storage related side of mappings v7.17.22 labels May 29, 2024
@elasticsearchmachine
Copy link
Collaborator

Hi @martijnvg, I've created a changelog YAML for you.

Copy link
Contributor

@henningandersen henningandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

(provided CI passes).

@martijnvg martijnvg marked this pull request as ready for review May 29, 2024 13:01
@elasticsearchmachine
Copy link
Collaborator

Pinging @elastic/es-storage-engine (Team:StorageEngine)

@martijnvg martijnvg added the auto-merge Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) label May 29, 2024
@elasticsearchmachine elasticsearchmachine merged commit e4ef0ff into elastic:7.17 May 29, 2024
10 checks passed
@martijnvg martijnvg deleted the disable_index_mapper_dynamic_validation branch May 29, 2024 13:42
martijnvg added a commit to martijnvg/elasticsearch that referenced this pull request Jun 3, 2024
martijnvg added a commit to martijnvg/elasticsearch that referenced this pull request Jun 3, 2024
martijnvg added a commit that referenced this pull request Jun 4, 2024
…ug. (#109301)

This is for 7.17 branch only. The test in main branch would be a little bit different.


Relates to #109160 and #96075
martijnvg added a commit to martijnvg/elasticsearch that referenced this pull request Jun 4, 2024
Forward port from elastic#109301 to main branch only, and also checks whether the setting gets archived.

Relates to elastic#109160 and elastic#96075
elasticsearchmachine pushed a commit that referenced this pull request Jun 11, 2024
Currently when upgrading a 7.x cluster to 8.x with
`index.mapper.dynamic` index setting defined the following happens:

- In case of a full cluster restart upgrade, then the index setting gets archived and after the upgrade the cluster is in a green health.
- In case of a rolling cluster restart upgrade, then shards of indices with the index setting fail to allocate as nodes start with 8.x version. The result is that the cluster has a red health and the index setting isn't archived. Closing and opening the index should archive the index setting and allocate the shards.

The change is about ensuring the same behavior happens when upgrading a
cluster from 7.x to 8.x with indices that have the
`index.mapper.dynamic` index setting defined.  By re-defining the
`index.mapper.dynamic `index setting with
`IndexSettingDeprecatedInV7AndRemovedInV8` property, the index is
allowed to exist in 7.x indices, but can't be defined in new indices
after the upgrade. This way we don't have to rely on index archiving and
upgrading via full cluster restart or rolling restart will yield the
same outcome.

Based on the test in #109301. Relates to #109160 and #96075
martijnvg added a commit to martijnvg/elasticsearch that referenced this pull request Jun 11, 2024
Currently when upgrading a 7.x cluster to 8.x with
`index.mapper.dynamic` index setting defined the following happens:

- In case of a full cluster restart upgrade, then the index setting gets archived and after the upgrade the cluster is in a green health.
- In case of a rolling cluster restart upgrade, then shards of indices with the index setting fail to allocate as nodes start with 8.x version. The result is that the cluster has a red health and the index setting isn't archived. Closing and opening the index should archive the index setting and allocate the shards.

The change is about ensuring the same behavior happens when upgrading a
cluster from 7.x to 8.x with indices that have the
`index.mapper.dynamic` index setting defined.  By re-defining the
`index.mapper.dynamic `index setting with
`IndexSettingDeprecatedInV7AndRemovedInV8` property, the index is
allowed to exist in 7.x indices, but can't be defined in new indices
after the upgrade. This way we don't have to rely on index archiving and
upgrading via full cluster restart or rolling restart will yield the
same outcome.

Based on the test in elastic#109301. Relates to elastic#109160 and elastic#96075
elasticsearchmachine pushed a commit that referenced this pull request Jun 11, 2024
Currently when upgrading a 7.x cluster to 8.x with
`index.mapper.dynamic` index setting defined the following happens:

- In case of a full cluster restart upgrade, then the index setting gets archived and after the upgrade the cluster is in a green health.
- In case of a rolling cluster restart upgrade, then shards of indices with the index setting fail to allocate as nodes start with 8.x version. The result is that the cluster has a red health and the index setting isn't archived. Closing and opening the index should archive the index setting and allocate the shards.

The change is about ensuring the same behavior happens when upgrading a
cluster from 7.x to 8.x with indices that have the
`index.mapper.dynamic` index setting defined.  By re-defining the
`index.mapper.dynamic `index setting with
`IndexSettingDeprecatedInV7AndRemovedInV8` property, the index is
allowed to exist in 7.x indices, but can't be defined in new indices
after the upgrade. This way we don't have to rely on index archiving and
upgrading via full cluster restart or rolling restart will yield the
same outcome.

Based on the test in #109301. Relates to #109160 and #96075
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
auto-merge Automatically merge pull request when CI checks pass (NB doesn't wait for reviews!) >bug :StorageEngine/Mapping The storage related side of mappings Team:StorageEngine v7.17.22
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants