diff options
author | Nikita Lapkov <nikita.lapkov@mongodb.com> | 2022-09-20 10:14:59 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-09-21 08:53:02 +0000 |
commit | 9d71aeee1e95f76ee0564493755480baff4ee9ea (patch) | |
tree | c6e025d0563187452a3749cf29aa217806da6db0 | |
parent | 6d0624e75a8a9ec1d253fc4cda7da4b42bfb07b8 (diff) | |
download | mongo-9d71aeee1e95f76ee0564493755480baff4ee9ea.tar.gz |
SERVER-69793 Disable memory underflow check in the query system
(cherry picked from commit 4d58e73a530c35a43c62cebb0d827f6cd03e8a29)
-rw-r--r-- | src/mongo/db/pipeline/memory_usage_tracker.h | 14 | ||||
-rw-r--r-- | src/mongo/db/pipeline/memory_usage_tracker_test.cpp | 14 |
2 files changed, 12 insertions, 16 deletions
diff --git a/src/mongo/db/pipeline/memory_usage_tracker.h b/src/mongo/db/pipeline/memory_usage_tracker.h index 6887e91289a..b91f0eb57ac 100644 --- a/src/mongo/db/pipeline/memory_usage_tracker.h +++ b/src/mongo/db/pipeline/memory_usage_tracker.h @@ -50,11 +50,8 @@ public: PerFunctionMemoryTracker() = delete; void update(long long diff) { - tassert(5578603, - str::stream() << "Underflow on memory tracking, attempting to add " << diff - << " but only " << _currentMemoryBytes << " available", - diff >= 0 || _currentMemoryBytes >= std::abs(diff)); - set(_currentMemoryBytes + diff); + // TODO SERVER-61281: Check for memory underflow. + set(std::max(_currentMemoryBytes + diff, 0ll)); } void set(long long total) { @@ -145,11 +142,8 @@ public: * Updates total memory usage. */ void update(long long diff) { - tassert(5578602, - str::stream() << "Underflow on memory tracking, attempting to add " << diff - << " but only " << _memoryUsageBytes << " available", - diff >= 0 || (int)_memoryUsageBytes >= -1 * diff); - set(_memoryUsageBytes + diff); + // TODO SERVER-61281: Check for memory underflow. + set(std::max(_memoryUsageBytes + diff, 0ll)); } auto currentMemoryBytes() const { diff --git a/src/mongo/db/pipeline/memory_usage_tracker_test.cpp b/src/mongo/db/pipeline/memory_usage_tracker_test.cpp index 9d383a8a468..f60933a4655 100644 --- a/src/mongo/db/pipeline/memory_usage_tracker_test.cpp +++ b/src/mongo/db/pipeline/memory_usage_tracker_test.cpp @@ -99,9 +99,8 @@ TEST_F(MemoryUsageTrackerTest, UpdateUsageUpdatesGlobal) { ASSERT_EQ(_tracker.maxMemoryBytes(), 150LL); } -DEATH_TEST_F(MemoryUsageTrackerTest, - UpdateFunctionUsageToNegativeIsDisallowed, - "Underflow on memory tracking") { +// TODO SERVER-61281: Switch to 'DEATH_TEST_F' checking the underflow case. +TEST_F(MemoryUsageTrackerTest, UpdateFunctionUsageToNegativeIsDisallowed) { _funcTracker.set(50LL); ASSERT_EQ(_funcTracker.currentMemoryBytes(), 50LL); ASSERT_EQ(_funcTracker.maxMemoryBytes(), 50LL); @@ -109,16 +108,19 @@ DEATH_TEST_F(MemoryUsageTrackerTest, ASSERT_EQ(_tracker.maxMemoryBytes(), 50LL); _funcTracker.update(-100); + ASSERT_EQ(_tracker.currentMemoryBytes(), 0LL); + ASSERT_EQ(_tracker.maxMemoryBytes(), 50LL); } -DEATH_TEST_F(MemoryUsageTrackerTest, - UpdateMemUsageToNegativeIsDisallowed, - "Underflow on memory tracking") { +// TODO SERVER-61281: Switch to 'DEATH_TEST_F' checking the underflow case. +TEST_F(MemoryUsageTrackerTest, UpdateMemUsageToNegativeIsDisallowed) { _tracker.set(50LL); ASSERT_EQ(_tracker.currentMemoryBytes(), 50LL); ASSERT_EQ(_tracker.maxMemoryBytes(), 50LL); _tracker.update(-100); + ASSERT_EQ(_tracker.currentMemoryBytes(), 0LL); + ASSERT_EQ(_tracker.maxMemoryBytes(), 50LL); } } // namespace |