Skip to content

Commit ecd17b3

Browse files
committed
fix: Do not panic on underflow when shrinking memory usage tracker
Signed-off-by: Alex Qyoun-ae <[email protected]>
1 parent ce2af2c commit ecd17b3

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

datafusion/core/src/execution/memory_manager.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -288,21 +288,12 @@ impl MemoryManager {
288288
}
289289

290290
pub(crate) fn shrink_tracker_usage(&self, delta: usize) {
291-
let update =
292-
self.trackers_total
293-
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |x| {
294-
if x >= delta {
295-
Some(x - delta)
296-
} else {
297-
None
298-
}
299-
});
300-
update.unwrap_or_else(|_| {
301-
panic!(
302-
"Tracker total memory shrink by {} underflow, current value is ",
303-
delta
304-
)
305-
});
291+
self.trackers_total
292+
.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |x| {
293+
// Do not panic, set to usize::MIN on underflow
294+
Some(x.saturating_sub(delta))
295+
})
296+
.expect("Unexpected underflow in tracker memory usage");
306297
}
307298

308299
fn get_requester_total(&self) -> usize {

0 commit comments

Comments
 (0)