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

Don't free buffers after reading query stream #9721

Merged
merged 1 commit into from
Oct 23, 2024

Conversation

colega
Copy link
Contributor

@colega colega commented Oct 23, 2024

What this PR does

While the write path has been carefully crafted to make sure that we don't keep references to the strings backed by arrays with data from grpc stream (because it would cause a memory leak), this doesn't seem to be the case in the query path, where some tests started failing after we started to reuse those backing arrays through the usage of memory buffers implemented in the new gRPC library.

This change reverts the buffer freeing, means that it won't be recycled (and will be garbage collected) to ensure data correctness, while we investigate where the data references are kept.

Which issue(s) this PR fixes or relates to

Follow up on #9401

Checklist

  • Tests updated.
  • Documentation added.
  • CHANGELOG.md updated - the order of entries should be [CHANGE], [FEATURE], [ENHANCEMENT], [BUGFIX].
  • about-versioning.md updated with experimental features.

Follow up on #9401

While the write path has been carefully crafted to make sure that we
don't keep references to the strings backed by arrays with data from
grpc stream (because it would cause a memory leak), this doesn't seem to
be the case in the query path, where some tests started failing after we
started to reuse those backing arrays through the usage of memory
buffers implemented in the new gRPC library.

This change reverts the buffer freeing, means that it won't be recycled
(and will be garbage collected) to ensure data correctness, while we
investigate where the data references are kept.

Signed-off-by: Oleg Zaytsev <mail@olegzaytsev.com>
@colega colega marked this pull request as ready for review October 23, 2024 07:49
@colega colega requested a review from a team as a code owner October 23, 2024 07:49
@colega
Copy link
Contributor Author

colega commented Oct 23, 2024

There was no changelog entry in #9401 so nothing to update here.

Copy link
Contributor

@bboreham bboreham left a comment

Choose a reason for hiding this comment

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

Seems legit. I guess we should take a look at the profiles once it gets into use.

Copy link
Contributor

@narqo narqo left a comment

Choose a reason for hiding this comment

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

🔥 Works for me

where some tests started failing after we started to reuse those backing arrays through the usage of memory buffers implemented in the new gRPC library

For the history #9718 shows some details about which tests

@colega
Copy link
Contributor Author

colega commented Oct 23, 2024

It's also concerning that only those tests failed 😱

@colega colega merged commit f7b6017 into main Oct 23, 2024
29 checks passed
@colega colega deleted the dont-free-buffers-after-reading-query-stream branch October 23, 2024 09:49
duricanikolic added a commit that referenced this pull request Nov 1, 2024
duricanikolic added a commit that referenced this pull request Nov 4, 2024
duricanikolic added a commit that referenced this pull request Nov 4, 2024
* Revert "Don't free buffers after reading query stream (#9721)"

This reverts commit f7b6017.

* Revert "Upgrade to google.golang.org/grpc v1.66.2 / modify certain protobuf messages to retain their unmarshaling buffer (#9401)"

This reverts commit accccf4.
duricanikolic added a commit that referenced this pull request Nov 4, 2024
* Revert "Don't free buffers after reading query stream (#9721)"

This reverts commit f7b6017.

* Revert: Upgrade to google.golang.org/grpc v1.66.2 / modify certain protobuf messages to retain their unmarshaling buffer (#9401)

Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>

* Revert "Distributor.queryIngesterStream: Free gRPC buffers upon error (#9756)"

This reverts commit eda1a4b.

---------

Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>
aknuds1 added a commit that referenced this pull request Nov 4, 2024
* [release-2.14] fix(deps): update github.com/thanos-io/objstore digest to f90c89a (main) (#9625)

* Update github.com/thanos-io/objstore digest to f90c89a (#9534)

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
(cherry picked from commit 3c97a61)

* update changelog

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>

---------

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Vladimir Varankin <vladimir.varankin@grafana.com>

* 2.14.1 Prepare patch release (#9796)

* bump patch version

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>

* rebuild assets

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>

---------

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>

* MQE: Fix handling of string results (#9803)

This would previously panic after the query was closed

* chore(deps): update grafana/mimirtool docker tag to v2.14.1 (#9806)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* Revert upgrade to google.golang.org/grpc v1.66.2 (#9811)

* Revert "Don't free buffers after reading query stream (#9721)"

This reverts commit f7b6017.

* Revert: Upgrade to google.golang.org/grpc v1.66.2 / modify certain protobuf messages to retain their unmarshaling buffer (#9401)

Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>

* Revert "Distributor.queryIngesterStream: Free gRPC buffers upon error (#9756)"

This reverts commit eda1a4b.

---------

Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>

* Improve lock contention affecting read and write latencies during TSDB head compaction (cherry-pick Prometheus PR 15242) (#9822)

* Cherry-pick Prometheus PR 15242

Signed-off-by: Marco Pracucci <marco@pracucci.com>

* Added CHANGELOG entry

Signed-off-by: Marco Pracucci <marco@pracucci.com>

* Updated CHANGELOG

Signed-off-by: Marco Pracucci <marco@pracucci.com>

---------

Signed-off-by: Marco Pracucci <marco@pracucci.com>

---------

Signed-off-by: Vladimir Varankin <vladimir.varankin@grafana.com>
Signed-off-by: Yuri Nikolic <durica.nikolic@grafana.com>
Signed-off-by: Marco Pracucci <marco@pracucci.com>
Co-authored-by: Grot (@grafanabot) <43478413+grafanabot@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Vladimir Varankin <vladimir.varankin@grafana.com>
Co-authored-by: Joshua Hesketh <joshua.hesketh@grafana.com>
Co-authored-by: Đurica Yuri Nikolić <durica.nikolic@grafana.com>
Co-authored-by: Marco Pracucci <marco@pracucci.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants