Page MenuHomePhabricator

D14452.id34954.diff
No OneTemporary

D14452.id34954.diff

diff --git a/src/daemon/PhutilDaemonHandle.php b/src/daemon/PhutilDaemonHandle.php
--- a/src/daemon/PhutilDaemonHandle.php
+++ b/src/daemon/PhutilDaemonHandle.php
@@ -257,7 +257,7 @@
// explicitly delineate PID/PGIDs from signals. We don't actually need it,
// so use the implicit "kill -TERM -pgid" form instead of the explicit
// "kill -TERM -- -pgid" form.
- exec("kill -TERM -{$pgid}");
+ posix_kill($pgid, SIGTERM);
sleep($this->getKillDelay());
// On OSX, we'll get a permission error on stderr if the SIGTERM was
@@ -267,7 +267,7 @@
// groups that resist SIGTERM. Rather than trying to figure out if the
// process group is still around or not, just SIGKILL unconditionally and
// ignore any error which may be raised.
- exec("kill -KILL -{$pgid} 2>/dev/null");
+ posix_kill($pgid, SIGKILL);
$this->pid = null;
}
}
@@ -370,8 +370,7 @@
// naturally be restarted after it exits, as though it had exited after an
// unhandled exception.
- $pid = $this->pid;
- exec("kill -INT {$pid}");
+ posix_kill($this->pid, SIGINT);
}
public function didReceiveGracefulSignal($signo) {
@@ -396,8 +395,7 @@
$this->logMessage('DONE', $sigmsg, $signo);
- $pid = $this->pid;
- exec("kill -INT {$pid}");
+ posix_kill($this->pid, SIGINT);
}
public function didReceiveTerminalSignal($signo) {
diff --git a/src/daemon/PhutilDaemonOverseer.php b/src/daemon/PhutilDaemonOverseer.php
--- a/src/daemon/PhutilDaemonOverseer.php
+++ b/src/daemon/PhutilDaemonOverseer.php
@@ -184,7 +184,19 @@
$this->addDaemon($daemon, $config);
}
+ $i = 0;
+ $version = $this->getConfigVersion();
+
while (true) {
+ if (++$i % 30 == 0) {
+ $new_version = $this->getConfigVersion();
+
+ if ($version != $new_version) {
+ $this->didReceiveReloadSignal(SIGHUP);
+ $version = $new_version;
+ }
+ }
+
$futures = array();
foreach ($this->getDaemonHandles() as $daemon) {
$daemon->update();
@@ -217,6 +229,14 @@
exit($this->err);
}
+ private function getConfigVersion() {
+ $conn_r = id(new PhabricatorConfigEntry())->establishConnection('r');
+ return head(queryfx_one(
+ $conn_r,
+ 'SELECT MAX(id) FROM %T',
+ 'config_transaction'));
+ }
+
private function addDaemon(PhutilDaemonHandle $daemon, array $config) {
$id = $daemon->getDaemonID();
$this->daemons[$id] = array(
@@ -296,7 +316,7 @@
if ((time() - $busy) < $scaleup_duration) {
// At least one daemon in the group was idle recently, so we have
- // not fullly
+ // not fully used all the available capacity.
$should_scale = false;
break;
}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 24, 4:26 PM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7715568
Default Alt Text
D14452.id34954.diff (2 KB)

Event Timeline