Skip to content

Commit 31c15b2

Browse files
committed
add docs for new ManuallyPromote upgrade rollout strategy
1 parent 3ab3d12 commit 31c15b2

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

doc/user/content/self-managed-deployments/upgrading/_index.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,9 +234,32 @@ The behavior of the new version rollout follows your `rolloutStrategy` setting:
234234
| `rolloutStrategy` | Description |
235235
| ----------------- | -----------------------------------|
236236
| `WaitUntilReady` | *Default*. New instances are created and all dataflows are determined to be ready before cutover and terminating the old version, temporarily requiring twice the resources during the transition. |
237-
| `ImmediatelyPromoteCausingDowntime`| Tears down the prior version before creating and promoting the new version. This causes downtime equal to the duration it takes for dataflows to hydrate, but does not require additional resources. |
237+
| `ImmediatelyPromoteCausingDowntime` | Tears down the prior version before creating and promoting the new version. This causes downtime equal to the duration it takes for dataflows to hydrate, but does not require additional resources. |
238+
| `ManuallyPromote` | [BETA ] Creates a new generation of pods, leaving the old generation as the serving generation until the user manually promotes the new generation by updating the `forcePromote` field. |
238239
| `inPlaceRollout`| *Deprecated*. The setting is ignored. |
239240

241+
242+
243+
When using `ManuallyPromote`, the new generation can be promoted at any
244+
time, even if it has dataflows that are not fully caught up, by setting
245+
`forcePromote` to the same value as `requestRollout` in the Materialize spec.
246+
247+
To minimize downtime, promotion should occur when the new generation
248+
has caught up to the prior generation. To determine if the new
249+
generation has caught up, consult the `UpToDate` condition in the
250+
status of the Materialize Resource. If the condition's reason is
251+
`ReadyToPromote` the new generation is ready to promote.
252+
253+
{{<warning>}}
254+
Do not leave new generations unpromoted indefinitely.
255+
256+
The new generation keeps open read holds which prevent compaction. Once promoted or
257+
cancelled, those read holds are released. If left unpromoted for an extended time, this
258+
data can build up, and can cause extreme deletion load on the metadata backend database
259+
when finally promoted or cancelled.
260+
{{</warning>}}
261+
262+
240263
## Verifying the Upgrade
241264

242265
After initiating the rollout, you can monitor the status field of the Materialize custom resource to check on the upgrade.

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,15 @@ pub mod v1alpha1 {
4242
/// Create a new generation of pods, leaving the old generation as the serving generation
4343
/// until the user manually promotes the new generation.
4444
///
45-
/// Users can promote the new generation at any time, even if the new generation pods are
46-
/// not fully caught up, by setting `forcePromote` to the same value as `requestRollout` in
47-
/// the Materialize spec.
45+
/// When using `ManuallyPromote`, the new generation can be promoted at any
46+
/// time, even if it has dataflows that are not fully caught up, by setting
47+
/// `forcePromote` to the same value as `requestRollout` in the Materialize spec.
48+
///
49+
/// To minimize downtime, promotion should occur when the new generation
50+
/// has caught up to the prior generation. To determine if the new
51+
/// generation has caught up, consult the `UpToDate` condition in the
52+
/// status of the Materialize Resource. If the condition's reason is
53+
/// `ReadyToPromote` the new generation is ready to promote.
4854
///
4955
/// {{<warning>}}
5056
/// Do not leave new generations unpromoted indefinitely.

0 commit comments

Comments
 (0)