Troubleshoot Disaster Recovery in Confluent Manager for Apache Flink
For each reason that resources did not recover, Confluent Manager for Apache Flink® (CMF) logs a warning that names them and says what to do, as described in Verify the recovery. For most reasons, you fix the cause and restart CMF, as described in Restart CMF, which runs startup recovery again and recovers the affected resources.
The following table lists the problems whose cause or fix is less obvious, how CMF reports them, and what to do:
Symptom |
Cause |
What to do |
|---|---|---|
|
The encryption key is not the one that encrypted the CMF database. |
Restore the original encryption key |
An environment or compute pool is reported with a reason that contains |
A |
Delete that |
An environment or compute pool is reported with a reason that contains |
Another CMF installation created the key |
If the other installation no longer uses the |
CMF logs |
The spec of a shared compute pool’s session cluster changed while statements run on the
pool, for example through an edit of the environment’s |
Stop the statements, update the compute pool, and resume the statements, as the warning describes. A restart of CMF applies the change when no statements block it. |
CMF logs |
A Kubernetes resource with the name of the statement or application exists that this CMF installation did not create, for example one of another CMF installation that uses the namespace. CMF does not overwrite it. |
If nothing else uses the resource, delete it, and restart CMF. Otherwise, CMF cannot recover the statement or application under its name. |
A statement is |
The plan was never copied to artifact storage, because artifact management was off, or CMF had not copied it yet. |
Recreate the statement as described in Recreate a statement. It starts without its old state. |
A statement is |
The stored plan was deleted, |
Correct |
A statement is |
The plan |
Check who can write to |
CMF logs |
The Flink resource of the statement exists, but its plan |
Follow the advice in the warning, which depends on the reason that it names. If the plan is lost, recreate the statement as described in Recreate a statement, which starts it without its state. |
A statement is |
CMF cannot read artifact storage, |
Fix the access to artifact storage or the base path, or wait until the copy is complete, and restart CMF. If the marker was deleted, write the ID that the CMF log names back into it, and restart CMF. Recreate a statement whose plan was deleted as described in Recreate a statement. |
A statement on a dedicated compute pool is |
A mutating admission webhook changes the |
Install a version of the operator that supports your CMF version, with its custom resource definitions, or change the webhook, and restart CMF. |
A recreated statement stays |
Its job does not start, for example because an image cannot be pulled, a |
Check the Flink pods and the session cluster on the replacement cluster. |
A statement on a shared compute pool is |
The session cluster lost the job, for example because its JobManager restarted without
high availability. The Flink Kubernetes Operator submits a lost |
Update the statement, for example stop and resume it. CMF then replaces its
|
A recreated statement goes to |
The files of the savepoint are gone, or the savepoint does not match the statement’s plan. |
Before the statement is |
A resource is reported with the reason |
Its stored spec cannot be converted, for example because an application’s
|
Correct the spec with an update: CMF applies an updated resource right away. A statement whose compute pool no longer exists cannot be recovered. |
Duplicate output, or exactly-once sinks that abort each other’s transactions. |
The old cluster was not fenced, and its jobs still run. |
Stop the old jobs, or isolate the old cluster. See Before you start recovery. |