Optionally flush container builders#668
Merged
Merged
Conversation
Member
|
I think in principle a good idea, but we should discuss the name! At least, |
Member
Author
|
Changed the name of the function to |
frankmcsherry
approved these changes
Jun 24, 2025
frankmcsherry
left a comment
Member
There was a problem hiding this comment.
Seems good in spirit, but have a few nits about the API. Mostly being clear exactly what relax should do, and making sure it does this in the one implementation.
Gives container builders the option to drop their allocations in flush in exchange. Other places might benefit from this, too, but exchange has a quadratic number of builders, so not dropping large allocations is can cause a memory regression. Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
frankmcsherry
approved these changes
Jun 24, 2025
frankmcsherry
left a comment
Member
There was a problem hiding this comment.
Good to merge once green!
Signed-off-by: Moritz Hoffmann <antiguru@gmail.com>
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.
Flush container builders in exchange channels and session buffers, if they need to. This avoids a problem where we'd have a quadratic amount of lingering memory in the exchange channel. The change adds a
relaxfunction to container builders, which by default does nothing. Container builders can use it to release resources when called, and Timely calls it when it believes it's a good moment to flush. This corresponds to pushing aNonevalue, which happens once an operator ceases to produce data.I don't like the solution very much because it seems to conflate different concepts, but it seems like a small API change without too much negative impact.
Edit: changed the name from
flushtorelaxfor the lack of a better term.