Changeset View
Changeset View
Standalone View
Standalone View
src/infrastructure/env/PhabricatorEnv.php
Show First 20 Lines • Show All 217 Lines • ▼ Show 20 Lines | $site_sources = id(new PhutilClassMapQuery()) | ||||
->setAncestorClass('PhabricatorConfigSiteSource') | ->setAncestorClass('PhabricatorConfigSiteSource') | ||||
->setSortMethod('getPriority') | ->setSortMethod('getPriority') | ||||
->execute(); | ->execute(); | ||||
foreach ($site_sources as $site_source) { | foreach ($site_sources as $site_source) { | ||||
$stack->pushSource($site_source); | $stack->pushSource($site_source); | ||||
} | } | ||||
$master = PhabricatorDatabaseRef::getMasterDatabaseRef(); | $masters = PhabricatorDatabaseRef::getMasterDatabaseRefs(); | ||||
if (!$master) { | if (!$masters) { | ||||
self::setReadOnly(true, self::READONLY_MASTERLESS); | self::setReadOnly(true, self::READONLY_MASTERLESS); | ||||
} else if ($master->isSevered()) { | } else { | ||||
// If any master is severed, we drop to readonly mode. In theory we | |||||
// could try to continue if we're only missing some applications, but | |||||
// this is very complex and we're unlikely to get it right. | |||||
foreach ($masters as $master) { | |||||
// Give severed masters one last chance to get healthy. | |||||
if ($master->isSevered()) { | |||||
$master->checkHealth(); | $master->checkHealth(); | ||||
} | |||||
if ($master->isSevered()) { | if ($master->isSevered()) { | ||||
self::setReadOnly(true, self::READONLY_SEVERED); | self::setReadOnly(true, self::READONLY_SEVERED); | ||||
break; | |||||
} | |||||
} | } | ||||
} | } | ||||
try { | try { | ||||
$stack->pushSource( | $stack->pushSource( | ||||
id(new PhabricatorConfigDatabaseSource('default')) | id(new PhabricatorConfigDatabaseSource('default')) | ||||
->setName(pht('Database'))); | ->setName(pht('Database'))); | ||||
} catch (AphrontSchemaQueryException $exception) { | } catch (AphrontSchemaQueryException $exception) { | ||||
▲ Show 20 Lines • Show All 678 Lines • Show Last 20 Lines |