[BugFix] fix in-memory pk index memory leak (backport #52903) #52904
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.
Why I'm doing:
In shared-data cluster, when we create a PK table with
enable_persistent_index=false
, then we will use in-memory index. But it has memory leak issue now because_calc_memory_usage
won't be called becausePrimaryIndex::load
andPrimaryIndex::commit
won't be called inLakePrimaryIndex
.What I'm doing:
This pull request includes updates to the
PrimaryIndex
class inbe/src/storage/primary_index.cpp
to improve memory usage tracking. The changes ensure that memory usage is recalculated after each operation involving the primary key to row ID mapping.Memory usage tracking improvements:
PrimaryIndex::insert
: Added a call to_calc_memory_usage()
after inserting into_pkey_to_rssid_rowid
.PrimaryIndex::upsert
: Added a call to_calc_memory_usage()
after upserting into_pkey_to_rssid_rowid
. [1] [2]PrimaryIndex::replace
: Added a call to_calc_memory_usage()
after replacing in_pkey_to_rssid_rowid
. [1] [2]PrimaryIndex::try_replace
: Added a call to_calc_memory_usage()
after trying to replace in_pkey_to_rssid_rowid
.PrimaryIndex::erase
: Added a call to_calc_memory_usage()
after erasing from_pkey_to_rssid_rowid
.What type of PR is this:
Does this PR entail a change in behavior?
If yes, please specify the type of change:
Checklist:
Bugfix cherry-pick branch check:
This is an automatic backport of pull request #52903 done by [Mergify](https://mergify.com). ## Why I'm doing: In shared-data cluster, when we create a PK table with `enable_persistent_index=false`, then we will use in-memory index. But it has memory leak issue now because `_calc_memory_usage` won't be called because `PrimaryIndex::load` and `PrimaryIndex::commit` won't be called in `LakePrimaryIndex`.
What I'm doing:
This pull request includes updates to the
PrimaryIndex
class inbe/src/storage/primary_index.cpp
to improve memory usage tracking. The changes ensure that memory usage is recalculated after each operation involving the primary key to row ID mapping.Memory usage tracking improvements:
PrimaryIndex::insert
: Added a call to_calc_memory_usage()
after inserting into_pkey_to_rssid_rowid
.PrimaryIndex::upsert
: Added a call to_calc_memory_usage()
after upserting into_pkey_to_rssid_rowid
. [1] [2]PrimaryIndex::replace
: Added a call to_calc_memory_usage()
after replacing in_pkey_to_rssid_rowid
. [1] [2]PrimaryIndex::try_replace
: Added a call to_calc_memory_usage()
after trying to replace in_pkey_to_rssid_rowid
.PrimaryIndex::erase
: Added a call to_calc_memory_usage()
after erasing from_pkey_to_rssid_rowid
.What type of PR is this:
Does this PR entail a change in behavior?
If yes, please specify the type of change:
Checklist: