Skip to content

Commit 1f82b07

Browse files
Manual promotion support
1 parent 8858f4d commit 1f82b07

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/cloud-resources/src/crd/materialize.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,23 @@ pub mod v1alpha1 {
6666
#[default]
6767
WaitUntilReady,
6868

69+
/// Create a new generation of pods, leaving the old generation as the serving generation
70+
/// until the user manually promotes the new generation.
71+
///
72+
/// Users can promote the new generation at any time, even if the new generation pods are
73+
/// not fully caught up, by setting `forcePromote` to the same value as `requestRollout` in
74+
/// the Materialize spec.
75+
///
76+
/// {{<warning>}}
77+
/// Do not leave new generations unpromoted indefinitely.
78+
///
79+
/// The new generation keeps open read holds which prevent compaction. Once promoted or
80+
/// cancelled, those read holds are released. If left unpromoted for an extended time, this
81+
/// data can build up, and can cause extreme deletion load on the metadata backend database
82+
/// when finally promoted or cancelled.
83+
/// {{</warning>}}
84+
ManuallyPromote,
85+
6986
/// {{<warning>}}
7087
/// THIS WILL CAUSE YOUR MATERIALIZE INSTANCE TO BE UNAVAILABLE FOR SOME TIME!!!
7188
///

src/orchestratord/src/controller/materialize.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,14 @@ impl k8s_controller::Context for Context {
655655
Ok(Some(action))
656656
}
657657
Ok(None) => {
658+
if mz.spec.rollout_strategy == MaterializeRolloutStrategy::ManuallyPromote
659+
&& !mz.should_force_promote()
660+
{
661+
trace!(
662+
"Ready to promote, but not promoting because the instance is configured with ManuallyPromote rollout strategy."
663+
);
664+
return Ok(None);
665+
}
658666
// do this last, so that we keep traffic pointing at
659667
// the previous environmentd until the new one is
660668
// fully ready

0 commit comments

Comments
 (0)