Page MenuHomePhabricator

Don't require a device be registered in Almanac to do cluster init/resync steps
ClosedPublic

Authored by epriestley on Jul 24 2017, 6:43 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, Nov 18, 8:49 PM
Unknown Object (File)
Oct 17 2024, 3:41 AM
Unknown Object (File)
Oct 14 2024, 3:33 AM
Unknown Object (File)
Oct 2 2024, 9:43 AM
Unknown Object (File)
Oct 1 2024, 6:33 AM
Unknown Object (File)
Sep 12 2024, 11:08 PM
Unknown Object (File)
Sep 12 2024, 11:04 PM
Unknown Object (File)
Sep 12 2024, 11:04 PM
Subscribers
None

Details

Summary

Fixes T12893. See also PHI15. This is complicated but:

  • In the documentation, we say "register your web devices with Almanac". We do this ourselves on secure and in the production Phacility cluster.
  • We don't actually require you to do this, don't detect that you didn't, and there's no actual reason you need to.
  • If you don't register your "web" devices, the only bad thing that really happens is that creating repositories skips version initialization, creating the bug in T12893. This process does not actually require the devices be registered, but the code currently just kind of fails silently if they aren't.

Instead, just move forward on these init/resync phases even if the device isn't registered. These steps are safe to run from unregistered hosts since they just wipe the whole table and don't affect specific devices.

If this sticks, I'll probably update the docs to not tell you to register web devices, or at least add "Optionally, ...". I don't think there's any future reason we'd need them to be registered.

Test Plan

This is a bit tough to test without multiple hosts, but I added this piece of code to AlmanacKeys so we'd pretend to be a nameless "web" device when creating a repository:

if ($_REQUEST['__path__'] == '/diffusion/edit/form/default/') {
  return null;
}

Then I created some Git repositories. Before the patch, they came up with - versions (no version information). After the patch, they came up with 0 versions (correctly initialized).

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable