File tree Expand file tree Collapse file tree 2 files changed +25
-0
lines changed
orchestratord/src/controller Expand file tree Collapse file tree 2 files changed +25
-0
lines changed Original file line number Diff line number Diff 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 ///
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments