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

fix: Add copyString function to symbolizer to avoid retaining memory #13146

Merged
merged 2 commits into from
Jun 6, 2024

Conversation

cyriltovena
Copy link
Contributor

What this PR does / why we need it:

This was reported by the community that when using structured metadata ingester were leaking memory.

Labels have a special proto Unmarshaller to avoid string copy since it was never interned before it was never causing a problem. But since the addition of structured metadata we now do intern thoses labels and they hold reference of the full GRPC buffer from the push request.

https://github.com/grafana/loki/blob/main/vendor/github.com/grafana/loki/pkg/push/types.go#L667

To fix the issue I simply copy the string before interning it. We could consider removing this optimisation too, but I'm afraid it will have other impact so going safe for now.

Which issue(s) this PR fixes:
Fixes #13123

Special notes for your reviewer:

Checklist

  • Reviewed the CONTRIBUTING.md guide (required)
  • Documentation added
  • Tests updated
  • Title matches the required conventional commits format, see here
    • Note that Promtail is considered to be feature complete, and future development for logs collection will be in Grafana Alloy. As such, feat PRs are unlikely to be accepted unless a case can be made for the feature actually being a bug fix to existing behavior.
  • Changes that require user attention or interaction to upgrade are documented in docs/sources/setup/upgrade/_index.md
  • For Helm chart changes bump the Helm chart version in production/helm/loki/Chart.yaml and update production/helm/loki/CHANGELOG.md and production/helm/loki/README.md. Example PR
  • If the change is deprecating or removing a configuration option, update the deprecated-config.yaml and deleted-config.yaml files respectively in the tools/deprecated-config-checker directory. Example PR

@cyriltovena cyriltovena requested a review from a team as a code owner June 5, 2024 21:18
@cyriltovena cyriltovena changed the title bugfix: Add copyString function to symbolizer to avoid retaining memory fix: Add copyString function to symbolizer to avoid retaining memory Jun 5, 2024
@cyriltovena cyriltovena enabled auto-merge (squash) June 6, 2024 07:49
@cyriltovena cyriltovena merged commit 86b119a into grafana:main Jun 6, 2024
59 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Severe memory leak when ingesting logs with structured metadata
2 participants