mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-21 22:32:41 +01:00
Launch daemons with a full Phabricator environment in the overseers
Summary: Ref T1670. Prepare for the overseers to talk directly to the database instead of using Conduit. See T1670 for discussion. This shouldn't impact anything, except it has a very small chance of destabilizing the overseers. Test Plan: Ran `phd launch`, `phd debug`, `phd start`. Ran with `--trace-memory` and verified elevated but mostly steady memory usage (8MB / overseer). This climbed by 0.05KB / sec (4MB / day) but the source of the leaks seems to be the cURL calls we're making over Conduit so this will actually fix that. Disabling `--conduit-uri` reported steady memory usage. I wasn't able to identify anything leaking within code we control. This may be something like a dynamic but capped buffer in cURL, since we haven't seen any issues in the wild. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T1670 Differential Revision: https://secure.phabricator.com/D6534
This commit is contained in:
parent
974997f6bc
commit
9e0a299b06
5 changed files with 33 additions and 17 deletions
2
bin/phd
2
bin/phd
|
@ -1 +1 @@
|
|||
../scripts/daemon/phabricator_daemon_launcher.php
|
||||
../scripts/daemon/manage_daemons.php
|
27
scripts/daemon/launch_daemon.php
Executable file
27
scripts/daemon/launch_daemon.php
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
// NOTE: This is substantially the same as the libphutil/ "launch_daemon.php"
|
||||
// script, except it loads the Phabricator environment and adds some Phabricator
|
||||
// specific flags.
|
||||
|
||||
$root = dirname(dirname(dirname(__FILE__)));
|
||||
require_once $root.'/scripts/__init_script__.php';
|
||||
|
||||
$flags = array();
|
||||
|
||||
$bootloader = PhutilBootloader::getInstance();
|
||||
foreach ($bootloader->getAllLibraries() as $library) {
|
||||
if ($library == 'phutil') {
|
||||
// No need to load libphutil, it's necessarily loaded implicitly by the
|
||||
// daemon itself.
|
||||
continue;
|
||||
}
|
||||
$flags[] = '--load-phutil-library='.phutil_get_library_root($library);
|
||||
}
|
||||
|
||||
// Add more flags.
|
||||
array_splice($argv, 2, 0, $flags);
|
||||
|
||||
$overseer = new PhutilDaemonOverseer($argv);
|
||||
$overseer->run();
|
1
scripts/daemon/phd-daemon
Symbolic link
1
scripts/daemon/phd-daemon
Symbolic link
|
@ -0,0 +1 @@
|
|||
launch_daemon.php
|
|
@ -131,18 +131,6 @@ abstract class PhabricatorDaemonManagementWorkflow
|
|||
$flags[] = '--daemonize';
|
||||
}
|
||||
|
||||
$bootloader = PhutilBootloader::getInstance();
|
||||
foreach ($bootloader->getAllLibraries() as $library) {
|
||||
if ($library == 'phutil') {
|
||||
// No need to load libphutil, it's necessarily loaded implicitly by the
|
||||
// daemon itself.
|
||||
continue;
|
||||
}
|
||||
$flags[] = csprintf(
|
||||
'--load-phutil-library=%s',
|
||||
phutil_get_library_root($library));
|
||||
}
|
||||
|
||||
$flags[] = csprintf('--conduit-uri=%s', PhabricatorEnv::getURI('/api/'));
|
||||
|
||||
if (!$debug) {
|
||||
|
@ -160,13 +148,13 @@ abstract class PhabricatorDaemonManagementWorkflow
|
|||
$flags[] = csprintf('--phd=%s', $pid_dir);
|
||||
|
||||
$command = csprintf(
|
||||
'./launch_daemon.php %s %C %C',
|
||||
'./phd-daemon %s %C %C',
|
||||
$daemon,
|
||||
implode(' ', $flags),
|
||||
implode(' ', $argv));
|
||||
|
||||
$libphutil_root = dirname(phutil_get_library_root('phutil'));
|
||||
$daemon_script_dir = $libphutil_root.'/scripts/daemon/';
|
||||
$phabricator_root = dirname(phutil_get_library_root('phabricator'));
|
||||
$daemon_script_dir = $phabricator_root.'/scripts/daemon/';
|
||||
|
||||
if ($debug) {
|
||||
// Don't terminate when the user sends ^C; it will be sent to the
|
||||
|
@ -175,7 +163,7 @@ abstract class PhabricatorDaemonManagementWorkflow
|
|||
SIGINT,
|
||||
array(__CLASS__, 'ignoreSignal'));
|
||||
|
||||
echo "\n libphutil/scripts/daemon/ \$ {$command}\n\n";
|
||||
echo "\n phabricator/scripts/daemon/ \$ {$command}\n\n";
|
||||
|
||||
phutil_passthru('(cd %s && exec %C)', $daemon_script_dir, $command);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue