Submitting jobs from an SDK version past its supported date results in
interruptions and a reduction in throughput for long-running batch or streaming
jobs. To mitigate potential issues, do the following:

- [Upgrade the SDK
  version](https://docs.cloud.google.com/dataflow/docs/guides/installing-beam-sdk#update-sdk) (Preferred)
- [Resubmit the job using a temporary token](https://docs.cloud.google.com/dataflow/docs/support/using-unsupported-sdks#starting-jobs-unsupported-sdk)
- [Resume the disrupted job](https://docs.cloud.google.com/dataflow/docs/support/using-unsupported-sdks#resume-disrupted-jobs)

For a list of all available SDK versions, see the [support status
page](https://docs.cloud.google.com/dataflow/docs/support/sdk-version-support-status#apache-beam-sdks-2x).

### Starting jobs with unsupported SDK versions

When you submit a Dataflow job from an SDK version past its
supported date, you receive an error message directing you to either
[upgrade your SDK version](https://docs.cloud.google.com/dataflow/docs/guides/installing-beam-sdk#update-sdk)
or to use a temporary token when you submit your job.

The token value in the error message contains the datetime when the token
expires as well as the token itself. The expiration date is set for two weeks in
the future.

If you want to use the token, resubmit your job using the
`unsupported_sdk_temporary_override_token` experiment flag and token value.

```bash
--experiments=unsupported_sdk_temporary_override_token=TOKEN
```

If you submit a job using the token after it expires, you receive a
different error message informing you of the expired status. You can either
upgrade to a supported SDK version or resubmit your job without the token to get
a new token.

Tokens are applied at the individual job level, so if you have multiple
jobs scheduled, each job must use a unique token.

Tokens shouldn't be used as a permanent way to keep using an
unsupported SDK. At some time after the unsupported date of an SDK, all
tokens are revoked and all jobs using that unsupported SDK version are
rejected. For more information about the support status of each SDK, see
[SDK version support
status](https://docs.cloud.google.com/dataflow/docs/support/sdk-version-support-status).

### Resuming disrupted jobs

Long-running Dataflow jobs that use unsupported SDKs, such as
streaming jobs, are also disrupted and have their throughput significantly
reduced. You can identify these disrupted jobs using the following error
message in the job logs:
> The workflow was automatically disrupted by the service because it uses an unsupported SDK Apache Beam SDK for Python 2.3.0. Please upgrade to the latest SDK version. To resume the disrupted job temporarily, please use `gcloud alpha dataflow jobs resume-unsupported-sdk --token=TOKEN --region=REGION JOB_ID`. Note that the resumed job by this token will be disrupted again on 2020-08-28T11:21:58-07:00. For a list of supported SDK versions, see: https://cloud.google.com/dataflow/docs/support/sdk-version-support-status.

As the error suggests, you can mitigate the disruption by using the
[resume-unsupported-sdk](https://docs.cloud.google.com/sdk/gcloud/reference/alpha/dataflow/jobs/resume-unsupported-sdk)
command. Resuming a disrupted job is a temporary solution. Instead, upgrade
your SDK version to avoid further deprecation actions.

Previously resumed jobs return to the disrupted state after the
temporary token expires. You can resume any future disruptions in the same
way. However, jobs running on unsupported SDK versions can be automatically
canceled at some time after the unsupported date.