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

Fix loop in QueryIterator when row count is an exact multiple of page size

Summary: Ref T13152. The pager does a bit of magic here and doesn't populate `nextPageID` when it knows it got an exact final page. The logic misfired in this case and sent us back to the start.

Test Plan:
  - Set page size to 1 to guarantee rows were an exact multiple of page size.
  - Ran `rebuild-identities` (I no-op'd the actual logic to make it faster).
  - Before: looped forever.
  - After: clean exit after processing everything.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13152

Differential Revision: https://secure.phabricator.com/D19479
This commit is contained in:
epriestley 2018-06-07 12:12:05 -07:00
parent 7acda7e94e
commit 13dd3014a7

View file

@ -29,7 +29,7 @@ final class PhabricatorQueryIterator extends PhutilBufferedIterator {
// If we got less than a full page of results, this was the last set of // If we got less than a full page of results, this was the last set of
// results. Throw away the pager so we end iteration. // results. Throw away the pager so we end iteration.
if (count($results) < $pager->getPageSize()) { if (!$pager->getHasMoreResults()) {
$this->pager = null; $this->pager = null;
} else { } else {
$this->pager->setAfterID($pager->getNextPageID()); $this->pager->setAfterID($pager->getNextPageID());