Skip to content

Always compress cluster state on transport layer #80104

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

Conversation

DaveCTurner
Copy link
Contributor

We send cluster states over the wire in response to cluster state
requests and when validating join requests. Today there's no special
treatment of these messages so we just materialize the whole cluster
state into a sequence of buffers which can be tens or hundreds of MBs in
a big cluster, and it's quite possible that a really big cluster would
exceed the 2GiB limit on message size.

This commit forces transport compression on these messages even if it's
usually disabled, which means that the materialized cluster state is
always compressed. It tends to compress well, so this gives us a bit
more headroom in terms of maximum cluster size.

Relates #77466
Closes #79906

@DaveCTurner DaveCTurner added >enhancement :Distributed Coordination/Cluster Coordination Cluster formation and cluster state publication, including cluster membership and fault detection. v8.1.0 labels Oct 29, 2021
@DaveCTurner DaveCTurner force-pushed the 2021-10-29-compress-cluster-state-responses branch 2 times, most recently from d889c5b to f6ce9d3 Compare October 29, 2021 17:56
We send cluster states over the wire in response to cluster state
requests and when validating join requests. Today there's no special
treatment of these messages so we just materialize the whole cluster
state into a sequence of buffers which can be tens or hundreds of MBs in
a big cluster, and it's quite possible that a really big cluster would
exceed the 2GiB limit on message size.

This commit forces transport compression on these messages even if it's
usually disabled, which means that the materialized cluster state is
always compressed. It tends to compress well, so this gives us a bit
more headroom in terms of maximum cluster size.

Relates elastic#77466
Closes elastic#79906
@DaveCTurner DaveCTurner force-pushed the 2021-10-29-compress-cluster-state-responses branch from f6ce9d3 to a4fa12a Compare October 29, 2021 17:59
@mark-vieira mark-vieira added v8.2.0 and removed v8.1.0 labels Feb 2, 2022
@elasticsearchmachine
Copy link
Collaborator

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

@elasticsearchmachine elasticsearchmachine changed the base branch from master to main July 22, 2022 23:10
@mark-vieira mark-vieira added v8.5.0 and removed v8.4.0 labels Jul 27, 2022
@DaveCTurner
Copy link
Contributor Author

Today we compress the cluster state sent for join validation (#85380) and publication, and we can avoid the need to send cluster states over the wire within a cluster for other reasons (#86888), and to remote clusters (#89456), so I think we can close this.

@DaveCTurner DaveCTurner deleted the 2021-10-29-compress-cluster-state-responses branch August 18, 2022 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
:Distributed Coordination/Cluster Coordination Cluster formation and cluster state publication, including cluster membership and fault detection. >enhancement v8.5.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Make org.elasticsearch.action.admin.cluster.state.ClusterStateResponse Compress the Cluster State
5 participants