This is an automated email from the ASF dual-hosted git repository.

dannycranmer pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 50aacc30d Rebuild website
50aacc30d is described below

commit 50aacc30d0030a11f358117e2288654231bd292e
Author: Danny Cranmer <[email protected]>
AuthorDate: Wed Aug 24 21:29:17 2022 +0000

    Rebuild website
---
 content/blog/feed.xml                              | 377 +++++++------------
 content/blog/index.html                            |  36 +-
 content/blog/page10/index.html                     |  36 +-
 content/blog/page11/index.html                     |  36 +-
 content/blog/page12/index.html                     |  36 +-
 content/blog/page13/index.html                     |  38 +-
 content/blog/page14/index.html                     |  38 +-
 content/blog/page15/index.html                     |  38 +-
 content/blog/page16/index.html                     |  40 +-
 content/blog/page17/index.html                     |  40 +-
 content/blog/page18/index.html                     |  40 +-
 content/blog/page19/index.html                     |  40 +-
 content/blog/page2/index.html                      |  36 +-
 content/blog/page20/index.html                     |  25 ++
 content/blog/page3/index.html                      |  36 +-
 content/blog/page4/index.html                      |  38 +-
 content/blog/page5/index.html                      |  40 +-
 content/blog/page6/index.html                      |  38 +-
 content/blog/page7/index.html                      |  38 +-
 content/blog/page8/index.html                      |  41 ++-
 content/blog/page9/index.html                      |  39 +-
 content/index.html                                 |   6 +-
 .../2022/08/25/release-1.15.2.html}                | 408 ++++++++-------------
 content/zh/index.html                              |   6 +-
 24 files changed, 782 insertions(+), 764 deletions(-)

diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index 36529c5f5..d1ff5f8c8 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -6,6 +6,144 @@
 <link>https://flink.apache.org/blog</link>
 <atom:link href="https://flink.apache.org/blog/feed.xml"; rel="self" 
type="application/rss+xml" />
 
+<item>
+<title>Apache Flink 1.15.2 Release Announcement</title>
+<description>&lt;p&gt;The Apache Flink Community is pleased to announce the 
second bug fix release of the Flink 1.15 series.&lt;/p&gt;
+
+&lt;p&gt;This release includes 30 bug fixes, vulnerability fixes, and minor 
improvements for Flink 1.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:
+&lt;a 
href=&quot;https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&amp;amp;version=12351829&quot;&gt;JIRA&lt;/a&gt;.&lt;/p&gt;
+
+&lt;p&gt;We highly recommend all users upgrade to Flink 1.15.2.&lt;/p&gt;
+
+&lt;h1 id=&quot;release-artifacts&quot;&gt;Release Artifacts&lt;/h1&gt;
+
+&lt;h2 id=&quot;maven-dependencies&quot;&gt;Maven Dependencies&lt;/h2&gt;
+
+&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-xml&quot;&gt;&lt;span 
class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-java&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.15.2&lt;span 
class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-streaming-java&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.15.2&lt;span 
class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
+&lt;span class=&quot;nt&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.flink&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;flink-clients&lt;span
 class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
+  &lt;span 
class=&quot;nt&quot;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.15.2&lt;span 
class=&quot;nt&quot;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
+&lt;span 
class=&quot;nt&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
+
+&lt;h2 id=&quot;binaries&quot;&gt;Binaries&lt;/h2&gt;
+
+&lt;p&gt;You can find the binaries on the updated &lt;a 
href=&quot;/downloads.html&quot;&gt;Downloads page&lt;/a&gt;.&lt;/p&gt;
+
+&lt;h2 id=&quot;docker-images&quot;&gt;Docker Images&lt;/h2&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;&lt;a 
href=&quot;https://hub.docker.com/_/flink?tab=tags&amp;amp;page=1&amp;amp;name=1.15.2&quot;&gt;library/flink&lt;/a&gt;
 (official images)&lt;/li&gt;
+  &lt;li&gt;&lt;a 
href=&quot;https://hub.docker.com/r/apache/flink/tags?page=1&amp;amp;name=1.15.2&quot;&gt;apache/flink&lt;/a&gt;
 (ASF repository)&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2 id=&quot;pypi&quot;&gt;PyPi&lt;/h2&gt;
+
+&lt;ul&gt;
+  &lt;li&gt;&lt;a 
href=&quot;https://pypi.org/project/apache-flink/1.15.2/&quot;&gt;apache-flink==1.15.2&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h1 id=&quot;upgrade-notes&quot;&gt;Upgrade Notes&lt;/h1&gt;
+
+&lt;p&gt;For Table API: 1.15.0 and 1.15.1 generated non-deterministic UIDs for 
operators that 
+make it difficult/impossible to restore state or upgrade to next patch 
version. A new 
+table.exec.uid.generation config option (with correct default behavior) 
disables setting
+a UID for new pipelines from non-compiled plans. Existing pipelines can set 
+table.exec.uid.generation=ALWAYS if the 1.15.0/1 behavior was acceptable due 
to a stable
+environment. See &lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28861&quot;&gt;FLINK-28861&lt;/a&gt;
+for more information.&lt;/p&gt;
+
+&lt;h1 id=&quot;release-notes&quot;&gt;Release Notes&lt;/h1&gt;
+
+&lt;h2&gt;        Bug
+&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-23528&quot;&gt;FLINK-23528&lt;/a&gt;]
 -         stop-with-savepoint can fail with FlinkKinesisConsumer
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-25097&quot;&gt;FLINK-25097&lt;/a&gt;]
 -         Bug in inner join when the filter condition is boolean type
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-26931&quot;&gt;FLINK-26931&lt;/a&gt;]
 -         Pulsar sink&amp;#39;s producer name should be unique
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27399&quot;&gt;FLINK-27399&lt;/a&gt;]
 -         Pulsar connector didn&amp;#39;t set start consuming position 
correctly
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27570&quot;&gt;FLINK-27570&lt;/a&gt;]
 -         Checkpoint path error does not cause the job to stop
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27794&quot;&gt;FLINK-27794&lt;/a&gt;]
 -         The primary key obtained from MySQL is incorrect by using 
MysqlCatalog
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27856&quot;&gt;FLINK-27856&lt;/a&gt;]
 -         Adding pod template without spec crashes job manager
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28027&quot;&gt;FLINK-28027&lt;/a&gt;]
 -         Initialise Async Sink maximum number of in flight messages to low 
number for rate limiting strategy
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28057&quot;&gt;FLINK-28057&lt;/a&gt;]
 -         LD_PRELOAD is hardcoded to x64 on flink-docker
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28226&quot;&gt;FLINK-28226&lt;/a&gt;]
 -         &amp;#39;Run kubernetes pyflink application test&amp;#39; fails 
while pulling image
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28239&quot;&gt;FLINK-28239&lt;/a&gt;]
 -         Table-Planner-Loader lacks access to commons-math3
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28240&quot;&gt;FLINK-28240&lt;/a&gt;]
 -         NettyShuffleMetricFactory#RequestedMemoryUsageMetric#getValue may 
throw ArithmeticException when the total segments of NetworkBufferPool is 0
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28250&quot;&gt;FLINK-28250&lt;/a&gt;]
 -         exactly-once sink kafka cause out of memory
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28269&quot;&gt;FLINK-28269&lt;/a&gt;]
 -         Kubernetes test failed with permission denied
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28322&quot;&gt;FLINK-28322&lt;/a&gt;]
 -         DataStreamScanProvider&amp;#39;s new method is not compatible
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28357&quot;&gt;FLINK-28357&lt;/a&gt;]
 -         Watermark issue when recovering Finished sources
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28404&quot;&gt;FLINK-28404&lt;/a&gt;]
 -         Annotation @InjectClusterClient does not work correctly with 
RestClusterClient
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28454&quot;&gt;FLINK-28454&lt;/a&gt;]
 -         Fix the wrong timestamp example of KafkaSource
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28577&quot;&gt;FLINK-28577&lt;/a&gt;]
 -         1.15.1 web ui console report error about checkpoint size
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28602&quot;&gt;FLINK-28602&lt;/a&gt;]
 -         StateChangeFsUploader cannot close stream normally while enabling 
compression
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28817&quot;&gt;FLINK-28817&lt;/a&gt;]
 -         NullPointerException in HybridSource when restoring from checkpoint
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28835&quot;&gt;FLINK-28835&lt;/a&gt;]
 -         Savepoint and checkpoint capabilities and limitations table is 
incorrect
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28861&quot;&gt;FLINK-28861&lt;/a&gt;]
 -         Non-deterministic UID generation might cause issues during restore
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28880&quot;&gt;FLINK-28880&lt;/a&gt;]
 -         Fix CEP doc with wrong result of strict contiguity of looping 
patterns
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28908&quot;&gt;FLINK-28908&lt;/a&gt;]
 -         Coder for LIST type is incorrectly chosen is PyFlink
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28978&quot;&gt;FLINK-28978&lt;/a&gt;]
 -         Kinesis connector doesn&amp;#39;t work for new AWS regions
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28994&quot;&gt;FLINK-28994&lt;/a&gt;]
 -         Enable withCredentials for Flink UI
+&lt;/li&gt;
+&lt;/ul&gt;
+
+&lt;h2&gt;        Improvement
+&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27199&quot;&gt;FLINK-27199&lt;/a&gt;]
 -         Bump Pulsar to 2.10.0 for fixing the unstable Pulsar test 
environment.
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-27865&quot;&gt;FLINK-27865&lt;/a&gt;]
 -         Add guide and example for configuring SASL and SSL in Kafka SQL 
connector document
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28094&quot;&gt;FLINK-28094&lt;/a&gt;]
 -         Upgrade AWS SDK to support ap-southeast-3 
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28140&quot;&gt;FLINK-28140&lt;/a&gt;]
 -         Improve the documentation by adding Python examples
