Dale Lane created FLINK-40365:
---------------------------------
Summary: Job Management docs: "Config Requirement" for savepoint
upgrade mode is incorrect
Key: FLINK-40365
URL: https://issues.apache.org/jira/browse/FLINK-40365
Project: Flink
Issue Type: Bug
Components: Documentation, Kubernetes Operator
Reporter: Dale Lane
The "Stateful and stateless application upgrades" table in
{{job-management.md}}
[ref|https://github.com/apache/flink-kubernetes-operator/blob/main/docs/content/docs/managing/job-management.md#L103-L109]
states, for the `savepoint` upgrade mode's "Config Requirement" row:
{{Checkpoint or savepoint directory defined}}
This reads as "either directory is sufficient." But
{{DefaultValidator.validateJobSpec}}
([ref|https://github.com/apache/flink-kubernetes-operator/blob/main/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/validation/DefaultValidator.java#L251-L272])
requires both directories for {{savepoint}} mode:
- {{checkpoints.dir}} is required for any non-stateless mode, including
savepoint — this is what backs the savepoint -> last-state fallback described
in the footnote just below the table, for when the job is unhealthy at upgrade
time - {{AbstractJobReconciler.getJobUpgrade}}
([ref|https://github.com/apache/flink-kubernetes-operator/blob/main/flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/reconciler/deployment/AbstractJobReconciler.java#L240-L259])
- {{savepoints.dir}} is additionally required specifically for savepoint mode,
to actually take and restore the savepoint.
A deployment configured with only {{state.savepoints.dir}} (no
{{state.checkpoints.dir}}) will pass what the docs imply is sufficient, but
fail admission validation with "Checkpoint directory[...] must be defined for
last-state and savepoint upgrade modes"
*Suggested fix:* change the table cell to {{Checkpoint and savepoint directory
defined}}
We could also extend the existing footnote (or add one) to note that the
checkpoint directory requirement for savepoint mode exists specifically to
support the fallback to last-state when the job isn't healthy at upgrade time.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)