diff options
-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 |