Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15387758
D15802.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D15802.diff
View Options
diff --git a/src/applications/config/check/PhabricatorSetupCheck.php b/src/applications/config/check/PhabricatorSetupCheck.php
--- a/src/applications/config/check/PhabricatorSetupCheck.php
+++ b/src/applications/config/check/PhabricatorSetupCheck.php
@@ -50,9 +50,35 @@
return $cache->getKey('phabricator.setup.issue-keys');
}
- final public static function setOpenSetupIssueKeys(array $keys) {
+ final public static function setOpenSetupIssueKeys(
+ array $keys,
+ $update_database) {
$cache = PhabricatorCaches::getSetupCache();
$cache->setKey('phabricator.setup.issue-keys', $keys);
+
+ if ($update_database) {
+ $db_cache = new PhabricatorKeyValueDatabaseCache();
+ try {
+ $json = phutil_json_encode($keys);
+ $db_cache->setKey('phabricator.setup.issue-keys', $json);
+ } catch (Exception $ex) {
+ // Ignore any write failures, since they likely just indicate that we
+ // have a database-related setup issue that needs to be resolved.
+ }
+ }
+ }
+
+ final public static function getOpenSetupIssueKeysFromDatabase() {
+ $db_cache = new PhabricatorKeyValueDatabaseCache();
+ try {
+ $value = $db_cache->getKey('phabricator.setup.issue-keys');
+ if (!strlen($value)) {
+ return null;
+ }
+ return phutil_json_decode($value);
+ } catch (Exception $ex) {
+ return null;
+ }
}
final public static function getUnignoredIssueKeys(array $all_issues) {
@@ -97,7 +123,21 @@
->setView($view);
}
}
- self::setOpenSetupIssueKeys(self::getUnignoredIssueKeys($issues));
+ $issue_keys = self::getUnignoredIssueKeys($issues);
+ self::setOpenSetupIssueKeys($issue_keys, $update_database = true);
+ } else if ($issue_keys) {
+ // If Phabricator is configured in a cluster with multiple web devices,
+ // we can end up with setup issues cached on every device. This can cause
+ // a warning banner to show on every device so that each one needs to
+ // be dismissed individually, which is pretty annoying. See T10876.
+
+ // To avoid this, check if the issues we found have already been cleared
+ // in the database. If they have, we'll just wipe out our own cache and
+ // move on.
+ $issue_keys = self::getOpenSetupIssueKeysFromDatabase();
+ if ($issue_keys !== null) {
+ self::setOpenSetupIssueKeys($issue_keys, $update_database = false);
+ }
}
// Try to repair configuration unless we have a clean bill of health on it.
diff --git a/src/applications/config/controller/PhabricatorConfigIssueListController.php b/src/applications/config/controller/PhabricatorConfigIssueListController.php
--- a/src/applications/config/controller/PhabricatorConfigIssueListController.php
+++ b/src/applications/config/controller/PhabricatorConfigIssueListController.php
@@ -11,7 +11,8 @@
$issues = PhabricatorSetupCheck::runAllChecks();
PhabricatorSetupCheck::setOpenSetupIssueKeys(
- PhabricatorSetupCheck::getUnignoredIssueKeys($issues));
+ PhabricatorSetupCheck::getUnignoredIssueKeys($issues),
+ $update_database = true);
$important = $this->buildIssueList(
$issues, PhabricatorSetupCheck::GROUP_IMPORTANT);
diff --git a/src/applications/config/controller/PhabricatorConfigIssueViewController.php b/src/applications/config/controller/PhabricatorConfigIssueViewController.php
--- a/src/applications/config/controller/PhabricatorConfigIssueViewController.php
+++ b/src/applications/config/controller/PhabricatorConfigIssueViewController.php
@@ -9,7 +9,8 @@
$issues = PhabricatorSetupCheck::runAllChecks();
PhabricatorSetupCheck::setOpenSetupIssueKeys(
- PhabricatorSetupCheck::getUnignoredIssueKeys($issues));
+ PhabricatorSetupCheck::getUnignoredIssueKeys($issues),
+ $update_database = true);
if (empty($issues[$issue_key])) {
$content = id(new PHUIInfoView())
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 16, 2:52 AM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7705330
Default Alt Text
D15802.diff (3 KB)
Attached To
Mode
D15802: When multiple web hosts are in service, don't require setup warnings to be dismissed on each one
Attached
Detach File
Event Timeline
Log In to Comment