+&lt;/li&gt;
+&lt;li&gt;[&lt;a 
href=&quot;https://issues.apache.org/jira/browse/FLINK-28486&quot;&gt;FLINK-28486&lt;/a&gt;]
 -         [docs-zh] Flink FileSystem SQL Connector Doc is not right
+&lt;/li&gt;
+&lt;/ul&gt;
+</description>
+<pubDate>Thu, 25 Aug 2022 00:00:00 +0200</pubDate>
+<link>https://flink.apache.org/news/2022/08/25/release-1.15.2.html</link>
+<guid isPermaLink="true">/news/2022/08/25/release-1.15.2.html</guid>
+</item>
+
 <item>
 <title>Apache Flink Kubernetes Operator 1.1.0 Release Announcement</title>
 <description>&lt;p&gt;The community has continued to work hard on improving 
the Flink Kubernetes Operator capabilities since our &lt;a 
href=&quot;https://flink.apache.org/news/2022/06/05/release-kubernetes-operator-1.0.0.html&quot;&gt;first
 production ready release&lt;/a&gt; we launched about two months ago.&lt;/p&gt;
@@ -20043,244 +20181,5 @@ However, you need to take care of another aspect, 
which is providing timestamps
 <guid isPermaLink="true">/news/2020/01/30/release-1.9.2.html</guid>
 </item>
 
-<item>
-<title>State Unlocked: Interacting with State in Apache Flink</title>
-<description>&lt;h1 id=&quot;introduction&quot;&gt;Introduction&lt;/h1&gt;
-
-&lt;p&gt;With stateful stream-processing becoming the norm for complex 
event-driven applications and real-time analytics, &lt;a 
href=&quot;https://flink.apache.org/&quot;&gt;Apache Flink&lt;/a&gt; is often 
the backbone for running business logic and managing an organization’s most 
valuable asset — its data — as application state in Flink.&lt;/p&gt;
-
-&lt;p&gt;In order to provide a state-of-the-art experience to Flink 
developers, the Apache Flink community makes significant efforts to provide the 
safety and future-proof guarantees organizations need while managing state in 
Flink. In particular, Flink developers should have sufficient means to access 
and modify their state, as well as making bootstrapping state with existing 
data from external systems a piece-of-cake. These efforts span multiple Flink 
major releases and consist of the  [...]
-
-&lt;ol&gt;
-  &lt;li&gt;Evolvable state schema in Apache Flink&lt;/li&gt;
-  &lt;li&gt;Flexibility in swapping state backends, and&lt;/li&gt;
-  &lt;li&gt;The State processor API, an offline tool to read, write and modify 
state in Flink&lt;/li&gt;
-&lt;/ol&gt;
-
-&lt;p&gt;This post discusses the community’s efforts related to state 
management in Flink, provides some practical examples of how the different 
features and APIs can be utilized and covers some future ideas for new and 
improved ways of managing state in Apache Flink.&lt;/p&gt;
-
-&lt;h1 id=&quot;stream-processing-what-is-state&quot;&gt;Stream processing: 
What is State?&lt;/h1&gt;
-
-&lt;p&gt;To set the tone for the remaining of the post, let us first try to 
explain the very definition of state in stream processing. When it comes to 
stateful stream processing, state comprises of the information that an 
application or stream processing engine will remember across events and streams 
as more realtime (unbounded) and/or offline (bounded) data flow through the 
system. Most trivial applications are inherently stateful; even the example of 
a simple COUNT operation, whereby  [...]
-
-&lt;p&gt;To better understand how Flink manages state, one can think of Flink 
like a three-layered state abstraction, as illustrated in the diagram 
below.&lt;/p&gt;
-
-&lt;center&gt;
-&lt;img 
src=&quot;/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-visual-1.png&quot;
 width=&quot;600px&quot; alt=&quot;State in Apache Flink&quot; /&gt;
-&lt;/center&gt;
-&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
-
-&lt;p&gt;On the top layer, sits the Flink user code, for example, a 
&lt;code&gt;KeyedProcessFunction&lt;/code&gt; that contains some value state. 
This is a simple variable whose value state annotations makes it automatically 
fault-tolerant, re-scalable and queryable by the runtime. These variables are 
backed by the configured state backend that sits either on-heap or on-disk 
(RocksDB State Backend) and provides data locality, proximity to the 
computation and speed when it comes to per-re [...]
-
-&lt;p&gt;A savepoint is a snapshot of the distributed, global state of an 
application at a logical point-in-time and is stored in an external distributed 
file system or blob storage such as HDFS, or S3. Upon upgrading an application 
or implementing a code change  — such as adding a new operator or changing a 
field — the Flink job can restart by re-loading the application state from the 
savepoint into the state backend, making it local and available for the 
computation and continue proces [...]
-
-&lt;center&gt;
-&lt;img 
src=&quot;/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-visual-2.png&quot;
 width=&quot;600px&quot; alt=&quot;State in Apache Flink&quot; /&gt;
-&lt;/center&gt;
-&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
-
-&lt;div class=&quot;alert alert-info&quot;&gt;
- It is important to remember here that &lt;b&gt;state is one of the most 
valuable components of a Flink application&lt;/b&gt; carrying all the 
information about both where you are now and where you are going. State is 
among the most long-lived components in a Flink service since it can be carried 
across jobs, operators, configurations, new features and bug fixes.
-&lt;/div&gt;
-
-&lt;h1 id=&quot;schema-evolution-with-apache-flink&quot;&gt;Schema Evolution 
with Apache Flink&lt;/h1&gt;
-
-&lt;p&gt;In the previous section, we explained how state is stored and 
persisted in a Flink application. Let’s now take a look at what happens when 
evolving state in a stateful Flink streaming application becomes 
necessary.&lt;/p&gt;
-
-&lt;p&gt;Imagine an Apache Flink application that implements a 
&lt;code&gt;KeyedProcessFunction&lt;/code&gt; and contains some 
&lt;code&gt;ValueState&lt;/code&gt;. As illustrated below, within the state 
descriptor, when registering the type, Flink users specify their 
&lt;code&gt;TypeInformation&lt;/code&gt; that informs Flink about how to 
serialize the bytes and represents Flink’s internal type system, used to 
serialize data when shipped across the network or stored in state backends. Fl 
[...]
-
-&lt;h2 
id=&quot;state-registration-with-built-in-serialization-in-apache-flink&quot;&gt;State
 registration with built-in serialization in Apache Flink&lt;/h2&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;&lt;span 
class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span 
class=&quot;nc&quot;&gt;MyFunction&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;extends&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;KeyedProcessFunction&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Key&lt;/span&gt;&lt;span class=& [...]
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;transient&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ValueState&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;MyState&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;valueState&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;open&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Configuration&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;parameters&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-    &lt;span class=&quot;n&quot;&gt;ValueStateDescriptor&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;MyState&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;descriptor&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt;
-      &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;ValueStateDescriptor&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;quot;my-state&amp;quot;&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;TypeInformation&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;of&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt 
[...]
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-    &lt;span class=&quot;n&quot;&gt;valueState&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;getRuntimeContext&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;().&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;getState&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;descriptor&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;);&lt;/span&gt;
-  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
-&lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;Typically, evolving the schema of an application’s state happens 
because of some business logic change (adding or dropping fields or changing 
data types). In all cases, the schema is determined by means of its serializer, 
and can be thought of in terms of an alter table statement when compared with a 
database. When a state variable is first introduced it is like running a 
&lt;code&gt;CREATE_TABLE&lt;/code&gt; command, there is a lot of freedom with 
its execution. However, having [...]
-
-&lt;p&gt;&lt;a 
href=&quot;https://flink.apache.org/downloads.html#apache-flink-182&quot;&gt;Flink
 1.8&lt;/a&gt; comes with built-in support for &lt;a 
href=&quot;https://avro.apache.org/&quot;&gt;Apache Avro&lt;/a&gt; 
(specifically the &lt;a 
href=&quot;https://avro.apache.org/docs/1.7.7/spec.html&quot;&gt;1.7.7 
specification&lt;/a&gt;) and evolves state schema according to Avro 
specifications by adding and removing types or even by swapping between generic 
and specific Avro record types.& [...]
-
-&lt;p&gt;In &lt;a 
href=&quot;https://flink.apache.org/downloads.html#apache-flink-191&quot;&gt;Flink
 1.9&lt;/a&gt; the community added support for schema evolution for POJOs, 
