summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Lapkov <nikita.lapkov@mongodb.com>2022-09-20 10:14:59 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-09-21 08:53:02 +0000
commit9d71aeee1e95f76ee0564493755480baff4ee9ea (patch)
treec6e025d0563187452a3749cf29aa217806da6db0
parent6d0624e75a8a9ec1d253fc4cda7da4b42bfb07b8 (diff)
downloadmongo-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.h14
-rw-r--r--src/mongo/db/pipeline/memory_usage_tracker_test.cpp14
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