When no master database is configured, automatically degrade to read-only mode
Summary: Ref T4571. If `cluster.databases` is configured but only has replicas, implicitly drop to read-only mode and send writes to a replica. Test Plan: - Disabled the `master`, saw Phabricator automatically degrade into read-only mode against replicas. - (Also tested: explicit read-only mode, non-cluster mode, properly configured cluster mode). Reviewers: chad Reviewed By: chad Maniphest Tasks: T4571 Differential Revision: https://secure.phabricator.com/D15672
This commit is contained in:
@@ -25,6 +25,27 @@ final class PhabricatorSystemReadOnlyController
|
||||
'has been turned on by rolling your chair away from your desk and '.
|
||||
'yelling "Hey! Why is Phabricator in read-only mode??!" using '.
|
||||
'your very loudest outside voice.');
|
||||
$body[] = pht(
|
||||
'This mode is active because it is enabled in the configuration '.
|
||||
'option "%s".',
|
||||
phutil_tag('tt', array(), 'cluster.read-only'));
|
||||
$button = pht('Wait Patiently');
|
||||
break;
|
||||
case PhabricatorEnv::READONLY_MASTERLESS:
|
||||
$title = pht('No Writable Database');
|
||||
$body[] = pht(
|
||||
'Phabricator is currently configured with no writable ("master") '.
|
||||
'database, so it can not write new information anywhere. '.
|
||||
'Phabricator will run in read-only mode until an administrator '.
|
||||
'reconfigures it with a writable database.');
|
||||
$body[] = pht(
|
||||
'This usually occurs when an administrator is actively working on '.
|
||||
'fixing a temporary configuration or deployment problem.');
|
||||
$body[] = pht(
|
||||
'This mode is active because no database has a "%s" role in '.
|
||||
'the configuration option "%s".',
|
||||
phutil_tag('tt', array(), 'master'),
|
||||
phutil_tag('tt', array(), 'cluster.databases'));
|
||||
$button = pht('Wait Patiently');
|
||||
break;
|
||||
default:
|
||||
@@ -33,8 +54,8 @@ final class PhabricatorSystemReadOnlyController
|
||||
|
||||
$body[] = pht(
|
||||
'In read-only mode you can read existing information, but you will not '.
|
||||
'be able to edit information or create new information until this mode '.
|
||||
'is disabled.');
|
||||
'be able to edit objects or create new objects until this mode is '.
|
||||
'disabled.');
|
||||
|
||||
$dialog = $this->newDialog()
|
||||
->setTitle($title)
|
||||
|
||||
Reference in New Issue
Block a user