Page MenuHomePhabricator

Phacility `notify` tier is pooled, but tries to load database configuration on restart
Closed, ResolvedPublic

Description

We pool notifications on the notify tier, but bin/aphlict attempts to connect to the configured database when it restarts. No database is available on the tier.

The script doesn't need to read database configuration anyway, so it's sufficient to just not try this connection. However, this should probably be formalized (e.g., with a --do-not-read-database-config flag) or maybe we should just put a dummy database on the host to keep it happy, since that might be easier in the long run than dealing with a weird, special cased, one-off flag. However, there's at least some value in the general case in isolating these hosts from other cluster hosts, and supporting such a flag isn't necessarily unreasonable.

Event Timeline

Vaguely related: aphlict exited on notify001 with this error:

[13-Nov-2016 20:24:30 UTC] PHP Fatal error: String size overflow in /core/lib/libphutil/src/future/exec/ExecFuture.php on line 742

That's here:

if ($max_stdout_read_bytes > 0) {
  $this->stdout .= $this->readAndDiscard(
    $stdout,
    $this->getStdoutSizeLimit() - strlen($this->stdout),
    'stdout',
    $max_stdout_read_bytes);
}

We're probably missing a discardBuffers() call somewhere, I'll see if I can hunt it down.

I deployed this, seems to have worked properly in production.