diff --git a/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementAnalyzeWorkflow.php b/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementAnalyzeWorkflow.php --- a/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementAnalyzeWorkflow.php +++ b/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementAnalyzeWorkflow.php @@ -12,7 +12,8 @@ } public function didExecute(PhutilArgumentParser $args) { - $this->analyzeTables(); + $api = $this->getSingleAPI(); + $this->analyzeTables($api); return 0; } diff --git a/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php b/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php --- a/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php +++ b/src/infrastructure/storage/management/workflow/PhabricatorStorageManagementWorkflow.php @@ -143,7 +143,7 @@ if (!$this->dryRun) { $should_analyze = (($err == 0) || ($err == 2)); if ($should_analyze) { - $this->analyzeTables(); + $this->analyzeTables($api); } } } catch (Exception $ex) { @@ -1172,12 +1172,13 @@ ->lock(); } - final protected function analyzeTables() { + final protected function analyzeTables( + PhabricatorStorageManagementAPI $api) { + // Analyzing tables can sometimes have a significant effect on query // performance, particularly for the fulltext ngrams tables. See T12819 // for some specific examples. - $api = $this->getSingleAPI(); $conn = $api->getConn(null); $patches = $this->getPatches();