Apache Flink 2.1.1 Release Announcement

November 10, 2025 - Gabor Somogyi

The Apache Flink Community is pleased to announce the first bug fix release of the Flink 2.1 series.

This release includes 25 bug fixes, vulnerability fixes, and minor improvements for Flink 2.1. Below you will find a list of all bugfixes and improvements (excluding improvements to the build infrastructure and build stability). For a complete list of all changes see: JIRA.

We highly recommend all users upgrade to Flink 2.1.1 or higher.

Release Artifacts #

Maven Dependencies #

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>2.1.1</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java</artifactId>
  <version>2.1.1</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients</artifactId>
  <version>2.1.1</version>
</dependency>

Binaries #

You can find the binaries on the updated Downloads page.

Docker Images #

PyPi #

Release Notes #

    Release Notes - Flink - Version 2.1.1

Bug

  • [FLINK-34094] - Document new AsyncScalarFunction
  • [FLINK-38149] - Convert COLUMN_LIST to DescriptorType
  • [FLINK-38219] - Manipulate state in MultiJoin with fixed row kind
  • [FLINK-38220] - Adjust JoinToMultiJoinRule to support different types of source
  • [FLINK-16686] - [State TTL] Make user class loader available in native RocksDB compaction thread
  • [FLINK-38020] - NonTimeRangeUnboundedPrecedingFunction failing with NPE
  • [FLINK-38035] - Security Vulnerability in PyFlink Logging Mechanism (PythonEnvUtils.java)
  • [FLINK-38137] - RocksDB State Backend Null Serialization Causes NPE and Asymmetric (De)Serialization Logic
  • [FLINK-38267] - Job cannot be recovered from unaligned checkpoint after rescaling when one task has multiple exchanges
  • [FLINK-38272] - The BatchJobRecoveryTest failed of azure cron adaptive scheduler pipeline
  • [FLINK-38286] - MAP function with duplicate keys produces non-deterministic results
  • [FLINK-38319] - TO_TIMESTAMP_LTZ only accepts literal values in PyFlink
  • [FLINK-38327] - NPE during recovery from file-merged checkpoint after FO
  • [FLINK-38332] - Upgrade pemja to 0.5.5
  • [FLINK-38336] - Unexpected data copy during failover for ForSt statebackend
  • [FLINK-38344] - The local files of the HistoryServer may risk never being deleted.
  • [FLINK-38347] - Checkpoint file-merging manager may delete the directory unexpectedly when some RPC messages lost
  • [FLINK-38370] - CommitterOperator does not checkpoint all pending committables
  • [FLINK-38400] - STDDEV/VAR function with FILTER condition may cause wrong result
  • [FLINK-38415] - IndexOutOfBoundsException occasionally occurs after rocksdb.use-ingest-db-restore-mode is enabled
  • [FLINK-38433] - Avoid delete ForSt's directory when there happened to be an existing one
  • [FLINK-38483] - Job cannot be recovered from unaligned checkpoint , exception: Cannot get old subtasks from a descriptor that represents no state

Improvement

  • [FLINK-38193] - Upgrade org.apache.commons:commons-lang3 from 3.12.0 to 3.18.0 to mitigate CVE-2025-48924