Docs Home
Viewing docs for
Self-ManagedNot available for BYOC

Load a Savepoint from a Custom Location

On this page

Ververica Platform lets you start a deployment from a savepoint stored at any accessible storage location, not only savepoints managed within the platform. Use this when restoring state from an external source, such as a savepoint taken from a Ververica Platform 2 deployment.

Overview

Savepoint typeDescription
Deployment-managedCreated and tracked by Ververica Platform. Select from the deployment's savepoint history when starting or restarting.
Custom (external)Any savepoint at an external storage path, specified manually. Use this for cross-version migration or restoring state from outside the platform.

When Specific State is selected in the Start Job dialog, the platform lists deployment-managed savepoints available for restore:

Start Job dialog with Specific State selected, showing a dropdown of deployment-managed savepoints
Selecting a deployment-managed savepoint

This page covers custom savepoints. For deployment-managed savepoints, see Manage Deployment Snapshots.

Load Using the UI

  1. Open the deployment and click Start (or Restart if the deployment is suspended).
  2. In the Start Job dialog, select Resume Mode, then select Other deployment state.
  3. From the dropdown, select Use absolute path and enter the full path to the savepoint, for example s3://my-bucket/savepoints/savepoint-abc123.
  4. Click Start. The deployment transitions to RUNNING and restores state from the specified path.
Start Job dialog with Other deployment state and Use absolute path selected, showing the custom savepoint path input field
Loading a savepoint from a custom location in the Start Job dialog
Start Job dialog with Other deployment state and Use existing Deployment and Savepoint selected, showing the deployment selector and state compatibility check
Restoring from another deployment's savepoint with a state compatibility check

The Events tab confirms the restore from the custom savepoint path:

Events tab showing the deployment starting from the custom savepoint path
The Events tab confirms the restore from the custom savepoint path
Events tab showing the deployment in RUNNING state after successful restore
The deployment reaches RUNNING after the restore completes

Load Using the Kubernetes Operator

The Kubernetes Operator supports loading from a custom savepoint location through the spec.initialSavepointSpec.savepointLocation field. This requires two sequential kubectl apply operations.

Step 1: Register the Savepoint

Apply a CR that sets the deployment state to CANCELLED and includes initialSavepointSpec:

YAML
1apiVersion: v3.ververica.platform/v1
2kind: VvpDeployment
3metadata:
4  name: my-deployment
5  namespace: vvp-system
6spec:
7  syncingMode: PATCH
8  initialSavepointSpec:
9    savepointLocation: s3://my-bucket/savepoints/savepoint-abc123
10  deployment:
11    userMetadata:
12      name: my-deployment
13      namespace: default
14      displayName: my-deployment
15    spec:
16      state: CANCELLED
17      deploymentTargetName: my-target
18      template:
19        spec:
20          artifact:
21            jarUri: file:///opt/flink/examples/streaming/MyJob.jar
22            kind: JAR

Wait until the savepoint appears in the deployment's state history with status COMPLETED.

Step 2: Start the Deployment

Apply a second CR with state: RUNNING. Omit initialSavepointSpec in this step:

YAML
1apiVersion: v3.ververica.platform/v1
2kind: VvpDeployment
3metadata:
4  name: my-deployment
5  namespace: vvp-system
6spec:
7  syncingMode: PATCH
8  deployment:
9    userMetadata:
10      name: my-deployment
11      namespace: default
12      displayName: my-deployment
13    spec:
14      state: RUNNING
15      deploymentTargetName: my-target
16      template:
17        spec:
18          artifact:
19            jarUri: file:///opt/flink/examples/streaming/MyJob.jar
20            kind: JAR

The deployment starts and restores state from the savepoint.

Load Using the API

If you are not using the Kubernetes Operator, you can load a savepoint from a custom location by submitting a job through the REST API and setting restoreStrategy.kind to USER_DEFINED_STATE.

Prerequisites

  • You have a savepoint from your Ververica Platform 2 deployment and know its full storage path. For instructions on creating a savepoint, see Savepoints.
  • The savepoint path is accessible from the Ververica Platform 3 deployment (same storage backend and authentication).

Submit the Job

Send a POST request to the jobs start endpoint, passing the USER_DEFINED_STATE restore strategy with the savepoint path as statePath:

BASH
1curl -X POST 'https://app.ververica.cloud/api/v2/namespaces/{namespace}/jobs:start' \
2  -H 'authorization: Bearer {token}' \
3  -H 'accept: application/json' \
4  -H 'workspace: {workspace-id}' \
5  -H 'Content-Type: application/json' \
6  -d '{
7    "deploymentId": "{deployment-id}",
8    "restoreStrategy": {
9      "kind": "USER_DEFINED_STATE",
10      "statePath": "{savepoint-path}",
11      "allowNonRestoredState": false
12    },
13    "localVariables": []
14  }'

Replace {namespace}, {token}, {workspace-id}, {deployment-id}, and {savepoint-path} with your values.

Supported Storage Systems

Custom savepoint paths must use one of the following URI schemes:

SchemeStorage system
s3://Amazon S3 and S3-compatible stores
s3a://Amazon S3 (Hadoop S3A filesystem)
gs://Google Cloud Storage
hdfs://HDFS

Example: Migrate State from Ververica Platform 2 to Ververica Platform 3

  • In Ververica Platform 2, trigger a savepoint on the running deployment and record the savepoint path (for example, s3://my-bucket/vvp2-jobs/namespaces/ns/jobs/abc123/savepoints/savepoint-xyz).
  • In Ververica Platform 3, create a new deployment using an artifact that is compatible with the Ververica Platform 2 job's state schema.
  • Load the Ververica Platform 2 savepoint path using either the Kubernetes Operator approach or the API approach described above.
  • Start the deployment. It resumes from the state captured in Ververica Platform 2.

Troubleshooting

ProblemLikely causeResolution
Savepoint stays in PENDINGThe URI is unreachable or incorrectly formattedVerify the path and confirm the Ververica Platform pod has read access to the storage location.
Deployment fails on startThe savepoint is incompatible with the jobConfirm the artifact is state-compatible with the savepoint. Operator and schema changes between VVP versions can cause restore failures.
initialSavepointSpec has no effectThe deployment already existsThis field is applied only when the deployment is first created. Delete the deployment and apply the CR again.
Invalid path format error on startThe URI scheme or path syntax is incorrectUse one of the supported schemes (s3://, s3a://, gs://, hdfs://) and verify the full path including bucket name and key prefix.
Access denied during restoreThe platform pod does not have read access to the storage locationCheck the storage credentials available to the pod's service account and confirm the bucket policy grants access from the cluster.
Was this helpful?