[
https://issues.apache.org/jira/browse/FLINK-40374?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dale Lane updated FLINK-40374:
------------------------------
Description:
For a {{{}FlinkSessionJob{}}}, if a job is suspended with a savepoint, and the
user then tries to explicitly redeploy it from a specific savepoint path (by
setting {{{}spec.job.state=RUNNING{}}}, {{{}spec.job.initialSavepointPath{}}},
and bumping {{{}spec.job.savepointRedeployNonce{}}}), the reconciler fails
instead of redeploying the job.
*Steps to reproduce:*
1. Deploy a {{FlinkSessionJob}} with {{spec.job.upgradeMode=SAVEPOINT}} and
{{{}spec.job.state=RUNNING{}}}.
2. Suspend the job: set {{{}spec.job.state=SUSPENDED{}}}. The operator suspends
the job with a savepoint, and clears the job id
3. Request a redeploy from an explicit savepoint: set
{{{}spec.job.state=RUNNING{}}}, set {{spec.job.initialSavepointPath}} to a
savepoint path, and bump {{spec.job.savepointRedeployNonce}} to a new value.
4. Reconciliation fails with:
{code:java}
org.apache.flink.kubernetes.operator.exception.ReconciliationException:
java.lang.IllegalArgumentException: Cannot parse JobID from "null".
The expected format is [0-9a-fA-F]{32}, e.g. fd72014d4c864993a2e5a9287b4a9c5d.
{code}
The same sequence (suspend, then trigger a savepoint redeploy via
{{savepointRedeployNonce}} + {{{}initialSavepointPath{}}}) works as expected
for {{FlinkDeployment}} in Application mode — it's already covered by an
existing passing test ({{{}ApplicationReconcilerTest.testSavepointRedeploy{}}}).
The failure appears specific to {{{}FlinkSessionJob{}}}.
A test reproducing this issue is available here:
[https://github.com/dalelane/flink-kubernetes-operator/commit/6a1b76fe9e778effe09946f31c9850f4bcb9dc03]
was:
For a {{{}FlinkSessionJob{}}}, if a job is suspended with a savepoint, and the
user then tries to explicitly redeploy it from a specific savepoint path (by
setting {{{}spec.job.state=RUNNING{}}}, {{{}spec.job.initialSavepointPath{}}},
and bumping {{{}spec.job.savepointRedeployNonce{}}}), the reconciler fails
instead of redeploying the job.
*Steps to reproduce:*
1. Deploy a {{FlinkSessionJob}} with {{spec.job.upgradeMode=SAVEPOINT}} and
{{{}spec.job.state=RUNNING{}}}.
2. Suspend the job: set {{{}spec.job.state=SUSPENDED{}}}. The operator suspends
the job with a savepoint, and clears the job id
3. Request a redeploy from an explicit savepoint: set
{{{}spec.job.state=RUNNING{}}}, set {{spec.job.initialSavepointPath}} to a
savepoint path, and bump {{spec.job.savepointRedeployNonce}} to a new value.
4. Reconciliation fails with:
{code:java}
org.apache.flink.kubernetes.operator.exception.ReconciliationException:
java.lang.IllegalArgumentException: Cannot parse JobID from "null".
The expected format is [0-9a-fA-F]{32}, e.g. fd72014d4c864993a2e5a9287b4a9c5d.
{code}
The same sequence (suspend, then trigger a savepoint redeploy via
{{savepointRedeployNonce}} + {{{}initialSavepointPath{}}}) works as expected
for {{FlinkDeployment}} in Application mode — it's already covered by an
existing passing test ({{{}ApplicationReconcilerTest.testSavepointRedeploy{}}}).
The failure appears specific to {{{}FlinkSessionJob{}}}.
A test reproducing this issue is available here:
[https://github.com/apache/flink-kubernetes-operator/commit/6a1b76fe9e778effe09946f31c9850f4bcb9dc03]
> Redeploying a FlinkSessionJob from an explicit savepoint if the job was
> previously suspended
> --------------------------------------------------------------------------------------------
>
> Key: FLINK-40374
> URL: https://issues.apache.org/jira/browse/FLINK-40374
> Project: Flink
> Issue Type: Bug
> Components: Kubernetes Operator
> Reporter: Dale Lane
> Priority: Major
>
> For a {{{}FlinkSessionJob{}}}, if a job is suspended with a savepoint, and
> the user then tries to explicitly redeploy it from a specific savepoint path
> (by setting {{{}spec.job.state=RUNNING{}}},
> {{{}spec.job.initialSavepointPath{}}}, and bumping
> {{{}spec.job.savepointRedeployNonce{}}}), the reconciler fails instead of
> redeploying the job.
> *Steps to reproduce:*
> 1. Deploy a {{FlinkSessionJob}} with {{spec.job.upgradeMode=SAVEPOINT}} and
> {{{}spec.job.state=RUNNING{}}}.
> 2. Suspend the job: set {{{}spec.job.state=SUSPENDED{}}}. The operator
> suspends the job with a savepoint, and clears the job id
> 3. Request a redeploy from an explicit savepoint: set
> {{{}spec.job.state=RUNNING{}}}, set {{spec.job.initialSavepointPath}} to a
> savepoint path, and bump {{spec.job.savepointRedeployNonce}} to a new value.
> 4. Reconciliation fails with:
> {code:java}
> org.apache.flink.kubernetes.operator.exception.ReconciliationException:
> java.lang.IllegalArgumentException: Cannot parse JobID from "null".
> The expected format is [0-9a-fA-F]{32}, e.g.
> fd72014d4c864993a2e5a9287b4a9c5d.
> {code}
> The same sequence (suspend, then trigger a savepoint redeploy via
> {{savepointRedeployNonce}} + {{{}initialSavepointPath{}}}) works as expected
> for {{FlinkDeployment}} in Application mode — it's already covered by an
> existing passing test
> ({{{}ApplicationReconcilerTest.testSavepointRedeploy{}}}).
> The failure appears specific to {{{}FlinkSessionJob{}}}.
> A test reproducing this issue is available here:
> [https://github.com/dalelane/flink-kubernetes-operator/commit/6a1b76fe9e778effe09946f31c9850f4bcb9dc03]
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)