From 845a7d871666add7954fac3f9986a55fcb125b79 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 6 Apr 2017 15:17:35 -0700 Subject: [PATCH] Allow the PullLocal daemon to actually hibernate Summary: Ref T12298. The PullLocal daemon has had hibernation code for a little while, but it never actually activated because we don't sleep for more than 15 seconds in any case. Add a maximum sleep instead and use that to control the longest sleep we'll do for hibernation purposes. Also, when a repository or repository URI is edited, write a NEEDS_UPDATE event into the message table to make sure the daemons de-hibernate. Test Plan: Used `bin/phd debug pull`, saw the daemon actually hibernate instead of just sleeping for 15 seconds. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12298 Differential Revision: https://secure.phabricator.com/D17635 --- src/applications/diffusion/editor/DiffusionURIEditor.php | 4 ++++ .../daemon/PhabricatorRepositoryPullLocalDaemon.php | 3 ++- .../repository/editor/PhabricatorRepositoryEditor.php | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/applications/diffusion/editor/DiffusionURIEditor.php b/src/applications/diffusion/editor/DiffusionURIEditor.php index 9219935d3a..674efbc158 100644 --- a/src/applications/diffusion/editor/DiffusionURIEditor.php +++ b/src/applications/diffusion/editor/DiffusionURIEditor.php @@ -507,6 +507,10 @@ final class DiffusionURIEditor ->synchronizeWorkingCopyAfterHostingChange(); } + $repository->writeStatusMessage( + PhabricatorRepositoryStatusMessage::TYPE_NEEDS_UPDATE, + null); + return $xactions; } diff --git a/src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php b/src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php index 4d4b961765..332d67f7af 100644 --- a/src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php +++ b/src/applications/repository/daemon/PhabricatorRepositoryPullLocalDaemon.php @@ -68,6 +68,7 @@ final class PhabricatorRepositoryPullLocalDaemon $retry_after = array(); $min_sleep = 15; + $max_sleep = phutil_units('5 minutes in seconds'); $max_futures = 4; $futures = array(); $queue = array(); @@ -228,7 +229,7 @@ final class PhabricatorRepositoryPullLocalDaemon continue; } - $should_hibernate = $this->waitForUpdates($min_sleep, $retry_after); + $should_hibernate = $this->waitForUpdates($max_sleep, $retry_after); if ($should_hibernate) { break; } diff --git a/src/applications/repository/editor/PhabricatorRepositoryEditor.php b/src/applications/repository/editor/PhabricatorRepositoryEditor.php index 43c95f6b4a..401fca3668 100644 --- a/src/applications/repository/editor/PhabricatorRepositoryEditor.php +++ b/src/applications/repository/editor/PhabricatorRepositoryEditor.php @@ -634,6 +634,10 @@ final class PhabricatorRepositoryEditor ->synchronizeWorkingCopyAfterCreation(); } + $object->writeStatusMessage( + PhabricatorRepositoryStatusMessage::TYPE_NEEDS_UPDATE, + null); + return $xactions; } -- 2.51.2