Fix memory tracker counting wrong after OOM (#1651)
This commit is contained in:
parent
0133673f1d
commit
a511e63c7a
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2023 Memgraph Ltd.
|
// Copyright 2024 Memgraph Ltd.
|
||||||
//
|
//
|
||||||
// Use of this software is governed by the Business Source License
|
// Use of this software is governed by the Business Source License
|
||||||
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
// included in the file licenses/BSL.txt; by using this file, you agree to be bound by the terms of the Business Source
|
||||||
@ -60,10 +60,11 @@ void *my_alloc(extent_hooks_t *extent_hooks, void *new_addr, size_t size, size_t
|
|||||||
unsigned arena_ind) {
|
unsigned arena_ind) {
|
||||||
// This needs to be before, to throw exception in case of too big alloc
|
// This needs to be before, to throw exception in case of too big alloc
|
||||||
if (*commit) [[likely]] {
|
if (*commit) [[likely]] {
|
||||||
memgraph::utils::total_memory_tracker.Alloc(static_cast<int64_t>(size));
|
|
||||||
if (GetQueriesMemoryControl().IsThreadTracked()) [[unlikely]] {
|
if (GetQueriesMemoryControl().IsThreadTracked()) [[unlikely]] {
|
||||||
GetQueriesMemoryControl().TrackAllocOnCurrentThread(size);
|
GetQueriesMemoryControl().TrackAllocOnCurrentThread(size);
|
||||||
}
|
}
|
||||||
|
// This needs to be here so it doesn't get incremented in case the first TrackAlloc throws an exception
|
||||||
|
memgraph::utils::total_memory_tracker.Alloc(static_cast<int64_t>(size));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto *ptr = old_hooks->alloc(extent_hooks, new_addr, size, alignment, zero, commit, arena_ind);
|
auto *ptr = old_hooks->alloc(extent_hooks, new_addr, size, alignment, zero, commit, arena_ind);
|
||||||
@ -117,10 +118,10 @@ static bool my_commit(extent_hooks_t *extent_hooks, void *addr, size_t size, siz
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
memgraph::utils::total_memory_tracker.Alloc(static_cast<int64_t>(length));
|
|
||||||
if (GetQueriesMemoryControl().IsThreadTracked()) [[unlikely]] {
|
if (GetQueriesMemoryControl().IsThreadTracked()) [[unlikely]] {
|
||||||
GetQueriesMemoryControl().TrackAllocOnCurrentThread(size);
|
GetQueriesMemoryControl().TrackAllocOnCurrentThread(length);
|
||||||
}
|
}
|
||||||
|
memgraph::utils::total_memory_tracker.Alloc(static_cast<int64_t>(length));
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ void QueriesMemoryControl::CreateTransactionIdTracker(uint64_t transaction_id, s
|
|||||||
|
|
||||||
bool QueriesMemoryControl::EraseTransactionIdTracker(uint64_t transaction_id) {
|
bool QueriesMemoryControl::EraseTransactionIdTracker(uint64_t transaction_id) {
|
||||||
auto transaction_id_to_tracker_accessor = transaction_id_to_tracker.access();
|
auto transaction_id_to_tracker_accessor = transaction_id_to_tracker.access();
|
||||||
auto removed = transaction_id_to_tracker.access().remove(transaction_id);
|
auto removed = transaction_id_to_tracker_accessor.remove(transaction_id);
|
||||||
return removed;
|
return removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user