Page MenuHomePhabricator

Fix a slow memory leak in long-lived FutureIterator objects, as used by FuturePool
ClosedPublic

Authored by epriestley on Sep 17 2020, 7:52 PM.
Tags
None
Referenced Files
F19880897: D21466.diff
Wed, Mar 18, 9:03 PM
F19803073: D21466.id51095.diff
Sun, Mar 1, 8:46 PM
F19600152: D21466.diff
Feb 3 2026, 3:09 AM
F19511890: D21466.diff
Jan 12 2026, 9:08 AM
F18878340: D21466.diff
Nov 6 2025, 4:59 PM
F18838956: D21466.id51095.diff
Oct 27 2025, 1:39 PM
F18820094: D21466.id51095.diff
Oct 22 2025, 12:31 PM
F18630987: D21466.diff
Sep 16 2025, 1:51 PM
Subscribers
None

Details

Summary

See T13572. FutureIterator does not release futures, so long-lived iterators (like the one that FuturePool may build) can end up leaking memory.

This affects the FuturePool used by the daemon overseer.

See T13572 for more discussion.

Test Plan
  • Ran the simple FutureIterator script from T13572. Before: memory held during iteration, script grows without bound. After: memory released, script uses stable memory.
  • Ran the overseer with memory logging and an immediate wakeup from hibernation. Before: saw memory usage grow without bound at a rate of ~300MB/day. After: saw memory usage stable.

Diff Detail

Repository
rARC Arcanist
Branch
leak1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 24909
Build 34365: Run Core Tests
Build 34364: arc lint + arc unit