1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-13 02:12:41 +01:00

Fix two issues with Future key selection inside FutureIterator

Summary:
Ref T11968.

  - Rekeying natural lists of futures creates more problems than it solves. For now, don't try to deal with this.
  - The scope of the future autokey was incorrect (per subclass, not per process).

Test Plan: Ran various future-oriented flows on new HardpointEngine code.

Maniphest Tasks: T11968

Differential Revision: https://secure.phabricator.com/D21046
This commit is contained in:
epriestley 2020-04-01 10:31:21 -07:00
parent b1a712add8
commit 492113370a
2 changed files with 3 additions and 8 deletions

View file

@ -14,6 +14,7 @@ abstract class Future extends Phobject {
private $exception; private $exception;
private $futureKey; private $futureKey;
private $serviceProfilerCallID; private $serviceProfilerCallID;
private static $nextKey = 1;
/** /**
* Is this future's process complete? Specifically, can this future be * Is this future's process complete? Specifically, can this future be
@ -242,10 +243,8 @@ abstract class Future extends Phobject {
} }
final public function getFutureKey() { final public function getFutureKey() {
static $next_key = 1;
if ($this->futureKey === null) { if ($this->futureKey === null) {
$this->futureKey = sprintf('Future/%d', $next_key++); $this->futureKey = sprintf('Future/%d', self::$nextKey++);
} }
return $this->futureKey; return $this->futureKey;

View file

@ -58,12 +58,8 @@ final class FutureIterator
public function __construct(array $futures) { public function __construct(array $futures) {
assert_instances_of($futures, 'Future'); assert_instances_of($futures, 'Future');
$respect_keys = !phutil_is_natural_list($futures);
foreach ($futures as $map_key => $future) { foreach ($futures as $map_key => $future) {
if ($respect_keys) { $future->setFutureKey($map_key);
$future->setFutureKey($map_key);
}
$this->addFuture($future); $this->addFuture($future);
} }
} }