1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-10 00:42:40 +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 $futureKey;
private $serviceProfilerCallID;
private static $nextKey = 1;
/**
* Is this future's process complete? Specifically, can this future be
@ -242,10 +243,8 @@ abstract class Future extends Phobject {
}
final public function getFutureKey() {
static $next_key = 1;
if ($this->futureKey === null) {
$this->futureKey = sprintf('Future/%d', $next_key++);
$this->futureKey = sprintf('Future/%d', self::$nextKey++);
}
return $this->futureKey;

View file

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