Page MenuHomePhabricator

D21466.diff
No OneTemporary

D21466.diff

diff --git a/src/future/FutureIterator.php b/src/future/FutureIterator.php
--- a/src/future/FutureIterator.php
+++ b/src/future/FutureIterator.php
@@ -194,7 +194,14 @@
* @task iterator
*/
public function next() {
- $this->key = null;
+ // See T13572. If we preivously resolved and returned a Future, release
+ // it now. This prevents us from holding Futures indefinitely when callers
+ // like FuturePool build long-lived iterators and keep adding new Futures
+ // to them.
+ if ($this->key !== null) {
+ unset($this->futures[$this->key]);
+ $this->key = null;
+ }
$this->updateWorkingSet();

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 26, 5:09 PM (3 d, 17 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7723850
Default Alt Text
D21466.diff (645 B)

Event Timeline