1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-25 16:22:43 +01:00

Use the "@" operator to silence connection retry messages if initializing the stack with database config optional

Summary:
Depends on D20780. Ref T13403. During initial setup, it's routine to run "bin/config" with a bad database config. We start the stack in "config optional" mode to anticipate this.

However, even in this mode, we may emit warnings if the connection fails in certain ways. These warnings aren't useful; suppress them with "@".

(Possibly this message should move from "phlog()" to "--trace" at some point, but it has a certain amount of context/history around it.)

Test Plan:
  - Configured MySQL to fail with a retryable error, e.g. good host but bad port.
  - Ran `bin/config set ...`.
  - Before: saw retry warnings on stderr.
  - After: no retry warnings on stderr.
  - (Turned off suppression code artificially and verified warnings still appear under normal startup.)

Maniphest Tasks: T13403

Differential Revision: https://secure.phabricator.com/D20781
This commit is contained in:
epriestley 2019-09-03 12:16:17 -07:00
parent f8eec38c94
commit e0d6994adb
2 changed files with 19 additions and 4 deletions

View file

@ -249,9 +249,17 @@ final class PhabricatorEnv extends Phobject {
}
try {
$stack->pushSource(
id(new PhabricatorConfigDatabaseSource('default'))
->setName(pht('Database')));
// See T13403. If we're starting up in "config optional" mode, suppress
// messages about connection retries.
if ($config_optional) {
$database_source = @new PhabricatorConfigDatabaseSource('default');
} else {
$database_source = new PhabricatorConfigDatabaseSource('default');
}
$database_source->setName(pht('Database'));
$stack->pushSource($database_source);
} catch (AphrontSchemaQueryException $exception) {
// If the database is not available, just skip this configuration
// source. This happens during `bin/storage upgrade`, `bin/conf` before

View file

@ -126,7 +126,14 @@ abstract class AphrontBaseMySQLDatabaseConnection
$code,
$ex->getMessage());
phlog($message);
// See T13403. If we're silenced with the "@" operator, don't log
// this connection attempt. This keeps things quiet if we're
// running a setup workflow like "bin/config" and expect that the
// database credentials will often be incorrect.
if (error_reporting()) {
phlog($message);
}
} else {
$profiler->endServiceCall($call_id, array());
throw $ex;