-
Notifications
You must be signed in to change notification settings - Fork 25.2k
Deprecate and remove freeze and unfreeze REST endpoints #70192
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
Comments
Pinging @elastic/es-core-features (Team:Core/Features) |
1 similar comment
Pinging @elastic/es-core-features (Team:Core/Features) |
We met today to discuss how this removal intersects with REST API compatibility. In summary there is not really any way to apply compatibility here. The closest analog is searchable shapshots, but that has significantly different requirements and setup. The plan is to use REST API compatibility to help provide more meaningful errors. For example, rather then just a 404 returned, REST API compatibility can respond with some nice error message stating that freeze is no longer supported. This applies to both the freeze API's and the add/update ILM policies if they include a freeze action. |
Changes: * Removes and adds redirects for the frozen indices [overview][0], [best practices][1], [search][2], and [monitoring][3] pages. * Removes glossary terms related to frozen indices. * Updates several xrefs to point to the freeze index API docs. Relates to #72946 and #70192. [0]: https://www.elastic.co/guide/en/elasticsearch/reference/7.12/frozen-indices.html [1]: https://www.elastic.co/guide/en/elasticsearch/reference/master/best_practices.html [2]: https://www.elastic.co/guide/en/elasticsearch/reference/master/searching_a_frozen_index.html [3]: https://www.elastic.co/guide/en/elasticsearch/reference/master/monitoring_frozen_indices.html
…3001) Changes: * Removes and adds redirects for the frozen indices [overview][0], [best practices][1], [search][2], and [monitoring][3] pages. * Removes glossary terms related to frozen indices. * Updates several xrefs to point to the freeze index API docs. Relates to #72946 and #70192. [0]: https://www.elastic.co/guide/en/elasticsearch/reference/7.12/frozen-indices.html [1]: https://www.elastic.co/guide/en/elasticsearch/reference/master/best_practices.html [2]: https://www.elastic.co/guide/en/elasticsearch/reference/master/searching_a_frozen_index.html [3]: https://www.elastic.co/guide/en/elasticsearch/reference/master/monitoring_frozen_indices.html
This changes the ILM `freeze` action to not actually freeze the index, instead performing no operation. Relates to elastic#70192
* Make the ILM `freeze` action a no-op This changes the ILM `freeze` action to not actually freeze the index, instead performing no operation. Relates to #70192 * zoop -> noop in documentation anchor Co-authored-by: Elastic Machine <[email protected]>
@danhermann @jakelandis @sajjadwahmed Do we have telemetry on how many users depend on the ILM freeze action in their ILM policies? If this is a significant amount, then I'm concerned that users who have invested heavily in using the freeze action will see its removal as a major obstacle to upgrading to 8.0. If this is the case then they'll need clear and detailed guidance on how to decide whether the heap memory usage improvements are sufficient for their needs or if they need to use the frozen tier and, for the latter, how to migrate from the freeze action to the frozen tier. Additionally, I think we need to increase the level of the deprecation message (#77969) to |
@cjcenizal, we've already made the ILM freeze action a no-op in 8.0 (#77158), so I don't think it's necessary to flag it as a critical deprecation issue since their existing ILM policies will still function. |
@danhermann Thanks, I understand the policies will technically function, but a user's expectations will no longer be met. Imagine this scenario:
This is the user experience I'm concerned about. If we're making a breaking change to how our products behave, I think we need to really make this clear to the user. Upgrade Assistant makes |
@cjcenizal can you explain how you get to the intense time pressure here? I don't follow your line of reasoning for this. And also this:
Our docs are pretty clear that frozen indices are being removed because they are no longer necessary. I'm not sure how this would set them up for stress or failure? |
@dakrone Sure. Whenever I make a mistake that's public and affects others, I feel intense pressure to fix it. Even something as simple as force-pushing to a shared branch and causing a code review to be lost causes me anxiety. I want to fix it as soon as possible. If I were responsible for upgrading a production cluster and/or managing the data lifecycle of this cluster, and I messed that up, then I'd feel pretty bad. Folks who depend on me wouldn't be happy, maybe even my boss would be displeased, and I'd feel pressure to fix things so I can feel good about the job I'm doing. This was my thought process when trying to build empathy for these folks.
Can you link me to these docs? The ones I found weren't very helpful. |
I take issue with this guidance because
So this is more than just segment memory, it also helps control heap used to satisfy queries. Not to mention the actual heap usage reduction is not specified in the docs at all. While overall Elasticsearch is more memory efficient, is that true for all data structures and use-cases? Is the heap reduction the same if you have logging data vs. geographic data?
Lets not forget about users going from 6.8 => 7.16 => 8.0. Even if we've deprecated a feature for multiple minor versions, this will be the first time many users have ever seen this change and it will require a significant re-evaluation of the data lifecycle. Using https://www.elastic.co/guide/en/elasticsearch/reference/7.16/migrate-index-allocation-filters.html If the expectation is the new I strongly second this being a |
I checked the telemetry for this, and 0.5% of clusters that use ILM use the
Okay, I think this treats the deprecation and noop behavior as a bug, which I'm not sure I agree that it is a bug?
It is; in the documentation for both the freeze and unfreeze endpoint (https://www.elastic.co/guide/en/elasticsearch/reference/7.15/frozen-indices.html) the deprecation notice links to https://www.elastic.co/blog/significantly-decrease-your-elasticsearch-heap-memory-usage which shows the actual heap reduction.
I think there may be confusion here, frozen indices have nothing to do with the
That is not the expectation, the expectation is that frozen indices were a workaround that allowed a user to have higher density of data at the cost of throttling searches and potentially much slower response times. The throttling of searches was less of a feature and more of a way for frozen indices not to blow up the heap due to being able to load their search components serially rather than all at once (and potentially using too much memory). Using them as a visibility differentiator was never their primary goal, that was there because it had to be, not because we wanted it to be. |
Thanks for checking this. I think that's low enough to render my concerns moot! |
Yes, there definitely is confusion here, but it is largely due to the name collision. I've had to explain the difference between "frozen indices" and "frozen data tier" more than once. While the approach in significantly different, they do overlap in solving a similar problem: allowing a data node to search across more stored data in the same heap space, at the tradeoff of speed. ⚖️ The Elasticsearch 7.7 blog post is a great one, I've referenced it before. Although, I think we can do better in our deprecation notice than just linking to it. I'll give that some thought and make a docs update suggestion 🤔 |
We have noticed a downside to warning about searching frozen indices on every search, i.e. the part that was done in #78184. Because searching lots of frozen indices is so catastrophically slow most of the out-of-the-box ML jobs that are installed by the security and observability solutions contain Would it be possible to reconsider issuing a deprecation warning for every search that specifies
|
@droberts195 we do have throttling/caching of deprecation messages, based on the key of the message and the request opaque-id. This would only emit the message if it weren't already in the in-memory cache (however, there is a size to the cache, so it can end up evicted). Would that lower the amount of deprecation warning messages enough for this case? |
That depends on our policy for deprecation messages generated by Elastic code. Do we strive for Elastic's own code to not generate deprecation messages at all? Or are we happy for a user to start trialling the Elastic Stack and see a deprecation warning that's unrelated to anything they explicitly created themselves? This same question applies generally - it's not specific to One thing that's interesting is that Elasticsearch's own policy is to treat unexpected deprecation warnings as errors in integration tests. So it's not considered acceptable for Elasticsearch to generate deprecation warnings from its own internal operations. But then it seems inconsistent if it is acceptable for the overall Elastic codebase to generate deprecation warnings from its own internal operations. An end user of the Elastic Stack doesn't want to worry about the distinction between code that different sub-teams within the Elastic dev organisation write. |
We want to avoid throwing user-visible deprecations for Elastic code whenever possible. It's just not a good UX. Will follow up out of this issue |
Just wanted to comment that after upgrading to 7.16.1 searches come up with deprecation notice even though as far as I know we have no code that uses frozen indices. Trying to find a way to disable that notice before update goes live to my community after updating to 7.16.1. ... |
I've just raised #81939 which covers the deprecation of frozen indices in SQL. Would it make sense to add the deprecation and removal in SQL to the schedule in the OP? |
It's frustrating and confusing to see deprecation warnings pop up about things the client is not even doing/using, and it can't be turned off, all when using an official elasticsearch sdk (supposed to be forward compatible) to talk to an official elasticsearch server. Seeing this warning when using the ES 6 Java sdk to talk to ES 7. Seems that should be supported so that an application can e.g. support rolling reboots from ES 6 to 7?
I guess elasticsearch 6.8.x is EOL in a couple of months so time to upgrade to SDK 7.x but that leaves existing 6.8 users unsupported, who are in process of upgrading. Maybe it can be disabled with a code change in the application, will see if that parameter can be explicitly set false. |
…yword (elastic#83943) Resolves elastic#81939 (part of elastic#70192) Deprecates the `index_include_frozen` REST parameter in the `/_sql` endpoint and all the syntax including the `FROZEN` keyword. # Conflicts: # x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/LogicalPlanBuilder.java
…yword (elastic#83943) Resolves elastic#81939 (part of elastic#70192) Deprecates the `index_include_frozen` REST parameter in the `/_sql` endpoint and all the syntax including the `FROZEN` keyword.
We've upgraded to Elasticsearch 7.16.x recently and also saw the deprecation warning about the The annoying thing is that the deprecation warning is triggered by default when using the Java High Level REST client and the default elasticsearch/server/src/main/java/org/elasticsearch/action/search/SearchRequest.java Line 102 in 4e6e4ea
elasticsearch/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java Lines 155 to 158 in 4e6e4ea
elasticsearch/server/src/main/java/org/elasticsearch/action/support/IndicesOptions.java Lines 397 to 399 in 4e6e4ea
I've written up some details |
With the addition of a new Frozen Tier in Elasticsearch, and recent improvements in heap utilization, “frozen indices” (_freeze / _unfreeze endpoints) provide little end-user benefit.
Elasticsearch should deprecate, and then remove, _freeze and _unfreeze endpoints. This work should occur in a way that minimally impacts users, with a large amount of notice, and escape hatches along the way.
7.x:
- [ ] Warn on startup if frozen indices existignore_throttled
parameter? (Deprecate ignore_throttled parameter #77479)8.0:
freeze
action a no-op #77158)9.0:
CC @jasontedor @ywelsch @dakrone
The text was updated successfully, but these errors were encountered: