Apache Flink 1.13.3 Released

October 19, 2021 - Chesnay Schepler

The Apache Flink community released the third bugfix version of the Apache Flink 1.13 series.

This release includes 136 fixes and minor improvements for Flink 1.13.2. The list below includes bugfixes and improvements. For a complete list of all changes see: JIRA.

We highly recommend all users to upgrade to Flink 1.13.3.

Updated Maven dependencies:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.13.3</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.13.3</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.11</artifactId>
  <version>1.13.3</version>
</dependency>

You can find the binaries on the updated Downloads page.

Below you can find more information on changes that might affect the behavior of Flink:

StreamTableEnvironment.fromChangelogStream might produce a different stream because primary keys were not properly considered before.

Various primary key issues have been fixed that effectively made it impossible to use this feature. The change might affect savepoint backwards compatibility for affected pipelines. Pipelines that were not affected should be able to restore from a savepoint without issues. The resulting changelog stream might be different after these changes.

The contract of the SourceFunction#cancel() method with respect to interruptions has been clarified:

  • The source itself shouldn’t interrupt the source thread.
  • The source can expect to not be interrupted during a clean cancellation procedure.

The config option taskmanager.slot.timeout falls now back to akka.ask.timeout if no value has been configured.

The default akka.ask.timeout used by the MiniCluster has been increased to 5 minutes. If you want to use a smaller value, then you have to set it explicitly in the passed configuration. The change is due to the fact that messages cannot get lost in a single-process minicluster, so this timeout (which otherwise helps to detect message loss in distributed setups) has no benefit here. The increased timeout reduces the number of false-positive timeouts, for example during heavy tests on loaded CI/CD workers or during debugging.