Page MenuHomePhabricator

Introduce storage patch "phases" to allow index-rebuilding patches to execute after worker queue schema changes
ClosedPublic

Authored by epriestley on Jan 29 2021, 12:23 AM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Dec 15, 9:15 AM
Unknown Object (File)
Fri, Dec 6, 10:38 PM
Unknown Object (File)
Fri, Dec 6, 1:03 PM
Unknown Object (File)
Thu, Dec 5, 7:08 AM
Unknown Object (File)
Sun, Dec 1, 11:03 PM
Unknown Object (File)
Sat, Nov 30, 9:16 PM
Unknown Object (File)
Fri, Nov 29, 7:07 AM
Unknown Object (File)
Wed, Nov 27, 10:03 PM
Subscribers
Restricted Owners Package

Details

Summary

Ref T13591. Some storage patches queue worker tasks, currently always to rebuild search indexes.

These patches can not execute in creation order if a later patch modifies the worker task table, since they'll try to perform a modern INSERT against an out-of-date table schema. Such a modification is desirable in the context of T13591, but making it causes these patches to fail.

Patches have an existing "after" mechanism which allows them to have explicit dependencies. This mechanism could be used to resolve this issue, but all patches with a dependency like this would need to be updated every time the queue table changes.

Instead, introduce "phases" to provide broader ordering rules. There are now two phases: "default" and "worker". Patches in the "worker" phase execute after patches in the "default" phase.

Phases may eventually be further separated, but

Test Plan
  • Ran bin/storage status, saw patches annotated with phases.
  • Will apply containerPHID changes on top of this.

Diff Detail

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
Tests Not Applicable