1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-18 12:52:42 +01:00

Discard stdout/stderr from the aphlict subprocess when running in daemon (normal) mode

Summary:
Fixes T11818. We don't discard output, so once we read more than 2GB of output we'll exceed the maximum size of a string in an internal buffer.

Instead, configure the future so output is discarded.

Test Plan: Added logging to `libphutil/`, saw internal buffer grow steadily before this change and stay constant at 0 after this change.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11818

Differential Revision: https://secure.phabricator.com/D16855
This commit is contained in:
epriestley 2016-11-13 16:38:54 -08:00
parent 19c6ccb279
commit 7165e4da90

View file

@ -416,6 +416,14 @@ abstract class PhabricatorAphlictManagementWorkflow
while (true) { while (true) {
global $g_future; global $g_future;
$g_future = new ExecFuture('exec %C', $command); $g_future = new ExecFuture('exec %C', $command);
// Discard all output the subprocess produces: it writes to the log on
// disk, so we don't need to send the output anywhere and can just
// throw it away.
$g_future
->setStdoutSizeLimit(0)
->setStderrSizeLimit(0);
$g_future->resolve(); $g_future->resolve();
// If the server exited, wait a couple of seconds and restart it. // If the server exited, wait a couple of seconds and restart it.