From 8f9ba4852861e7628a4e8052afd982efe2817d67 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 22 Jul 2020 11:54:06 -0700 Subject: [PATCH] Fix an issue with destruction of Revision and Diff objects with viewstates Summary: See . These queries aren't actually constructed properly, and destroying a revision or diff with viewstates currently fails. Test Plan: Used `bin/remove destroy Dxxx` to destroy a revision with viewstates (this also destroys the associated diffs). Differential Revision: https://secure.phabricator.com/D21421 --- src/applications/differential/storage/DifferentialDiff.php | 3 ++- src/applications/differential/storage/DifferentialRevision.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/applications/differential/storage/DifferentialDiff.php b/src/applications/differential/storage/DifferentialDiff.php index 747407ce75..f5cb91c56b 100644 --- a/src/applications/differential/storage/DifferentialDiff.php +++ b/src/applications/differential/storage/DifferentialDiff.php @@ -737,9 +737,10 @@ final class DifferentialDiff $prop->delete(); } - $viewstates = id(new DifferentialViewStateQuery()) + $viewstate_query = id(new DifferentialViewStateQuery()) ->setViewer($viewer) ->withObjectPHIDs(array($this->getPHID())); + $viewstates = new PhabricatorQueryIterator($viewstate_query); foreach ($viewstates as $viewstate) { $viewstate->delete(); } diff --git a/src/applications/differential/storage/DifferentialRevision.php b/src/applications/differential/storage/DifferentialRevision.php index 2ab9d59821..15cf219f7b 100644 --- a/src/applications/differential/storage/DifferentialRevision.php +++ b/src/applications/differential/storage/DifferentialRevision.php @@ -1033,9 +1033,10 @@ final class DifferentialRevision extends DifferentialDAO $dummy_path->getTableName(), $this->getID()); - $viewstates = id(new DifferentialViewStateQuery()) + $viewstate_query = id(new DifferentialViewStateQuery()) ->setViewer($viewer) ->withObjectPHIDs(array($this->getPHID())); + $viewstates = new PhabricatorQueryIterator($viewstate_query); foreach ($viewstates as $viewstate) { $viewstate->delete(); }