-
Notifications
You must be signed in to change notification settings - Fork 24.9k
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
Deprecate creation of dot-prefixed index names except for hidden and system indices #49959
Conversation
Pinging @elastic/es-core-infra (:Core/Infra/Core) |
This commit deprecates the creation of dot-prefixed index names (e.g. `.watches`) unless they are registered by a plugin that extends `SystemIndexPlugin`. This is the first step towards more thorough proections for system indices. This commit also modifies several plugins which use dot-prefixed indices to register indices they own as system indices.
444310c
to
c731646
Compare
I've confirmed that there's a need for supporting patterns of system indices (see the Enrich processor), rather than just having them be static names, so this is going to be updated to support that very soon. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall I think the approach is on the right track. I left a few comments other than needing to support name patterns
server/src/main/java/org/elasticsearch/cluster/metadata/MetaDataCreateIndexService.java
Outdated
Show resolved
Hide resolved
server/src/main/java/org/elasticsearch/snapshots/RestoreService.java
Outdated
Show resolved
Hide resolved
...r/src/main/java/org/elasticsearch/action/admin/indices/rollover/TransportRolloverAction.java
Outdated
Show resolved
Hide resolved
server/src/main/java/org/elasticsearch/indices/SystemIndexDescriptor.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
…system indices (elastic#49959) This commit deprecates the creation of dot-prefixed index names (e.g. .watches) unless they are either 1) a hidden index, or 2) registered by a plugin that extends SystemIndexPlugin. This is the first step towards more thorough protections for system indices. This commit also modifies several plugins which use dot-prefixed indices to register indices they own as system indices, and adds a plugin to register .tasks as a system index.
…system indices (#49959) This commit deprecates the creation of dot-prefixed index names (e.g. .watches) unless they are either 1) a hidden index, or 2) registered by a plugin that extends SystemIndexPlugin. This is the first step towards more thorough protections for system indices. This commit also modifies several plugins which use dot-prefixed indices to register indices they own as system indices, and adds a plugin to register .tasks as a system index.
This PR made the following changes: 1. Update to JDK 14 2. Hack to overstep potential ES 7.7 bug when installing plugins for test cluster 3. Upgrade gradle, nebula and jacoco versions 4. Change how we register rest endpoint handler as required by ES 7.7 5. Impelement SystemIndexPlugin and register the descriptor according to elastic/elasticsearch#49959 6. added new version of job scheduler zip Testing done: 1. gralde build passes 2. Manually tested all public APIs
This PR made the following changes: 1. Update to JDK 14 2. Hack to overstep potential ES 7.7 bug when installing plugins for test cluster 3. Upgrade gradle, nebula and jacoco versions 4. Change how we register rest endpoint handler as required by ES 7.7 5. Impelement SystemIndexPlugin and register the descriptor according to elastic/elasticsearch#49959 6. added new version of job scheduler zip Testing done: 1. gralde build passes 2. Manually tested all public APIs
Previously, we registered AD indices as system indices as AD indices' names start with a dot. ES deprecates the creation of dot-prefixed index names except for hidden and system indices (elastic/elasticsearch#49959). Starting 7.10, ES adds a dedicated thread pool for system index write operations. System index writes/reads have higher priority than user index writes/reads. For example, system index writes can be forced regardless of whether the current index pressure is high or not (https://github.com/elastic/elasticsearch/blob/242083a36e02496aae9214dc41b89372022e7076/server/src/main/java/org/elasticsearch/index/IndexingPressure.java#L62-L73). AD indices are not more important than other user indices. We don't want AD index reads/writes to impact user indices' reads/writes. This PR removes AD indices out of the system index list and marks them hidden indices instead. This change does not impact created AD indices. They are still system indices. Newly created AD indices will be hidden instead of system indices. This change won't impact search/index API. To list hidden indices, one can use localhost:9200/_cat/indices?v&expand_wildcards=all Testing done: 1. Ran backward-compatibility tests. After updating AD, old detectors run fine, and we can create/run new detectors. All public APIs still work.
Previously, we registered AD indices as system indices as AD indices' names start with a dot. ES deprecates the creation of dot-prefixed index names except for hidden and system indices (elastic/elasticsearch#49959). Starting 7.10, ES adds a dedicated thread pool for system index write operations. System index writes/reads have higher priority than user index writes/reads. For example, system index writes can be forced regardless of whether the current index pressure is high or not (https://github.com/elastic/elasticsearch/blob/242083a36e02496aae9214dc41b89372022e7076/server/src/main/java/org/elasticsearch/index/IndexingPressure.java#L62-L73). AD indices are not more important than other user indices. We don't want AD index reads/writes to impact user indices' reads/writes. This PR removes AD indices out of the system index list and marks them hidden indices instead. This change does not impact created AD indices. They are still system indices. Newly created AD indices will be hidden instead of system indices. This change won't impact search/index API. To list hidden indices, one can use localhost:9200/_cat/indices?v&expand_wildcards=all Testing done: 1. Ran backward-compatibility tests. After updating AD, old detectors run fine, and we can create/run new detectors. All public APIs still work.
Previously, we registered AD indices as system indices as AD indices' names start with a dot. ES deprecates the creation of dot-prefixed index names except for hidden and system indices (elastic/elasticsearch#49959). Starting 7.10, ES adds a dedicated thread pool for system index write operations. System index writes/reads have higher priority than user index writes/reads. For example, system index writes can be forced regardless of whether the current index pressure is high or not (https://github.com/elastic/elasticsearch/blob/242083a36e02496aae9214dc41b89372022e7076/server/src/main/java/org/elasticsearch/index/IndexingPressure.java#L62-L73). AD indices are not more important than other user indices. We don't want AD index reads/writes to impact user indices' reads/writes. This PR removes AD indices out of the system index list and marks them hidden indices instead. This change does not impact created AD indices. They are no longer system indices. Using indices metadata section in localhost:9200/_cluster/state?pretty output can confirm that (look for "system" key under each index ). Newly created AD indices will be hidden instead of system indices. This change won't impact search/index API. To list hidden indices, one can use localhost:9200/_cat/indices?v&expand_wildcards=all Testing done: * Ran backward-compatibility tests. After updating AD, old detectors run fine, and we can create/run new detectors. All public APIs still work.
This PR made the following changes: 1. Update to JDK 14 2. Hack to overstep potential ES 7.7 bug when installing plugins for test cluster 3. Upgrade gradle, nebula and jacoco versions 4. Change how we register rest endpoint handler as required by ES 7.7 5. Impelement SystemIndexPlugin and register the descriptor according to elastic/elasticsearch#49959 6. added new version of job scheduler zip Testing done: 1. gralde build passes 2. Manually tested all public APIs
This commit deprecates the creation of dot-prefixed index names (e.g.
.watches
) unless they are either 1) a hidden index, or 2) registered bya plugin that extends
SystemIndexPlugin
. This is the first steptowards more thorough protections for system indices.
This commit also modifies several plugins which use dot-prefixed indices
to register indices they own as system indices, and adds a plugin to
register
.tasks
as a system index.