-
Type:
Improvement
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Execution
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description
As part of SERVER-130333 (process-wide memory admission control), three resmoke suites (aggregation_memory_admission, core_memory_admission, concurrency_memory_admission) were prototyped to run the existing corpuses against a mongod with memory admission enabled. They were removed before merge because they were written for the earlier pool-based, spilling design, were never wired into an Evergreen task, and lacked a reservation-leak assertion. This ticket tracks doing it properly for the current single-threshold, RSS-driven load-shedding design.
Motivation / what's not yet covered
The jstests/noPassthrough/admission suite and the C++ unit tests validate the admission decision logic in isolation (via the memoryAdmissionControlPressureOverridePercent knob). They do not exercise the always-on parts of the subsystem against the real query surface:
- reserve()/release() run on every memory-tracked operation and must balance exactly (no accounting leak/underflow);
- per-stage reservation checkpoints fire across every query shape;
- the shared reservation atomics are hit concurrently under load.
A passthrough that runs the broad corpuses with admission active is the cheapest way to get that integration coverage.
Scope
- Add resmoke suite(s) running jstests/aggregation, jstests/core, and the concurrency (FSM) workloads against a standalone mongod with memory admission enabled but the pressure signal held below the limit (deterministic, non-shedding: memoryAdmissionControlMonitorEnabled: false, memoryAdmissionControlPressureOverridePercent: 0, small memoryAdmissionReservationChunkBytes) so the corpus stays green while the reservation/checkpoint plumbing is exercised.
- Add a between-tests reservation-leak assertion (hook or CleanEveryN-style check) that serverStatus().queues.memory.inUseBytes returns to 0 when no operations are running – otherwise the "no leak" guarantee is unverified.
- Wire the suite(s) into an Evergreen build variant/task so they actually run in CI (the prototypes never were).
- (Optional / stretch) A deterministic corpus-wide shedding-stress variant. This requires a "tolerate MemoryAdmissionExceeded" override – the current implicitly_retry_on_overload_errors.js retries then returns the error, so sustained shedding fails result-asserting tests. Only pursue if we want corpus-wide rejection-path coverage beyond the targeted noPassthrough tests.
Acceptance criteria
- Suite(s) run green in Evergreen with memory admission enabled.
- Reservation-leak assertion is enforced between tests and passes.
- Suite(s) are referenced by at least one build variant.
Related
SERVER-130333. The removed prototypes were on branch dgomezferro-starzia/memory-admission (removal commit 720557d4349).
- is related to
-
SERVER-130333 Probabilistic query memory load shedding
-
- Closed
-