Remove the entry with old id from the cache #4864
Open
+4
−1
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.
Fixes #4778
This PR addresses a subtle issue in handling topic IDs during metadata cache insertion. Separating this condition ensures that old entries with non-zero topic IDs are always properly removed from the metadata cache.
Removing the entry from the
rkmc_avl
tree but not removing the old entry with non-zero topic IDs from therkmc_avl_by_id
tree led to an inconsistent cache state. Eventually, it led to memory corruption ("use after free" errors).Testing
My test application re-creates (deletes and creates) three thousand topics. Then it immediately starts producer and consumer threads. Before the fix, the app crashed most of the time, after the fix crashes do not happen anymore.