including the ability to remove existing fields from POJO types or add new 
fields. The POJO schema evolution tends to be less flexible — when compared to 
Avro — since it is not possible to change neither the declared field types nor 
the class name of a POJO type, including its namespace.&lt;/p&gt;
-
-&lt;p&gt;With the community’s efforts related to schema evolution, Flink 
developers can now expect out-of-the-box support for both Avro and POJO 
formats, with backwards compatibility for all Flink state backends. Future work 
revolves around adding support for Scala Case Classes, Tuples and other 
formats. Make sure to subscribe to the &lt;a 
href=&quot;https://flink.apache.org/community.html&quot;&gt;Flink mailing 
list&lt;/a&gt; to contribute and stay on top of any upcoming additions in th 
[...]
-
-&lt;h2 id=&quot;peeking-under-the-hood&quot;&gt;Peeking Under the 
Hood&lt;/h2&gt;
-
-&lt;p&gt;Now that we have explained how schema evolution in Flink works, let’s 
describe the challenges of performing schema serialization with Flink under the 
hood. Flink considers state as a core part of its API stability, in a way that 
developers should always be able to take a savepoint from one version of Flink 
and restart it on the next. With schema evolution, every migration needs to be 
backwards compatible and also compatible with the different state backends. 
While in the Flink c [...]
-
-&lt;p&gt;For instance, the heap state backend supports lazy serialization and 
eager deserialization, making the per-record code path always working with Java 
objects, serializing on a background thread.  When restoring, Flink will 
eagerly deserialize all the data and then start the user code. If a developer 
plugs in a new serializer, the deserialization happens before Flink ever 
receives the information.&lt;/p&gt;
-
-&lt;p&gt;The RocksDB state backend behaves in the exact opposite manner: it 
supports eager serialization — because of items being stored on disk and 
RocksDB only consuming byte arrays. RocksDB provides lazy deserialization 
simply by downloading files to the local disk, making Flink unaware of what the 
bytes mean until a serializer is registered.&lt;/p&gt;
-
-&lt;p&gt;An additional challenge stems from the fact that different versions 
of user code contain different classes on their classpath making the serializer 
used to write into a savepoint likely potentially unavailable at 
runtime.&lt;/p&gt;
-
-&lt;p&gt;To overcome the previously mentioned challenges, we introduced what 
we call &lt;code&gt;TypeSerializerSnapshot&lt;/code&gt;. The 
&lt;code&gt;TypeSerializerSnapshot&lt;/code&gt; stores the configuration of the 
writer serializer in the snapshot. When restoring it will use that 
configuration to read back the previous state and check its compatibility with 
the current version. Using such operation allows Flink to:&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Read the configuration used to write out a snapshot&lt;/li&gt;
-  &lt;li&gt;Consume the new user code&lt;/li&gt;
-  &lt;li&gt;Check if both items above are compatible&lt;/li&gt;
-  &lt;li&gt;Consume the bytes from the snapshot and move forward or alert the 
user otherwise&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;&lt;span 
class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;interface&lt;/span&gt; &lt;span 
class=&quot;nc&quot;&gt;TypeSerializerSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;getCurrentVersion&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;();&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;writeSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DataOutputView&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;out&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;throws&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;IOException&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;readSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;
-      &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;readVersion&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;DataInputView&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;in&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;ClassLoader&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;userCodeClassLoader&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;throws&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;IOException&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;n&quot;&gt;TypeSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;restoreSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;();&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span 
class=&quot;n&quot;&gt;TypeSerializerSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;resolveSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;TypeSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;newSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;);&lt;/span&gt;
-&lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;h2 
id=&quot;implementing-apache-avro-serialization-in-flink&quot;&gt;Implementing 
Apache Avro Serialization in Flink&lt;/h2&gt;
-
-&lt;p&gt;Apache Avro is a data serialization format that has very well-defined 
schema migration semantics and supports both reader and writer schemas. During 
normal Flink execution the reader and writer schemas will be the same. However, 
when upgrading an application they may be different and with schema evolution, 
Flink will be able to migrate objects with their schemas.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;&lt;span 
class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span 
class=&quot;nc&quot;&gt;AvroSerializerSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;implements&lt;/span&gt; &lt;span class= [...]
-  &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Schema&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;private&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;Schema&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;previousSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;nd&quot;&gt;@SuppressWarnings&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;s&quot;&gt;&amp;quot;WeakerAccess&amp;quot;&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;AvroSerializerSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;n&quot;&gt;AvroSerializerSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Schema&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;schema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;runtimeSchema&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;schema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-  &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;This is a sketch of our Avro serializer. It uses the provided schemas 
and delegates to Apache Avro for all (de)-serialization. Let’s take a look at 
one possible implementation of a 
&lt;code&gt;TypeSerializerSnapshot&lt;/code&gt; that supports schema migration 
for Avro.&lt;/p&gt;
-
-&lt;h1 id=&quot;writing-out-the-snapshot&quot;&gt;Writing out the 
snapshot&lt;/h1&gt;
-
-&lt;p&gt;When serializing out the snapshot, the snapshot configuration will 
write two pieces of information; the current snapshot configuration version and 
the serializer configuration.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;  &lt;span 
class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;getCurrentVersion&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-  &lt;span class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;writeSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;DataOutputView&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;out&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;throws&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;IOException&lt;/span&gt; &lt;span class=& [...]
-    &lt;span class=&quot;n&quot;&gt;out&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;writeUTF&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;toString&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;));&lt; [...]
-  &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;The version is used to version the snapshot configuration object 
itself while the &lt;code&gt;writeSnapshot&lt;/code&gt; method writes out all 
the information we need to understand the current format; the runtime 
schema.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;  &lt;span 
class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;readSnapshot&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;
-      &lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;readVersion&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;DataInputView&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;in&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;ClassLoader&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;userCodeClassLoader&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;kd&quot;&gt;throws&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;IOException&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-
-    &lt;span class=&quot;k&quot;&gt;assert&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;readVersion&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span 
class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;;&lt;/span&gt;
-    &lt;span class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;String&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;previousSchemaDefinition&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;in&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;readUTF&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;();&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;previousSchema&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;parseAvroSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;previousSchemaDefinition&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;);&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;runtimeType&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;findClassOrFallbackToGeneric&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;userCodeClassLoader&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;previousSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;getFullName&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;());&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;this&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;runtimeSchema&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;tryExtractAvroSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;userCodeClassLoader&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeType&lt;/span&gt;&lt;span [...]
-  &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-&lt;p&gt;Now when Flink restores it is able to read back in the writer schema 
used to serialize the data. The current runtime schema is discovered on the 
class path using some Java reflection magic.&lt;/p&gt;
-
-&lt;p&gt;Once we have both of these we can compare them for compatibility. 
Perhaps nothing has changed and the schemas are compatible as is.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;  &lt;span 
class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;TypeSerializerSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;resolveSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;
-      &lt;span class=&quot;n&quot;&gt;TypeSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;newSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;(!(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;newSerializer&lt;/span&gt; &lt;span 
class=&quot;k&quot;&gt;instanceof&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;AvroSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;))&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;TypeSerializerSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;incompatible&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;();&lt;/span&gt;
-    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;Objects&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;equals&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;previousSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)) [...]
-      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;TypeSerializerSchemaCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;compatibleAsIs&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;();&lt;/span&gt;
-    &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;Otherwise, the schemas are compared using Avro’s compatibility checks 
and they may either be compatible with a migration or incompatible.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;  &lt;span 
class=&quot;kd&quot;&gt;final&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;SchemaPairCompatibility&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;compatibility&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;SchemaCompatibility&lt;/span&gt;
-    &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span 
class=&quot;na&quot;&gt;checkReaderWriterCompatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;previousSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;);&lt;/span&gt;
-&lt;span class=&quot;err&quot;&gt;​&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;avroCompatibilityToFlinkCompatibility&lt;/span&gt;&lt;span
 class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;compatibility&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;);&lt;/span&gt;
