out_forward: fix memory leak during connection loss#8399
Merged
edsiper merged 1 commit intofluent:masterfrom Jan 22, 2024
Merged
out_forward: fix memory leak during connection loss#8399edsiper merged 1 commit intofluent:masterfrom
edsiper merged 1 commit intofluent:masterfrom
Conversation
Signed-off-by: Christian Norbert Menges <christian.norbert.menges@sap.com>
Member
|
good catch! thanks for the PR |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I observed that memory consumption was constantly growing while the data sink of the forward plugin was unavailable. Using valgrind, it could be confirmed that there is a leak in the forward output plugin:
Further analysis showed that during connection loss
out_bufis only freed iftime_as_integeris set totrue:Source: https://github.com/fluent/fluent-bit/blob/master/plugins/out_forward/forward.c#L1574-L1579
However, from the code it looks like
out_bufis also used to write metadata inappend_options(https://github.com/fluent/fluent-bit/blob/master/plugins/out_forward/forward_format.c#L85). To verify this assumption, I enabledTime_as_Integerin the forward configuration. Afterwards, valgrind did no longer find a leak. Therefore, I removed the conditional, which is save because this is also done in other places (e.g. https://github.com/fluent/fluent-bit/blob/master/plugins/out_forward/forward.c#L1644) and even ifout_bufis not used, it would beNULLand freeingNULLis valid.I ran the patched version for 12 hours and the memory consumption was perfectly constant.
Enter
[N/A]in the box, if an item is not applicable to your change.Testing
Before we can approve your change; please submit the following in a comment:
Time_as_IntegertotrueIf this is a change to packaging of containers or native binaries then please confirm it works for all targets.
ok-package-testlabel to test for all targets (requires maintainer to do).Documentation
Backporting
Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.