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)
Fri, Apr 19, 3:20 AM
Unknown Object (File)
Fri, Apr 19, 3:20 AM
Unknown Object (File)
Fri, Apr 19, 3:20 AM
Unknown Object (File)
Thu, Apr 11, 4:30 AM
Unknown Object (File)
Feb 22 2024, 8:40 PM
Unknown Object (File)
Jan 25 2024, 2:30 AM
Unknown Object (File)
Jan 23 2024, 9:48 PM
Unknown Object (File)
Jan 9 2024, 7:59 AM
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
Branch
phase1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 25061
Build 34577: Run Core Tests
Build 34576: arc lint + arc unit