|
| 1 | +--- |
| 2 | +title: "Apache Flink 1.20.2 Release Announcement" |
| 3 | +date: "2025-05-30T00:00:00.000Z" |
| 4 | +aliases: |
| 5 | +- /news/2025/05/30/release-1.20.2.html |
| 6 | +authors: |
| 7 | +- fcsaky: |
| 8 | + name: "Ferenc Csaky" |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +The Apache Flink Community is pleased to announce the second bug fix release of the Flink 1.20 series. |
| 13 | + |
| 14 | +This release includes 25 bug fixes, vulnerability fixes, and minor improvements for Flink 1.20. |
| 15 | +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: |
| 16 | +[JIRA](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12355442). |
| 17 | + |
| 18 | +We highly recommend all users upgrade to Flink 1.20.2. |
| 19 | + |
| 20 | +<div class="alert alert-warning" role="alert"> |
| 21 | +<b>Note:</b> This release contains an improvement regarding how the Adaptive Scheduler works by default on Kubernetes deployments. |
| 22 | + |
| 23 | +Beforehand, in case of a downscaling, the Adaptive Scheduler was not striving to minimize the active TaskManager number, and free up resources even if it would have been possible. |
| 24 | +This logic is now changed and by default the Adaptive Scheduler will try to maximize TaskManager utilization during a downscale event to be able to minimize the necessary TaskManager number. |
| 25 | + |
| 26 | +Although this behavioral change pushes the boundaries of a patch release, the community agreed that the applied default is expected in the vast majority of use-cases. |
| 27 | +To keep the previous strategy, make sure you set the `jobmanager.adaptive-scheduler.prefer-minimal-taskmanagers` configuration option to `false`. |
| 28 | +For more details, please see <a href='https://issues.apache.org/jira/browse/FLINK-33977'>FLINK-33977</a>. |
| 29 | +</div> |
| 30 | + |
| 31 | +# Release Artifacts |
| 32 | + |
| 33 | +## Maven Dependencies |
| 34 | + |
| 35 | +```xml |
| 36 | +<dependency> |
| 37 | + <groupId>org.apache.flink</groupId> |
| 38 | + <artifactId>flink-java</artifactId> |
| 39 | + <version>1.20.2</version> |
| 40 | +</dependency> |
| 41 | +<dependency> |
| 42 | + <groupId>org.apache.flink</groupId> |
| 43 | + <artifactId>flink-streaming-java</artifactId> |
| 44 | + <version>1.20.2</version> |
| 45 | +</dependency> |
| 46 | +<dependency> |
| 47 | + <groupId>org.apache.flink</groupId> |
| 48 | + <artifactId>flink-clients</artifactId> |
| 49 | + <version>1.20.2</version> |
| 50 | +</dependency> |
| 51 | +``` |
| 52 | + |
| 53 | +## Binaries |
| 54 | + |
| 55 | +You can find the binaries on the updated [Downloads page]({{< relref "downloads" >}}). |
| 56 | + |
| 57 | +## Docker Images |
| 58 | + |
| 59 | +* [library/flink](https://hub.docker.com/_/flink/tags?page=1&name=1.20.2) (official images) |
| 60 | +* [apache/flink](https://hub.docker.com/r/apache/flink/tags?page=1&name=1.20.2) (ASF repository) |
| 61 | + |
| 62 | +## PyPi |
| 63 | + |
| 64 | +* [apache-flink==1.20.2](https://pypi.org/project/apache-flink/1.20.2/) |
| 65 | + |
| 66 | +# Release Notes |
| 67 | + |
| 68 | + Release Notes - Flink - Version 1.20.2 |
| 69 | + |
| 70 | +<h2> Bug |
| 71 | +</h2> |
| 72 | +<ul> |
| 73 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-30687'>FLINK-30687</a>] - FILTER not effect in count(*) |
| 74 | +</li> |
| 75 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-34227'>FLINK-34227</a>] - Job doesn't disconnect from ResourceManager |
| 76 | +</li> |
| 77 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35117'>FLINK-35117</a>] - AsyncScalarFunction has a dependency issue. |
| 78 | +</li> |
| 79 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-35687'>FLINK-35687</a>] - JSON_QUERY should return a well formatted nested objects/arrays for ARRAY<STRING> |
| 80 | +</li> |
| 81 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-36549'>FLINK-36549</a>] - Using the ignore-parse-errors parameter in Debezium/Canal/Maxwell/Ogg JSON results in unexpected data loss. |
| 82 | +</li> |
| 83 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37205'>FLINK-37205</a>] - Correct the state cache behavior during bump beam version |
| 84 | +</li> |
| 85 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37460'>FLINK-37460</a>] - Using State Processor API and Kafka Sink with Exactly once delivery leads to org.apache.kafka.common.errors.InvalidPidMappingException |
| 86 | +</li> |
| 87 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37480'>FLINK-37480</a>] - Jpicmp gives false positive |
| 88 | +</li> |
| 89 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37505'>FLINK-37505</a>] - Pyflink is not able to handle the new YAML based configs |
| 90 | +</li> |
| 91 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37545'>FLINK-37545</a>] - StackOverflowError when using MetricGroup in custom WatermarkStrategy |
| 92 | +</li> |
| 93 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37557'>FLINK-37557</a>] - ResolvedSchema#getPrimaryKeyIndexes does not filter for physical columns |
| 94 | +</li> |
| 95 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37605'>FLINK-37605</a>] - SinkWriter may incorrectly infer end of input during rescale |
| 96 | +</li> |
| 97 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37609'>FLINK-37609</a>] - Bump parquet libs to 1.15.1 |
| 98 | +</li> |
| 99 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37670'>FLINK-37670</a>] - Watermark alignment can deadlock job if there are no more splits to be assigned |
| 100 | +</li> |
| 101 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37760'>FLINK-37760</a>] - Bump parquet version to 1.15.2 |
| 102 | +</li> |
| 103 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37803'>FLINK-37803</a>] - LocalTime without seconds is incorrectly serialized to SQL as a value literal |
| 104 | +</li> |
| 105 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37820'>FLINK-37820</a>] - AsyncScalarFunction UDFs cannot be loaded via CompiledPlan |
| 106 | +</li> |
| 107 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37833'>FLINK-37833</a>] - Code generated for binary key in BatchExecExchange causes incorrect shuffle |
| 108 | +</li> |
| 109 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37870'>FLINK-37870</a>] - Unaligned checkpoint is disabled for all connections unexpectedly |
| 110 | +</li> |
| 111 | +</ul> |
| 112 | + |
| 113 | +<h2> Improvement |
| 114 | +</h2> |
| 115 | +<ul> |
| 116 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-33977'>FLINK-33977</a>] - Adaptive scheduler may not minimize the number of TMs during downscaling |
| 117 | +</li> |
| 118 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37109'>FLINK-37109</a>] - Improve state processor API performance when reading keyed rocksdb state by allowing duplicates |
| 119 | +</li> |
| 120 | +</ul> |
| 121 | + |
| 122 | +<h2> Technical Debt |
| 123 | +</h2> |
| 124 | +<ul> |
| 125 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37241'>FLINK-37241</a>] - Remove Mockito dependency from StateBackendTestBase |
| 126 | +</li> |
| 127 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37360'>FLINK-37360</a>] - Update japicmp configuration post 1.20.1 |
| 128 | +</li> |
| 129 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37804'>FLINK-37804</a>] - Python failed to build wheels on macos |
| 130 | +</li> |
| 131 | +<li>[<a href='https://issues.apache.org/jira/browse/FLINK-37810'>FLINK-37810</a>] - update log4j to 2.24.3 to fix critical vulnerabilities |
| 132 | +</li> |
| 133 | +</ul> |
0 commit comments