-  &lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;p&gt;If they are compatible with migration then Flink will restore a new 
serializer that can read the old schema and deserialize into the new runtime 
type which is in effect a migration.&lt;/p&gt;
-
-&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code 
class=&quot;language-java&quot;&gt;  &lt;span 
class=&quot;nd&quot;&gt;@Override&lt;/span&gt;
-  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;TypeSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;T&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span 
class=&quot;nf&quot;&gt;restoreSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;previousSchema&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;!=&lt;/span&gt; &lt;span 
class=&quot;kc&quot;&gt;null&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;AvroSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;runtimeType&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;previousSchema&lt;/span& [...]
-    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span 
class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span 
class=&quot;o&quot;&gt;{&lt;/span&gt;
-      &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span 
class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;AvroSerializer&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;&amp;lt;&amp;gt;(&lt;/span&gt;&lt;span 
class=&quot;n&quot;&gt;runtimeType&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&gt;&lt;span 
class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span 
class=&quot;n&quot;&gt;runtimeSchema&lt;/span&g [...]
-    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
-  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
-&lt;span 
class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
-
-&lt;h1 
id=&quot;the-state-processor-api-reading-writing-and-modifying-flink-state&quot;&gt;The
 State Processor API: Reading, writing and modifying Flink state&lt;/h1&gt;
-
-&lt;p&gt;The State Processor API allows reading from and writing to Flink 
savepoints. Some of the interesting use cases it can be used for are:&lt;/p&gt;
-
-&lt;ul&gt;
-  &lt;li&gt;Analyzing state for interesting patterns&lt;/li&gt;
-  &lt;li&gt;Troubleshooting or auditing jobs by checking for state 
discrepancies&lt;/li&gt;
-  &lt;li&gt;Bootstrapping state for new applications&lt;/li&gt;
-  &lt;li&gt;Modifying savepoints such as:
-    &lt;ul&gt;
-      &lt;li&gt;Changing the maximum parallelism of a savepoint after 
deploying a Flink job&lt;/li&gt;
-      &lt;li&gt;Introducing breaking schema updates to a Flink 
application&lt;/li&gt;
-      &lt;li&gt;Correcting invalid state in a Flink savepoint&lt;/li&gt;
-    &lt;/ul&gt;
-  &lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;In a &lt;a 
href=&quot;https://flink.apache.org/feature/2019/09/13/state-processor-api.html&quot;&gt;previous
 blog post&lt;/a&gt;, we discussed the State Processor API in detail, the 
community’s motivation behind introducing the feature in Flink 1.9, what you 
can use the API for and how you can use it. Essentially, the State Processor 
API is based around a relational model of mapping your Flink job state to a 
database, as illustrated in the diagram below. We encourage you to &lt; [...]
-
-&lt;ul&gt;
-  &lt;li&gt;Reading Keyed and Operator State with the State Processor API 
and&lt;/li&gt;
-  &lt;li&gt;Writing and Bootstrapping Keyed and Operator State with the State 
Processor API&lt;/li&gt;
-&lt;/ul&gt;
-
-&lt;p&gt;Stay tuned for more details and guidance around this feature of 
Flink.&lt;/p&gt;
-
-&lt;center&gt;
-&lt;img 
src=&quot;/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-state-processor-api-visual-1.png&quot;
 width=&quot;600px&quot; alt=&quot;State Processor API in Apache Flink&quot; 
/&gt;
-&lt;/center&gt;
-&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
-
-&lt;center&gt;
-&lt;img 
src=&quot;/img/blog/2020-01-29-state-unlocked-interacting-with-state-in-apache-flink/managing-state-in-flink-state-processor-api-visual-2.png&quot;
 width=&quot;600px&quot; alt=&quot;State Processor API in Apache Flink&quot; 
/&gt;
-&lt;/center&gt;
-&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
-
-&lt;h1 
id=&quot;looking-ahead-more-ways-to-interact-with-state-in-flink&quot;&gt;Looking
 ahead: More ways to interact with State in Flink&lt;/h1&gt;
-
-&lt;p&gt;There is a lot of discussion happening in the community related to 
extending the way Flink developers interact with state in their Flink 
applications. Regarding the State Processor API, some thoughts revolve around 
further broadening the API’s scope beyond its current ability to read from and 
write to both keyed and operator state. In upcoming releases, the State 
processor API will be extended to support both reading from and writing to 
windows and have a first-class integration [...]
-
-&lt;p&gt;Beyond widening the scope of the State Processor API, the Flink 
community is discussing a few additional ways to improve the way developers 
interact with state in Flink. One of them is the proposal for a Unified 
Savepoint Format (&lt;a 
href=&quot;https://cwiki.apache.org/confluence/display/FLINK/FLIP-41%3A+Unify+Binary+format+for+Keyed+State&quot;&gt;FLIP-41&lt;/a&gt;)
 for all keyed state backends. Such improvement aims at introducing a unified 
binary format across all savepoint [...]
-
-&lt;p&gt;The community is also discussing the ability to have upgradability 
dry runs in upcoming Flink releases. Having such functionality in Flink allows 
developers to detect incompatible updates offline without the need of starting 
a new Flink job from scratch. For example, Flink users will be able to uncover 
topology or schema incompatibilities upon upgrading a Flink job, without having 
to load the state back to a running Flink job in the first place. Additionally, 
with upgradability  [...]
-
-&lt;p&gt;With all  the exciting new functionality added in Flink 1.9 as well 
as some solid ideas and discussions around bringing state in Flink to the next 
level, the community is committed to making state in Apache Flink a fundamental 
element of the framework, something that is ever-present across versions and 
upgrades of your application and a component that is a true first-class citizen 
in Apache Flink. We encourage you to sign up to the &lt;a 
href=&quot;https://flink.apache.org/commu [...]
-</description>
-<pubDate>Wed, 29 Jan 2020 13:00:00 +0100</pubDate>
-<link>https://flink.apache.org/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html</link>
-<guid 
isPermaLink="true">/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html</guid>
-</item>
-
 </channel>
 </rss>
diff --git a/content/blog/index.html b/content/blog/index.html
index b949719b4..e808b14cc 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 Release 
Announcement</a></h2>
+
+      <p>25 Aug 2022
+       Danny Cranmer </p>
+
+      <p>The Apache Flink Community is pleased to announce a bug fix release 
for Flink 1.15.</p>
+
+      <p><a href="/news/2022/08/25/release-1.15.2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></h2>
 
@@ -362,19 +375,6 @@ We are now proud to announce the first production ready 
release of the operator
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2022/05/23/latency-part2.html">Getting 
into Low-Latency Gears with Apache Flink - Part Two</a></h2>
-
-      <p>23 May 2022
-       Jun Qin  &amp; Nico Kruber </p>
-
-      <p>This multi-part series of blog post presents a collection of 
low-latency techniques in Flink. Following with part one, Part two continues  
with a few more techniques that optimize latency directly.</p>
-
-      <p><a href="/2022/05/23/latency-part2.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -407,6 +407,16 @@ We are now proud to announce the first production ready 
release of the operator
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page10/index.html b/content/blog/page10/index.html
index 827afbac9..d820c6b39 100644
--- a/content/blog/page10/index.html
+++ b/content/blog/page10/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/2020/04/09/pyflink-udf-support-flink.html">PyFlink: Introducing Python 
Support for UDFs in Flink's Table API</a></h2>
+
+      <p>09 Apr 2020
+       Jincheng Sun (<a 
href="https://twitter.com/sunjincheng121";>@sunjincheng121</a>) &amp; Markos 
Sfikas (<a href="https://twitter.com/MarkSfik";>@MarkSfik</a>)</p>
+
+      <p>Flink 1.10 extends its support for Python by adding Python UDFs in 
PyFlink. This post explains how UDFs work in PyFlink and gives some practical 
examples of how to use UDFs in PyFlink.</p>
+
+      <p><a href="/2020/04/09/pyflink-udf-support-flink.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2020/04/07/release-statefun-2.0.0.html">Stateful Functions 2.0 - An 
Event-driven Database on Apache Flink</a></h2>
 
@@ -366,19 +379,6 @@ This release marks a big milestone: Stateful Functions 2.0 
is not only an API up
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">State
 Unlocked: Interacting with State in Apache Flink</a></h2>
-
-      <p>29 Jan 2020
-       Seth Wiesman (<a 
href="https://twitter.com/sjwiesman";>@sjwiesman</a>)</p>
-
-      <p>This post discusses the efforts of the Flink community as they relate 
to state management in Apache Flink. We showcase some practical examples of how 
the different features and APIs can be utilized and cover some future ideas for 
new and improved ways of managing state in Apache Flink.</p>
-
-      <p><a 
href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">Continue
 reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -411,6 +411,16 @@ This release marks a big milestone: Stateful Functions 2.0 
is not only an API up
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page11/index.html b/content/blog/page11/index.html
index 040342839..8256061d1 100644
--- a/content/blog/page11/index.html
+++ b/content/blog/page11/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">State
 Unlocked: Interacting with State in Apache Flink</a></h2>
+
+      <p>29 Jan 2020
+       Seth Wiesman (<a 
href="https://twitter.com/sjwiesman";>@sjwiesman</a>)</p>
+
+      <p>This post discusses the efforts of the Flink community as they relate 
to state management in Apache Flink. We showcase some practical examples of how 
the different features and APIs can be utilized and cover some future ideas for 
new and improved ways of managing state in Apache Flink.</p>
+
+      <p><a 
href="/news/2020/01/29/state-unlocked-interacting-with-state-in-apache-flink.html">Continue
 reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2020/01/15/demo-fraud-detection.html">Advanced Flink Application 
Patterns Vol.1: Case Study of a Fraud Detection System</a></h2>
 
@@ -366,19 +379,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/2019/07/23/flink-network-stack-2.html">Flink Network Stack Vol. 2: 
Monitoring, Metrics, and that Backpressure Thing</a></h2>
-
-      <p>23 Jul 2019
-       Nico Kruber  &amp; Piotr Nowojski </p>
-
-      <p>In a previous blog post, we presented how Flink’s network stack works 
from the high-level abstractions to the low-level details. This second  post 
discusses monitoring network-related metrics to identify backpressure or 
bottlenecks in throughput and latency.</p>
-
-      <p><a href="/2019/07/23/flink-network-stack-2.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -411,6 +411,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page12/index.html b/content/blog/page12/index.html
index 799bdf88f..21750bd0f 100644
--- a/content/blog/page12/index.html
+++ b/content/blog/page12/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/2019/07/23/flink-network-stack-2.html">Flink Network Stack Vol. 2: 
Monitoring, Metrics, and that Backpressure Thing</a></h2>
+
+      <p>23 Jul 2019
+       Nico Kruber  &amp; Piotr Nowojski </p>
+
+      <p>In a previous blog post, we presented how Flink’s network stack works 
from the high-level abstractions to the low-level details. This second  post 
discusses monitoring network-related metrics to identify backpressure or 
bottlenecks in throughput and latency.</p>
+
+      <p><a href="/2019/07/23/flink-network-stack-2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2019/07/02/release-1.8.1.html">Apache Flink 1.8.1 Released</a></h2>
 
@@ -367,19 +380,6 @@ for more details.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2019/03/06/ffsf-preview.html">What 
to expect from Flink Forward San Francisco 2019</a></h2>
-
-      <p>06 Mar 2019
-       Fabian Hueske (<a href="https://twitter.com/fhueske";>@fhueske</a>)</p>
-
-      <p>The third annual Flink Forward conference in San Francisco is just a 
few weeks away. Let's see what Flink Forward SF 2019 has in store for the 
Apache Flink and stream processing communities. This post covers some of its 
highlights!</p>
-
-      <p><a href="/news/2019/03/06/ffsf-preview.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -412,6 +412,16 @@ for more details.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page13/index.html b/content/blog/page13/index.html
index 225c6f982..f129587ae 100644
--- a/content/blog/page13/index.html
+++ b/content/blog/page13/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a href="/news/2019/03/06/ffsf-preview.html">What 
to expect from Flink Forward San Francisco 2019</a></h2>
+
+      <p>06 Mar 2019
+       Fabian Hueske (<a href="https://twitter.com/fhueske";>@fhueske</a>)</p>
+
+      <p>The third annual Flink Forward conference in San Francisco is just a 
few weeks away. Let's see what Flink Forward SF 2019 has in store for the 
Apache Flink and stream processing communities. This post covers some of its 
highlights!</p>
+
+      <p><a href="/news/2019/03/06/ffsf-preview.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2019/02/25/monitoring-best-practices.html">Monitoring Apache Flink 
Applications 101</a></h2>
 
@@ -373,21 +386,6 @@ Please check the <a 
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2018/10/29/release-1.5.5.html">Apache Flink 1.5.5 Released</a></h2>
-
-      <p>29 Oct 2018
-      </p>
-
-      <p><p>The Apache Flink community released the fifth bugfix version of 
the Apache Flink 1.5 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/10/29/release-1.5.5.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -420,6 +418,16 @@ Please check the <a 
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page14/index.html b/content/blog/page14/index.html
index 7ff2a326d..430557113 100644
--- a/content/blog/page14/index.html
+++ b/content/blog/page14/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2018/10/29/release-1.5.5.html">Apache Flink 1.5.5 Released</a></h2>
+
+      <p>29 Oct 2018
+      </p>
+
+      <p><p>The Apache Flink community released the fifth bugfix version of 
the Apache Flink 1.5 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/10/29/release-1.5.5.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2018/09/20/release-1.6.1.html">Apache Flink 1.6.1 Released</a></h2>
 
@@ -375,19 +390,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">An 
Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache 
Kafka, too!)</a></h2>
-
-      <p>01 Mar 2018
-       Piotr Nowojski (<a 
href="https://twitter.com/PiotrNowojski";>@PiotrNowojski</a>) &amp; Mike Winters 
(<a href="https://twitter.com/wints";>@wints</a>)</p>
-
-      <p>Flink 1.4.0 introduced a new feature that makes it possible to build 
end-to-end exactly-once applications with Flink and data sources and sinks that 
support transactions.</p>
-
-      <p><a 
href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">Continue 
reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -420,6 +422,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page15/index.html b/content/blog/page15/index.html
index 7636d1774..51c7c7557 100644
--- a/content/blog/page15/index.html
+++ b/content/blog/page15/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">An 
Overview of End-to-End Exactly-Once Processing in Apache Flink (with Apache 
Kafka, too!)</a></h2>
+
+      <p>01 Mar 2018
+       Piotr Nowojski (<a 
href="https://twitter.com/PiotrNowojski";>@PiotrNowojski</a>) &amp; Mike Winters 
(<a href="https://twitter.com/wints";>@wints</a>)</p>
+
+      <p>Flink 1.4.0 introduced a new feature that makes it possible to build 
end-to-end exactly-once applications with Flink and data sources and sinks that 
support transactions.</p>
+
+      <p><a 
href="/features/2018/03/01/end-to-end-exactly-once-apache-flink.html">Continue 
reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2018/02/15/release-1.4.1.html">Apache Flink 1.4.1 Released</a></h2>
 
@@ -374,21 +387,6 @@ what’s coming in Flink 1.4.0 as well as a preview of what 
the Flink community
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2017/05/16/official-docker-image.html">Introducing Docker Images 
for Apache Flink</a></h2>
-
-      <p>16 May 2017 by Patrick Lucas (Data Artisans) and Ismaël Mejía 
(Talend) (<a href="https://twitter.com/";>@iemejia</a>)
-      </p>
-
-      <p><p>For some time, the Apache Flink community has provided scripts to 
build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will 
have a <a href="https://hub.docker.com/r/_/flink/";>Docker image</a> on the 
Docker Hub. This image is maintained by the Flink community and curated by the 
<a href="https://github.com/docker-library/official-images";>Docker</a> team to 
ensure it meets the quality standards for container images of the Docker 
community.</p>
-
-</p>
-
-      <p><a href="/news/2017/05/16/official-docker-image.html">Continue 
reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -421,6 +419,16 @@ what’s coming in Flink 1.4.0 as well as a preview of what 
the Flink community
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page16/index.html b/content/blog/page16/index.html
index 9f4573b44..fd6c3af70 100644
--- a/content/blog/page16/index.html
+++ b/content/blog/page16/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2017/05/16/official-docker-image.html">Introducing Docker Images 
for Apache Flink</a></h2>
+
+      <p>16 May 2017 by Patrick Lucas (Data Artisans) and Ismaël Mejía 
(Talend) (<a href="https://twitter.com/";>@iemejia</a>)
+      </p>
+
+      <p><p>For some time, the Apache Flink community has provided scripts to 
build a Docker image to run Flink. Now, starting with version 1.2.1, Flink will 
have a <a href="https://hub.docker.com/r/_/flink/";>Docker image</a> on the 
Docker Hub. This image is maintained by the Flink community and curated by the 
<a href="https://github.com/docker-library/official-images";>Docker</a> team to 
ensure it meets the quality standards for container images of the Docker 
community.</p>
+
+</p>
+
+      <p><a href="/news/2017/05/16/official-docker-image.html">Continue 
reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2017/04/26/release-1.2.1.html">Apache Flink 1.2.1 Released</a></h2>
 
@@ -368,21 +383,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2016/08/24/ff16-keynotes-panels.html">Flink Forward 2016: 
Announcing Schedule, Keynotes, and Panel Discussion</a></h2>
-
-      <p>24 Aug 2016
-      </p>
-
-      <p><p>An update for the Flink community: the <a 
href="http://flink-forward.org/kb_day/day-1/";>Flink Forward 2016 schedule</a> 
is now available online. This year's event will include 2 days of talks from 
stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and 
more. Following the talks is a full day of hands-on Flink training.</p>
-
-</p>
-
-      <p><a href="/news/2016/08/24/ff16-keynotes-panels.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -415,6 +415,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page17/index.html b/content/blog/page17/index.html
index ad0c25b7d..9ba76ba03 100644
--- a/content/blog/page17/index.html
+++ b/content/blog/page17/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2016/08/24/ff16-keynotes-panels.html">Flink Forward 2016: 
Announcing Schedule, Keynotes, and Panel Discussion</a></h2>
+
+      <p>24 Aug 2016
+      </p>
+
+      <p><p>An update for the Flink community: the <a 
href="http://flink-forward.org/kb_day/day-1/";>Flink Forward 2016 schedule</a> 
is now available online. This year's event will include 2 days of talks from 
stream processing experts at Google, MapR, Alibaba, Netflix, Cloudera, and 
more. Following the talks is a full day of hands-on Flink training.</p>
+
+</p>
+
+      <p><a href="/news/2016/08/24/ff16-keynotes-panels.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2016/08/11/release-1.1.1.html">Flink 1.1.1 Released</a></h2>
 
@@ -372,21 +387,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2016/02/11/release-0.10.2.html">Flink 0.10.2 Released</a></h2>
-
-      <p>11 Feb 2016
-      </p>
-
-      <p><p>Today, the Flink community released Flink version 
<strong>0.10.2</strong>, the second bugfix release of the 0.10 series.</p>
-
-</p>
-
-      <p><a href="/news/2016/02/11/release-0.10.2.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -419,6 +419,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page18/index.html b/content/blog/page18/index.html
index 934ed0b14..b8f630e33 100644
--- a/content/blog/page18/index.html
+++ b/content/blog/page18/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2016/02/11/release-0.10.2.html">Flink 0.10.2 Released</a></h2>
+
+      <p>11 Feb 2016
+      </p>
+
+      <p><p>Today, the Flink community released Flink version 
<strong>0.10.2</strong>, the second bugfix release of the 0.10 series.</p>
+
+</p>
+
+      <p><a href="/news/2016/02/11/release-0.10.2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2015/12/18/a-year-in-review.html">Flink 2015: A year in review, and 
a lookout to 2016</a></h2>
 
@@ -376,21 +391,6 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Announcing 
Apache Flink 0.9.0</a></h2>
-
-      <p>24 Jun 2015
-      </p>
-
-      <p><p>The Apache Flink community is pleased to announce the availability 
of the 0.9.0 release. The release is the result of many months of hard work 
within the Flink community. It contains many new features and improvements 
which were previewed in the 0.9.0-milestone1 release and have been polished 
since then. This is the largest Flink release so far.</p>
-
-</p>
-
-      <p><a 
href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Continue 
reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -423,6 +423,16 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page19/index.html b/content/blog/page19/index.html
index ca88896b4..78d7e4c0a 100644
--- a/content/blog/page19/index.html
+++ b/content/blog/page19/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Announcing 
Apache Flink 0.9.0</a></h2>
+
+      <p>24 Jun 2015
+      </p>
+
+      <p><p>The Apache Flink community is pleased to announce the availability 
of the 0.9.0 release. The release is the result of many months of hard work 
within the Flink community. It contains many new features and improvements 
which were previewed in the 0.9.0-milestone1 release and have been polished 
since then. This is the largest Flink release so far.</p>
+
+</p>
+
+      <p><a 
href="/news/2015/06/24/announcing-apache-flink-0.9.0-release.html">Continue 
reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2015/05/14/Community-update-April.html">April 2015 in the Flink 
community</a></h2>
 
@@ -382,21 +397,6 @@ and offers a new API including definition of flexible 
windows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2015/01/06/december-in-flink.html">December 2014 in the Flink 
community</a></h2>
-
-      <p>06 Jan 2015
-      </p>
-
-      <p><p>This is the first blog post of a “newsletter” like series where we 
give a summary of the monthly activity in the Flink community. As the Flink 
project grows, this can serve as a “tl;dr” for people that are not following 
the Flink dev and user mailing lists, or those that are simply overwhelmed by 
the traffic.</p>
-
-</p>
-
-      <p><a href="/news/2015/01/06/december-in-flink.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -429,6 +429,16 @@ and offers a new API including definition of flexible 
windows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page2/index.html b/content/blog/page2/index.html
index 2206ce9d9..8896f2241 100644
--- a/content/blog/page2/index.html
+++ b/content/blog/page2/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a href="/2022/05/23/latency-part2.html">Getting 
into Low-Latency Gears with Apache Flink - Part Two</a></h2>
+
+      <p>23 May 2022
+       Jun Qin  &amp; Nico Kruber </p>
+
+      <p>This multi-part series of blog post presents a collection of 
low-latency techniques in Flink. Following with part one, Part two continues  
with a few more techniques that optimize latency directly.</p>
+
+      <p><a href="/2022/05/23/latency-part2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a href="/2022/05/18/latency-part1.html">Getting 
into Low-Latency Gears with Apache Flink - Part One</a></h2>
 
@@ -368,19 +381,6 @@ exciting changes.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2022/02/18/release-1.13.6.html">Apache Flink 1.13.6 Release 
Announcement</a></h2>
-
-      <p>18 Feb 2022
-       Konstantin Knauf (<a 
href="https://twitter.com/snntrable";>@snntrable</a>)</p>
-
-      <p>The Apache Flink Community is please to announce another bug fix 
release for Flink 1.13.</p>
-
-      <p><a href="/news/2022/02/18/release-1.13.6.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -413,6 +413,16 @@ exciting changes.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page20/index.html b/content/blog/page20/index.html
index 59b7dbb43..27b010c82 100644
--- a/content/blog/page20/index.html
+++ b/content/blog/page20/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2015/01/06/december-in-flink.html">December 2014 in the Flink 
community</a></h2>
+
+      <p>06 Jan 2015
+      </p>
+
+      <p><p>This is the first blog post of a “newsletter” like series where we 
give a summary of the monthly activity in the Flink community. As the Flink 
project grows, this can serve as a “tl;dr” for people that are not following 
the Flink dev and user mailing lists, or those that are simply overwhelmed by 
the traffic.</p>
+
+</p>
+
+      <p><a href="/news/2015/01/06/december-in-flink.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2014/11/18/hadoop-compatibility.html">Hadoop Compatibility in 
Flink</a></h2>
 
@@ -350,6 +365,16 @@ academic and open source project that Flink originates 
from.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page3/index.html b/content/blog/page3/index.html
index e5a693c17..015f0c829 100644
--- a/content/blog/page3/index.html
+++ b/content/blog/page3/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2022/02/18/release-1.13.6.html">Apache Flink 1.13.6 Release 
Announcement</a></h2>
+
+      <p>18 Feb 2022
+       Konstantin Knauf (<a 
href="https://twitter.com/snntrable";>@snntrable</a>)</p>
+
+      <p>The Apache Flink Community is please to announce another bug fix 
release for Flink 1.13.</p>
+
+      <p><a href="/news/2022/02/18/release-1.13.6.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2022/01/31/release-statefun-3.2.0.html">Stateful Functions 3.2.0 
Release Announcement</a></h2>
 
@@ -364,19 +377,6 @@ This new release brings various improvements to the 
StateFun runtime, a leaner w
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2021/11/03/flink-backward.html">Flink 
Backward - The Apache Flink Retrospective</a></h2>
-
-      <p>03 Nov 2021
-       Johannes Moser </p>
-
-      <p>A look back at the development cycle for Flink 1.14</p>
-
-      <p><a href="/2021/11/03/flink-backward.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -409,6 +409,16 @@ This new release brings various improvements to the 
StateFun runtime, a leaner w
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page4/index.html b/content/blog/page4/index.html
index 8280cd022..273a2ac42 100644
--- a/content/blog/page4/index.html
+++ b/content/blog/page4/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a href="/2021/11/03/flink-backward.html">Flink 
Backward - The Apache Flink Retrospective</a></h2>
+
+      <p>03 Nov 2021
+       Johannes Moser </p>
+
+      <p>A look back at the development cycle for Flink 1.14</p>
+
+      <p><a href="/2021/11/03/flink-backward.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/2021/10/26/sort-shuffle-part2.html">Sort-Based Blocking Shuffle 
Implementation in Flink - Part Two</a></h2>
 
@@ -377,21 +390,6 @@ This new release brings various improvements to the 
StateFun runtime, a leaner w
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2021/08/06/release-1.13.2.html">Apache Flink 1.13.2 
Released</a></h2>
-
-      <p>06 Aug 2021
-       Yun Tang </p>
-
-      <p><p>The Apache Flink community released the second bugfix version of 
the Apache Flink 1.13 series.</p>
-
-</p>
-
-      <p><a href="/news/2021/08/06/release-1.13.2.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -424,6 +422,16 @@ This new release brings various improvements to the 
StateFun runtime, a leaner w
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page5/index.html b/content/blog/page5/index.html
index 1c0686f96..1b11bc72c 100644
--- a/content/blog/page5/index.html
+++ b/content/blog/page5/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2021/08/06/release-1.13.2.html">Apache Flink 1.13.2 
Released</a></h2>
+
+      <p>06 Aug 2021
+       Yun Tang </p>
+
+      <p><p>The Apache Flink community released the second bugfix version of 
the Apache Flink 1.13 series.</p>
+
+</p>
+
+      <p><a href="/news/2021/08/06/release-1.13.2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2021/08/06/release-1.12.5.html">Apache Flink 1.12.5 
Released</a></h2>
 
@@ -369,21 +384,6 @@ to develop scalable, consistent, and elastic distributed 
applications.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 
Released</a></h2>
-
-      <p>03 Mar 2021
-       Yuan Mei  &amp; Roman Khachatryan </p>
-
-      <p><p>The Apache Flink community released the next bugfix version of the 
Apache Flink 1.12 series.</p>
-
-</p>
-
-      <p><a href="/news/2021/03/03/release-1.12.2.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -416,6 +416,16 @@ to develop scalable, consistent, and elastic distributed 
applications.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page6/index.html b/content/blog/page6/index.html
index 4e26af979..c70223e6c 100644
--- a/content/blog/page6/index.html
+++ b/content/blog/page6/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2021/03/03/release-1.12.2.html">Apache Flink 1.12.2 
Released</a></h2>
+
+      <p>03 Mar 2021
+       Yuan Mei  &amp; Roman Khachatryan </p>
+
+      <p><p>The Apache Flink community released the next bugfix version of the 
Apache Flink 1.12 series.</p>
+
+</p>
+
+      <p><a href="/news/2021/03/03/release-1.12.2.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a href="/2021/02/10/native-k8s-with-ha.html">How 
to natively deploy Flink on Kubernetes with High-Availability (HA)</a></h2>
 
@@ -365,19 +380,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/news/2020/12/10/release-1.12.0.html">Apache Flink 1.12.0 Release 
Announcement</a></h2>
-
-      <p>10 Dec 2020
-       Marta Paes (<a href="https://twitter.com/morsapaes";>@morsapaes</a>) 
&amp; Aljoscha Krettek (<a 
href="https://twitter.com/aljoscha";>@aljoscha</a>)</p>
-
-      <p>The Apache Flink community is excited to announce the release of 
Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring 
significant improvements to usability as well as new features to Flink users 
across the whole API stack. We're particularly excited about adding efficient 
batch execution to the DataStream API, Kubernetes HA as an alternative to 
ZooKeeper, support for upsert mode in the Kafka SQL connector and the new 
Python DataStream API! Read on for all m [...]
-
-      <p><a href="/news/2020/12/10/release-1.12.0.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -410,6 +412,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page7/index.html b/content/blog/page7/index.html
index d4faaddb2..bb5217867 100644
--- a/content/blog/page7/index.html
+++ b/content/blog/page7/index.html
@@ -240,6 +240,19 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/news/2020/12/10/release-1.12.0.html">Apache Flink 1.12.0 Release 
Announcement</a></h2>
+
+      <p>10 Dec 2020
+       Marta Paes (<a href="https://twitter.com/morsapaes";>@morsapaes</a>) 
&amp; Aljoscha Krettek (<a 
href="https://twitter.com/aljoscha";>@aljoscha</a>)</p>
+
+      <p>The Apache Flink community is excited to announce the release of 
Flink 1.12.0! Close to 300 contributors worked on over 1k threads to bring 
significant improvements to usability as well as new features to Flink users 
across the whole API stack. We're particularly excited about adding efficient 
batch execution to the DataStream API, Kubernetes HA as an alternative to 
ZooKeeper, support for upsert mode in the Kafka SQL connector and the new 
Python DataStream API! Read on for all m [...]
+
+      <p><a href="/news/2020/12/10/release-1.12.0.html">Continue reading 
&raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2020/11/11/release-statefun-2.2.1.html">Stateful Functions 2.2.1 
Release Announcement</a></h2>
 
@@ -369,21 +382,6 @@ as well as increased observability for operational 
purposes.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/2020/08/19/statefun.html">Monitoring 
and Controlling Networks of IoT Devices with Flink Stateful Functions</a></h2>
-
-      <p>19 Aug 2020
-       Igal Shilman (<a 
href="https://twitter.com/IgalShilman";>@IgalShilman</a>)</p>
-
-      <p><p>In this blog post, we’ll take a look at a class of use cases that 
is a natural fit for <a 
href="https://flink.apache.org/stateful-functions.html";>Flink Stateful 
Functions</a>: monitoring and controlling networks of connected devices (often 
called the “Internet of Things” (IoT)).</p>
-
-</p>
-
-      <p><a href="/2020/08/19/statefun.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -416,6 +414,16 @@ as well as increased observability for operational 
purposes.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page8/index.html b/content/blog/page8/index.html
index 46b688098..59a8d1d8a 100644
--- a/content/blog/page8/index.html
+++ b/content/blog/page8/index.html
@@ -240,6 +240,21 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a href="/2020/08/19/statefun.html">Monitoring 
and Controlling Networks of IoT Devices with Flink Stateful Functions</a></h2>
+
+      <p>19 Aug 2020
+       Igal Shilman (<a 
href="https://twitter.com/IgalShilman";>@IgalShilman</a>)</p>
+
+      <p><p>In this blog post, we’ll take a look at a class of use cases that 
is a natural fit for <a 
href="https://flink.apache.org/stateful-functions.html";>Flink Stateful 
Functions</a>: monitoring and controlling networks of connected devices (often 
called the “Internet of Things” (IoT)).</p>
+
+</p>
+
+      <p><a href="/2020/08/19/statefun.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2020/08/06/external-resource.html">Accelerating your workload with 
GPU and other external resources</a></h2>
 
@@ -368,22 +383,6 @@ illustrate this trend.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Flink on Zeppelin 
Notebooks for Interactive Data Analysis - Part 2</a></h2>
-
-      <p>23 Jun 2020
-       Jeff Zhang (<a href="https://twitter.com/zjffdu";>@zjffdu</a>)</p>
-
-      <p><p>In a previous post, we introduced the basics of Flink on Zeppelin 
and how to do Streaming ETL. In this second part of the “Flink on Zeppelin” 
series of posts, I will share how to 
-perform streaming data visualization via Flink on Zeppelin and how to use 
Apache Flink UDFs in Zeppelin.</p>
-
-</p>
-
-      <p><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Continue 
reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -416,6 +415,16 @@ perform streaming data visualization via Flink on Zeppelin 
and how to use Apache
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/blog/page9/index.html b/content/blog/page9/index.html
index 298e296c7..4c373983e 100644
--- a/content/blog/page9/index.html
+++ b/content/blog/page9/index.html
@@ -240,6 +240,22 @@
   <div class="col-sm-8">
     <!-- Blog posts -->
     
+    <article>
+      <h2 class="blog-title"><a 
href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Flink on Zeppelin 
Notebooks for Interactive Data Analysis - Part 2</a></h2>
+
+      <p>23 Jun 2020
+       Jeff Zhang (<a href="https://twitter.com/zjffdu";>@zjffdu</a>)</p>
+
+      <p><p>In a previous post, we introduced the basics of Flink on Zeppelin 
and how to do Streaming ETL. In this second part of the “Flink on Zeppelin” 
series of posts, I will share how to 
+perform streaming data visualization via Flink on Zeppelin and how to use 
Apache Flink UDFs in Zeppelin.</p>
+
+</p>
+
+      <p><a href="/ecosystem/2020/06/23/flink-on-zeppelin-part2.html">Continue 
reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
     <article>
       <h2 class="blog-title"><a 
href="/news/2020/06/15/flink-on-zeppelin-part1.html">Flink on Zeppelin 
Notebooks for Interactive Data Analysis - Part 1</a></h2>
 
@@ -367,19 +383,6 @@ and provide a tutorial for running Streaming ETL with 
Flink on Zeppelin.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a 
href="/2020/04/09/pyflink-udf-support-flink.html">PyFlink: Introducing Python 
Support for UDFs in Flink's Table API</a></h2>
-
-      <p>09 Apr 2020
-       Jincheng Sun (<a 
href="https://twitter.com/sunjincheng121";>@sunjincheng121</a>) &amp; Markos 
Sfikas (<a href="https://twitter.com/MarkSfik";>@MarkSfik</a>)</p>
-
-      <p>Flink 1.10 extends its support for Python by adding Python UDFs in 
PyFlink. This post explains how UDFs work in PyFlink and gives some practical 
examples of how to use UDFs in PyFlink.</p>
-
-      <p><a href="/2020/04/09/pyflink-udf-support-flink.html">Continue reading 
&raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -412,6 +415,16 @@ and provide a tutorial for running Streaming ETL with 
Flink on Zeppelin.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 1.15.2 
Release Announcement</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></li>
 
       
diff --git a/content/index.html b/content/index.html
index fb9c9e887..ff9b23577 100644
--- a/content/index.html
+++ b/content/index.html
@@ -405,6 +405,9 @@
 
   <dl>
       
+        <dt> <a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 
1.15.2 Release Announcement</a></dt>
+        <dd>The Apache Flink Community is pleased to announce a bug fix 
release for Flink 1.15.</dd>
+      
         <dt> <a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></dt>
         <dd><p>The community has continued to work hard on improving the Flink 
Kubernetes Operator capabilities since our <a 
href="https://flink.apache.org/news/2022/06/05/release-kubernetes-operator-1.0.0.html";>first
 production ready release</a> we launched about two months ago.</p>
 
@@ -418,9 +421,6 @@
       
         <dt> <a href="/2022/07/11/final-checkpoint-part1.html">FLIP-147: 
Support Checkpoints After Tasks Finished - Part One</a></dt>
         <dd>This post briefly describes the motivation and changes made by the 
final checkpoint mechanism, including the changes to the checkpoint procedure 
and how tasks finish.</dd>
-      
-        <dt> <a href="/news/2022/07/06/release-1.15.1.html">Apache Flink 
1.15.1 Release Announcement</a></dt>
-        <dd>The Apache Flink Community is pleased to announce a bug fix 
release for Flink 1.15.</dd>
     
   </dl>
 
diff --git a/content/index.html b/content/news/2022/08/25/release-1.15.2.html
similarity index 58%
copy from content/index.html
copy to content/news/2022/08/25/release-1.15.2.html
index fb9c9e887..56dd25842 100644
--- a/content/index.html
+++ b/content/news/2022/08/25/release-1.15.2.html
@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1">
     <!-- The above 3 meta tags *must* come first in the head; any other head 
content must come *after* these tags -->
-    <title>Apache Flink: Stateful Computations over Data Streams</title>
+    <title>Apache Flink: Apache Flink 1.15.2 Release Announcement</title>
     <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
     <link rel="icon" href="/favicon.ico" type="image/x-icon">
 
@@ -153,7 +153,7 @@
             <li><a href="/gettinghelp.html">Getting Help</a></li>
 
             <!-- Blog -->
-            <li><a href="/blog/"><b>Flink Blog</b></a></li>
+            <li class="active"><a href="/blog/"><b>Flink Blog</b></a></li>
 
 
             <!-- Flink-packages -->
@@ -185,7 +185,8 @@
             <li>
               
                 
-                  <a href="/zh/">中文版</a>
+                  <!-- link to the Chinese home page when current is blog page 
-->
+                  <a href="/zh">中文版</a>
                 
               
             </li>
@@ -233,259 +234,164 @@
       </div>
       <div class="col-sm-9">
       <div class="row-fluid">
-
-  <div class="col-sm-12">
-    <p class="lead">
-      <strong>Apache Flink<sup>®</sup> — Stateful Computations over Data 
Streams</strong>
-    </p>
-  </div>
-
-<div class="col-sm-12">
-  <hr />
-</div>
-
-</div>
-
-<!-- High-level architecture figure -->
-
-<div class="row front-graphic">
-  <hr />
-  <img src="/img/flink-home-graphic.png" width="800px" />
-</div>
-
-<!-- Feature grid -->
-
-<!--
-<div class="row">
   <div class="col-sm-12">
-    <hr />
-    <h2><a href="/features.html">Features</a></h2>
-  </div>
-</div>
--->
-<div class="row">
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon-th"></span> <b>All streaming use 
cases</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>Event-driven Applications</li>
-          <li>Stream &amp; Batch Analytics</li>
-          <li>Data Pipelines &amp; ETL</li>
-        </ul>
-        <a href="/usecases.html">Learn more</a>
-      </div>
-    </div>
-  </div>
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon-ok"></span> <b>Guaranteed 
correctness</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>Exactly-once state consistency</li>
-          <li>Event-time processing</li>
-          <li>Sophisticated late data handling</li>
-        </ul>
-        <a 
href="/flink-applications.html#building-blocks-for-streaming-applications">Learn
 more</a>
-      </div>
-    </div>
-  </div>
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon glyphicon-sort-by-attributes"></span> 
<b>Layered APIs</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>SQL on Stream &amp; Batch Data</li>
-          <li>DataStream API &amp; DataSet API</li>
-          <li>ProcessFunction (Time &amp; State)</li>
-        </ul>
-        <a href="/flink-applications.html#layered-apis">Learn more</a>
-      </div>
-    </div>
-  </div>
-</div>
-<div class="row">
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon-dashboard"></span> <b>Operational 
Focus</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>Flexible deployment</li>
-          <li>High-availability setup</li>
-          <li>Savepoints</li>
-        </ul>
-        <a href="/flink-operations.html">Learn more</a>
-      </div>
-    </div>
-  </div>
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon-fullscreen"></span> <b>Scales to any 
use case</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>Scale-out architecture</li>
-          <li>Support for very large state</li>
-          <li>Incremental checkpointing</li>
-        </ul>
-        <a href="/flink-architecture.html#run-applications-at-any-scale">Learn 
more</a>
-      </div>
+    <div class="row">
+      <h1>Apache Flink 1.15.2 Release Announcement</h1>
+      <p><i></i></p>
+
+      <article>
+        <p>25 Aug 2022 Danny Cranmer </p>
+
+<p>The Apache Flink Community is pleased to announce the second bug fix 
release of the Flink 1.15 series.</p>
+
+<p>This release includes 30 bug fixes, vulnerability fixes, and minor 
improvements for Flink 1.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:
+<a 
href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&amp;version=12351829";>JIRA</a>.</p>
+
+<p>We highly recommend all users upgrade to Flink 1.15.2.</p>
+
+<h1 id="release-artifacts">Release Artifacts</h1>
+
+<h2 id="maven-dependencies">Maven Dependencies</h2>
+
+<div class="highlight"><pre><code class="language-xml"><span 
class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span 
class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>flink-java<span 
class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>1.15.2<span 
class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+<span class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span 
class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>flink-streaming-java<span 
class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>1.15.2<span 
class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span>
+<span class="nt">&lt;dependency&gt;</span>
+  <span class="nt">&lt;groupId&gt;</span>org.apache.flink<span 
class="nt">&lt;/groupId&gt;</span>
+  <span class="nt">&lt;artifactId&gt;</span>flink-clients<span 
class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;version&gt;</span>1.15.2<span 
class="nt">&lt;/version&gt;</span>
+<span class="nt">&lt;/dependency&gt;</span></code></pre></div>
+
+<h2 id="binaries">Binaries</h2>
+
+<p>You can find the binaries on the updated <a 
href="/downloads.html">Downloads page</a>.</p>
+
+<h2 id="docker-images">Docker Images</h2>
+
+<ul>
+  <li><a 
href="https://hub.docker.com/_/flink?tab=tags&amp;page=1&amp;name=1.15.2";>library/flink</a>
 (official images)</li>
+  <li><a 
href="https://hub.docker.com/r/apache/flink/tags?page=1&amp;name=1.15.2";>apache/flink</a>
 (ASF repository)</li>
+</ul>
+
+<h2 id="pypi">PyPi</h2>
+
+<ul>
+  <li><a 
href="https://pypi.org/project/apache-flink/1.15.2/";>apache-flink==1.15.2</a></li>
+</ul>
+
+<h1 id="upgrade-notes">Upgrade Notes</h1>
+
+<p>For Table API: 1.15.0 and 1.15.1 generated non-deterministic UIDs for 
operators that 
+make it difficult/impossible to restore state or upgrade to next patch 
version. A new 
+table.exec.uid.generation config option (with correct default behavior) 
disables setting
+a UID for new pipelines from non-compiled plans. Existing pipelines can set 
+table.exec.uid.generation=ALWAYS if the 1.15.0/1 behavior was acceptable due 
to a stable
+environment. See <a 
href="https://issues.apache.org/jira/browse/FLINK-28861";>FLINK-28861</a>
+for more information.</p>
+
+<h1 id="release-notes">Release Notes</h1>
+
+<h2>        Bug
+</h2>
+<ul>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-23528";>FLINK-23528</a>] -     
    stop-with-savepoint can fail with FlinkKinesisConsumer
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-25097";>FLINK-25097</a>] -     
    Bug in inner join when the filter condition is boolean type
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-26931";>FLINK-26931</a>] -     
    Pulsar sink&#39;s producer name should be unique
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27399";>FLINK-27399</a>] -     
    Pulsar connector didn&#39;t set start consuming position correctly
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27570";>FLINK-27570</a>] -     
    Checkpoint path error does not cause the job to stop
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27794";>FLINK-27794</a>] -     
    The primary key obtained from MySQL is incorrect by using MysqlCatalog
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27856";>FLINK-27856</a>] -     
    Adding pod template without spec crashes job manager
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28027";>FLINK-28027</a>] -     
    Initialise Async Sink maximum number of in flight messages to low number 
for rate limiting strategy
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28057";>FLINK-28057</a>] -     
    LD_PRELOAD is hardcoded to x64 on flink-docker
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28226";>FLINK-28226</a>] -     
    &#39;Run kubernetes pyflink application test&#39; fails while pulling image
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28239";>FLINK-28239</a>] -     
    Table-Planner-Loader lacks access to commons-math3
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28240";>FLINK-28240</a>] -     
    NettyShuffleMetricFactory#RequestedMemoryUsageMetric#getValue may throw 
ArithmeticException when the total segments of NetworkBufferPool is 0
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28250";>FLINK-28250</a>] -     
    exactly-once sink kafka cause out of memory
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28269";>FLINK-28269</a>] -     
    Kubernetes test failed with permission denied
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28322";>FLINK-28322</a>] -     
    DataStreamScanProvider&#39;s new method is not compatible
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28357";>FLINK-28357</a>] -     
    Watermark issue when recovering Finished sources
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28404";>FLINK-28404</a>] -     
    Annotation @InjectClusterClient does not work correctly with 
RestClusterClient
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28454";>FLINK-28454</a>] -     
    Fix the wrong timestamp example of KafkaSource
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28577";>FLINK-28577</a>] -     
    1.15.1 web ui console report error about checkpoint size
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28602";>FLINK-28602</a>] -     
    StateChangeFsUploader cannot close stream normally while enabling 
compression
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28817";>FLINK-28817</a>] -     
    NullPointerException in HybridSource when restoring from checkpoint
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28835";>FLINK-28835</a>] -     
    Savepoint and checkpoint capabilities and limitations table is incorrect
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28861";>FLINK-28861</a>] -     
    Non-deterministic UID generation might cause issues during restore
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28880";>FLINK-28880</a>] -     
    Fix CEP doc with wrong result of strict contiguity of looping patterns
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28908";>FLINK-28908</a>] -     
    Coder for LIST type is incorrectly chosen is PyFlink
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28978";>FLINK-28978</a>] -     
    Kinesis connector doesn&#39;t work for new AWS regions
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28994";>FLINK-28994</a>] -     
    Enable withCredentials for Flink UI
+</li>
+</ul>
+
+<h2>        Improvement
+</h2>
+<ul>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27199";>FLINK-27199</a>] -     
    Bump Pulsar to 2.10.0 for fixing the unstable Pulsar test environment.
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-27865";>FLINK-27865</a>] -     
    Add guide and example for configuring SASL and SSL in Kafka SQL connector 
document
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28094";>FLINK-28094</a>] -     
    Upgrade AWS SDK to support ap-southeast-3 
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28140";>FLINK-28140</a>] -     
    Improve the documentation by adding Python examples
+</li>
+<li>[<a 
href="https://issues.apache.org/jira/browse/FLINK-28486";>FLINK-28486</a>] -     
    [docs-zh] Flink FileSystem SQL Connector Doc is not right
+</li>
+</ul>
+
+      </article>
     </div>
-  </div>
-  <div class="col-sm-4">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <span class="glyphicon glyphicon-flash"></span> <b>Excellent 
Performance</b>
-      </div>
-      <div class="panel-body">
-        <ul style="font-size: small;">
-          <li>Low latency</li>
-          <li>High throughput</li>
-          <li>In-Memory computing</li>
-        </ul>
-        <a 
href="/flink-architecture.html#leverage-in-memory-performance">Learn more</a>
-      </div>
+
+    <div class="row">
+      <div id="disqus_thread"></div>
+      <script type="text/javascript">
+        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE 
* * */
+        var disqus_shortname = 'stratosphere-eu'; // required: replace example 
with your forum shortname
+
+        /* * * DON'T EDIT BELOW THIS LINE * * */
+        (function() {
+            var dsq = document.createElement('script'); dsq.type = 
'text/javascript'; dsq.async = true;
+            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+             (document.getElementsByTagName('head')[0] || 
document.getElementsByTagName('body')[0]).appendChild(dsq);
+        })();
+      </script>
     </div>
   </div>
 </div>
-
-<!-- Events section -->
-<div class="row">
-
-<div class="col-sm-12">
-  <hr />
-</div>
-
-<div class="col-sm-3">
-
-  <h2><a>Upcoming Events</a></h2>
-
-</div>
-<div class="col-sm-9">
-  <!-- Flink Forward -->
-  <a href="https://flink-forward.org"; target="_blank">
-    <img style="width: 180px; padding-right: 10px" 
src="/img/flink-forward.png" alt="Flink Forward" />
-  </a>
-  <!-- ApacheCon -->
-  <a href="https://www.apache.org/events/current-event"; target="_blank">
-    <img style="width: 200px; padding-right: 10px" 
src="https://www.apache.org/events/current-event-234x60.png"; alt="ApacheCon" />
-  </a>
-    <!-- Flink Forward Asia -->
-    <a href="https://flink-forward.org.cn/"; target="_blank">
-      <img style="width: 230px" src="/img/flink-forward-asia.png" alt="Flink 
Forward Asia" />
-    </a>
-</div>
-
-</div>
-
-<!-- Updates section -->
-
-<div class="row">
-
-<div class="col-sm-12">
-  <hr />
-</div>
-
-<div class="col-sm-3">
-
-  <h2><a href="/blog">Latest Blog Posts</a></h2>
-
-</div>
-
-<div class="col-sm-9">
-
-  <dl>
-      
-        <dt> <a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></dt>
-        <dd><p>The community has continued to work hard on improving the Flink 
Kubernetes Operator capabilities since our <a 
href="https://flink.apache.org/news/2022/06/05/release-kubernetes-operator-1.0.0.html";>first
 production ready release</a> we launched about two months ago.</p>
-
-</dd>
-      
-        <dt> <a href="/news/2022/07/12/release-ml-2.1.0.html">Apache Flink ML 
2.1.0 Release Announcement</a></dt>
-        <dd>The Apache Flink community is excited to announce the release of 
Flink ML 2.1.0! This release focuses on improving Flink ML's infrastructure, 
such as Python SDK, memory management, and benchmark framework, to facilitate 
the development of performant, memory-safe, and easy-to-use algorithm 
libraries. We validated the enhanced infrastructure via benchmarks and 
confirmed that Flink ML can meet or exceed the performance of selected 
algorithms from alternative popular ML libraries [...]
-      
-        <dt> <a href="/2022/07/11/final-checkpoint-part2.html">FLIP-147: 
Support Checkpoints After Tasks Finished - Part Two</a></dt>
-        <dd>This post presents more details on the changes on the checkpoint 
procedure and task finish process made by the final checkpoint mechanism.</dd>
-      
-        <dt> <a href="/2022/07/11/final-checkpoint-part1.html">FLIP-147: 
Support Checkpoints After Tasks Finished - Part One</a></dt>
-        <dd>This post briefly describes the motivation and changes made by the 
final checkpoint mechanism, including the changes to the checkpoint procedure 
and how tasks finish.</dd>
-      
-        <dt> <a href="/news/2022/07/06/release-1.15.1.html">Apache Flink 
1.15.1 Release Announcement</a></dt>
-        <dd>The Apache Flink Community is pleased to announce a bug fix 
release for Flink 1.15.</dd>
-    
-  </dl>
-
-</div>
-
-<!-- Scripts section -->
-
-<script type="text/javascript" src="/js/jquery.jcarousel.min.js"></script>
-
-<script type="text/javascript">
-
-  $(window).load(function(){
-   $(function() {
-        var jcarousel = $('.jcarousel');
-
-        jcarousel
-            .on('jcarousel:reload jcarousel:create', function () {
-                var carousel = $(this),
-                    width = carousel.innerWidth();
-
-                if (width >= 600) {
-                    width = width / 4;
-                } else if (width >= 350) {
-                    width = width / 3;
-                }
-
-                carousel.jcarousel('items').css('width', Math.ceil(width) + 
'px');
-            })
-            .jcarousel({
-                wrap: 'circular',
-                autostart: true
-            });
-
-        $('.jcarousel-control-prev')
-            .jcarouselControl({
-                target: '-=1'
-            });
-
-        $('.jcarousel-control-next')
-            .jcarouselControl({
-                target: '+=1'
-            });
-
-        $('.jcarousel-pagination')
-            .on('jcarouselpagination:active', 'a', function() {
-                $(this).addClass('active');
-            })
-            .on('jcarouselpagination:inactive', 'a', function() {
-                $(this).removeClass('active');
-            })
-            .on('click', function(e) {
-                e.preventDefault();
-            })
-            .jcarouselPagination({
-                perPage: 1,
-                item: function(page) {
-                    return '<a href="#' + page + '">' + page + '</a>';
-                }
-            });
-    });
-  });
-
-</script>
-</div>
-
       </div>
     </div>
 
diff --git a/content/zh/index.html b/content/zh/index.html
index ca542ea8c..da347e07e 100644
--- a/content/zh/index.html
+++ b/content/zh/index.html
@@ -402,6 +402,9 @@
 
   <dl>
       
+        <dt> <a href="/news/2022/08/25/release-1.15.2.html">Apache Flink 
1.15.2 Release Announcement</a></dt>
+        <dd>The Apache Flink Community is pleased to announce a bug fix 
release for Flink 1.15.</dd>
+      
         <dt> <a 
href="/news/2022/07/25/release-kubernetes-operator-1.1.0.html">Apache Flink 
Kubernetes Operator 1.1.0 Release Announcement</a></dt>
         <dd><p>The community has continued to work hard on improving the Flink 
Kubernetes Operator capabilities since our <a 
href="https://flink.apache.org/news/2022/06/05/release-kubernetes-operator-1.0.0.html";>first
 production ready release</a> we launched about two months ago.</p>
 
@@ -415,9 +418,6 @@
       
         <dt> <a href="/2022/07/11/final-checkpoint-part1.html">FLIP-147: 
Support Checkpoints After Tasks Finished - Part One</a></dt>
         <dd>This post briefly describes the motivation and changes made by the 
final checkpoint mechanism, including the changes to the checkpoint procedure 
and how tasks finish.</dd>
-      
-        <dt> <a href="/news/2022/07/06/release-1.15.1.html">Apache Flink 
1.15.1 Release Announcement</a></dt>
-        <dd>The Apache Flink Community is pleased to announce a bug fix 
release for Flink 1.15.</dd>
     
   </dl>
 

Reply via email to