Page MenuHomePhabricator

2015 Week 39 (Very Late September)
Updated 2,034 Days AgoPublic

Summary of changes from September 19, 2015 to September 26, 2015.

PhabricatorrPrP99d972f43 commits
ArcanistrARCrARCe8a0eba2 commits
libphutilrPHUrPHUdad3ab83 commits
Instances (SAAS)rSAASrSAAS536fc173 commits
Services (SAAS)rSERVICESrSERVICES58a0e841 commit
Core (SAAS)rCORErCORE93e1d5c7 commits

These changes were promoted to stable.


  • This period includes major changes to Drydock. See "Drydock" below for details.
  • Improved use of the color yellow.


  • Fixed an issue where Badges didn't do a full set of permissions checks.

Upgrading / Compatibility

  • There is an upcoming mandatory migration from old Differential hunk storage to new Differential hunk storage. Installs with a large amount of data and a long history can avoid maintenance downtime by running this migration manually in advance of when it becomes mandatory. Follow T8623 for discussion.


  • arc now raises better errors for missing 'name' or invalid 'code' when running linters.
  • arc now warns you about modified files in submodules instead of asking you to amend/commit them (which didn't make sense and didn't work).


Drydock is a prototype application.

Major parts of Drydock have been rewritten to modernize the application and provide major missing capabilities. The form of Drydock is roughly unchanged, but the internals are substantially different.

If you have any extension code which interacts with Drydock, it will almost certainly need to be completely rewritten before you can upgrade to this period. (Among other reasons, installs are discouraged from running prototype applications like Drydock in production because of sweeping changes like this.)

Drydock needs more work and isn't stable or unprototyped yet. You can follow progress in T9252 / T9123.

  • Removed the "Preallocated Hosts" blueprint from Drydock. Added an "Almanac Hosts" blueprint instead. The "Preallocated Hosts" blueprint was written in a time before Almanac, but we can now use Almanac to improve flexibility.
  • Heavily adjusted the flow of Drydock allocation. Overall, this adjustment gives up lease/resource nesting (where a single process could always identify and perform the "next step" in an allocation in a wholly deterministic way). In exchange, allocation is no longer a pile of garbage riddled with race conditions. The original allocator workflow was very rough and written in a time before the modern task queue and prior to building solutions to similar problems in Harbormaster, all of which informs the architecture.
  • Introduced "slot locks", which provide an easy, low-contention solution to the kinds of locking problems most Drydock blueprints face. Slot locks can't solve all locking problems, but feel like a good fit for the most common kinds of problems encountered when implementing blueprints ("one resource per VM", "at most 4 resources").
  • Resources and Leases now have separable "allocate/acquire" and "activate" phases. This allows blueprints to split into a fast locking phase (which claims resources or space against limits) and a slow, unlocked construction phase (which creates resources or primes leases). For example, a blueprint configured to bring up at most 4 EC2 hosts might split into a fast, slot-locking allocation phase (grab one of the four available slots) and a slow, contention-free construction phase (call the EC2 API to spin up a host).
  • Added a command queue to Drydock. Active leases and resources previously had multiple writers with a vague, hand-waving attempt at locking. The command queue is now the only writer for active leases and resources. This parallels similar components in Harbormaster.
  • Formalized a meaningful release/destroy phase of the resource and lease lifecycle. Previously, any process could destroy a lease or resource at any time without coordination.
  • Drydock blueprints can now be disabled. This prevents them from performing allocation or leasing.
  • Improved UI behavior for blueprints with a large number of resources (and resources with a large number of leases).
  • Added bin/drydock command for acting on command interfaces provided by leases.
  • Resources now inherit policies from their blueprints.


  • Split "Stop Build" into "Pause Build" and "Abort Build". When you "Pause" a build, you stop future build steps from occurring but keep resources and state around and can "Resume" it later. When you "Abort" a build, you stop future build steps from occurring and destroy any state/resources. Aborted builds can not be resumed.
  • Added more build steps for working with Drydock. These are still prototypes, as is Drydock.


  • (stable; rP9a651c18) Fixed an issue where the "Tags" field in Diffusion commit mail might fail and stall mail.
  • Fixed an issue where some cowsay cows were over-escaped.
  • Disabled "Send Welcome Mail" action for users who can't establish web sessions (no security implications, just confusing UI).
  • Phame dashboard panels now link to the right place.
  • Fixed an issue where replying to commits could collide with replying to countdowns.
  • Fixed an issue where audit.query could fail abruptly on missing data.
  • Added a stable URI for getting the latest content of a Paste.
  • Fixed an issue with Herald fields operating on empty PHID custom fields.
  • Relaxed some type checks in a very old migration.


  • Made "Create Test Instance" workflow more clear.
  • Improved internal separation of key material (see T7399).
Last Author
Last Edited
Sep 26 2015, 1:35 PM

Event Timeline

epriestley edited the content of this document. (Show Details)