1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-21 09:48:47 +02:00
phorge-phorge/src/infrastructure
epriestley 4da74166fe When storage is partitioned, refuse to serve requests unless web and databases agree on partitioning
Summary:
Ref T11044. One popular tool in a modern operations environment is Puppet. The primary purpose of this tool is to randomly revert hosts to older or different configurations.

Introducing an element of chaotic unpredictability into operations trains staff to be on high alert at all times, rather than lulled into complacency by predictability or consistency.

When Puppet reverts a Phabricator host's configuration to an older version, we might start writing data to a lot of crazy places where it shouldn't go. This will create a big sticky mess that is virtually impossible to undo, mostly because we'll get two files with ID 123 or two tasks with ID 456 or whatever else and good luck with that.

Instead, after changing the partition layout, require `bin/storage partition` to be run. This writes a copy of the config everywhere.

Then, when we start serving web requests, make sure every database has the exact same config. This will foil Puppet by refusing to run requests on hosts it has reverted.

Test Plan:
  - Changed partition configuration.
  - Ran Phabricator.
  - FOILED!
  - Ran `bin/storage partition` to sync config.
  - Things worked again.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T11044

Differential Revision: https://secure.phabricator.com/D16910
2016-11-22 04:15:46 -08:00
..
cluster When storage is partitioned, refuse to serve requests unless web and databases agree on partitioning 2016-11-22 04:15:46 -08:00
contentsource Redesign Config Application 2016-08-29 15:49:49 -07:00
customfield Make "text" custom fields appear in ApplicationSearch again 2016-09-21 16:39:43 -07:00
daemon Add a flag to ./bin/worker to select tasks based on their failureCount 2016-10-12 09:49:29 -04:00
diff Improve "thread" rendering of unusually-shaped graphs 2016-07-01 11:15:24 -07:00
edges Log and continue when trying to destroy edges with no edge definition 2016-06-23 06:45:17 -07:00
env Support multiple database masters and convert easy callers 2016-11-12 16:30:20 -08:00
events Modernize Hovercard implementation 2015-12-24 12:18:28 -08:00
graph In Maniphest, don't render the task graph drawing if we're only showing parents/children 2016-11-07 11:09:20 -08:00
internationalization Document calendar summary icons 2016-11-15 13:44:20 -08:00
javelin Extend from Phobject 2015-06-15 18:02:27 +10:00
lint/linter Linter fixes 2015-12-03 07:44:23 +11:00
log Extend from Phobject 2015-06-15 18:02:27 +10:00
management Modularize content sources 2016-03-26 11:59:45 -07:00
markup Generate slightly shorter summaries in the typeahead browse dialog 2016-11-17 13:08:08 -08:00
query Make query engines "overheat" instead of stalling when filtering too many results 2016-10-20 09:31:37 -07:00
sms Various linter fixes 2015-08-11 22:36:55 +10:00
ssh Write a basic SSH pull log for Git 2016-10-20 13:39:30 -07:00
storage When storage is partitioned, refuse to serve requests unless web and databases agree on partitioning 2016-11-22 04:15:46 -08:00
syntax Pass the new default syntax highlighting map to the remarkup engine 2016-05-05 02:51:19 -07:00
testing Make caches misses throw by default intead of inline-generating 2016-06-05 08:51:54 -07:00
time Make translation, timezone and pronoun into real settings 2016-06-02 06:29:47 -07:00
util Make cluster repositories more resistant to freezing 2016-04-25 11:37:31 -07:00
PhabricatorEditor.php Mark some strings for translation 2015-06-09 23:06:52 +10:00