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

chia7712 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new b129ed45660 MINOR: Use immutable KIP link (#19153)
b129ed45660 is described below

commit b129ed45660bf32299936a9b55c4d286bd5bd5c5
Author: Ken Huang <[email protected]>
AuthorDate: Sun Mar 9 23:42:33 2025 +0800

    MINOR: Use immutable KIP link (#19153)
    
    Reviewers: TengYao Chi <[email protected]>, Chia-Ping Tsai 
<[email protected]>
---
 docs/api.html                                    |   2 +-
 docs/connect.html                                |   8 +-
 docs/design.html                                 |   4 +-
 docs/ecosystem.html                              |   2 +-
 docs/introduction.html                           |   2 +-
 docs/ops.html                                    |  28 +--
 docs/protocol.html                               |   6 +-
 docs/security.html                               |  10 +-
 docs/streams/architecture.html                   |   2 +-
 docs/streams/core-concepts.html                  |   4 +-
 docs/streams/developer-guide/config-streams.html |   2 +-
 docs/streams/developer-guide/running-app.html    |   2 +-
 docs/streams/developer-guide/security.html       |   4 +-
 docs/streams/upgrade-guide.html                  | 272 +++++++++++------------
 docs/upgrade.html                                |  42 ++--
 15 files changed, 195 insertions(+), 195 deletions(-)

diff --git a/docs/api.html b/docs/api.html
index 8f76bbc7036..5842548503e 100644
--- a/docs/api.html
+++ b/docs/api.html
@@ -24,7 +24,7 @@
        <li>The <a href="#adminapi">Admin</a> API allows managing and 
inspecting topics, brokers, and other Kafka objects.
        </ol>
 
-       Kafka exposes all its functionality over a language independent 
protocol which has clients available in many programming languages. However 
only the Java clients are maintained as part of the main Kafka project, the 
others are available as independent open source projects. A list of non-Java 
clients is available <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Clients";>here</a>.
+       Kafka exposes all its functionality over a language independent 
protocol which has clients available in many programming languages. However 
only the Java clients are maintained as part of the main Kafka project, the 
others are available as independent open source projects. A list of non-Java 
clients is available <a 
href="https://cwiki.apache.org/confluence/x/3gDVAQ";>here</a>.
 
        <h3 class="anchor-heading"><a id="producerapi" 
class="anchor-link"></a><a href="#producerapi">2.1 Producer API</a></h3>
 
diff --git a/docs/connect.html b/docs/connect.html
index f77e21bdf54..457bc575eaa 100644
--- a/docs/connect.html
+++ b/docs/connect.html
@@ -308,7 +308,7 @@ predicates.IsBar.pattern=bar</code></pre>
         <li><code>DELETE /connectors/{name}</code> - delete a connector, 
halting all tasks and deleting its configuration</li>
         <li><code>GET /connectors/{name}/topics</code> - get the set of topics 
that a specific connector is using since the connector was created or since a 
request to reset its set of active topics was issued</li>
         <li><code>PUT /connectors/{name}/topics/reset</code> - send a request 
to empty the set of active topics of a connector</li>
-        <li>Offsets management endpoints (see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-875%3A+First-class+offsets+support+in+Kafka+Connect";>KIP-875</a>
 for more details):
+        <li>Offsets management endpoints (see <a 
href="https://cwiki.apache.org/confluence/x/Io3GDQ";>KIP-875</a> for more 
details):
             <ul>
                 <li><code>GET /connectors/{name}/offsets</code> - get the 
current offsets for a connector</li>
                 <li><code>DELETE /connectors/{name}/offsets</code> - reset the 
offsets for a connector. The connector must exist and must be in the stopped 
state (see <a href="#connect_stopconnector"><code>PUT 
/connectors/{name}/stop</code></a>)</li>
@@ -381,7 +381,7 @@ predicates.IsBar.pattern=bar</code></pre>
         <li><code>PUT /admin/loggers/{name}</code> - set the log level for the 
specified logger</li>
     </ul>
 
-    <p>See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-495%3A+Dynamically+Adjust+Log+Levels+in+Connect";>KIP-495</a>
 for more details about the admin logger REST APIs.</p>
+    <p>See <a href="https://cwiki.apache.org/confluence/x/-4tTBw";>KIP-495</a> 
for more details about the admin logger REST APIs.</p>
 
     <p>For the complete specification of the Kafka Connect REST API, see the 
<a href="/{{version}}/generated/connect_rest.yaml">OpenAPI documentation</a></p>
 
@@ -817,7 +817,7 @@ if (offset != null) {
 
     <h6>Supporting exactly-once</h6>
 
-    <p>With the passing of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-618%3A+Exactly-Once+Support+for+Source+Connectors";>KIP-618</a>,
 Kafka Connect supports exactly-once source connectors as of version 3.3.0. In 
order for a source connector to take advantage of this support, it must be able 
to provide meaningful source offsets for each record that it emits, and resume 
consumption from the external system at the exact position corresponding to any 
of those offsets with [...]
+    <p>With the passing of <a 
href="https://cwiki.apache.org/confluence/x/Vg0rCQ";>KIP-618</a>, Kafka Connect 
supports exactly-once source connectors as of version 3.3.0. In order for a 
source connector to take advantage of this support, it must be able to provide 
meaningful source offsets for each record that it emits, and resume consumption 
from the external system at the exact position corresponding to any of those 
offsets without dropping or duplicating messages.</p>
 
     <h6>Defining transaction boundaries</h6>
 
@@ -985,7 +985,7 @@ Struct struct = new Struct(schema)
 
     <p>
     Starting with 2.3.0, Kafka Connect is using by default a protocol that 
performs
-    <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-415%3A+Incremental+Cooperative+Rebalancing+in+Kafka+Connect";>incremental
 cooperative rebalancing</a>
+    <a href="https://cwiki.apache.org/confluence/x/Y4MCBg";>incremental 
cooperative rebalancing</a>
     that incrementally balances the connectors and tasks across the Connect 
workers, affecting only tasks that are new, to be removed, or need to move from 
one worker to another.
     Other tasks are not stopped and restarted during the rebalance, as they 
would have been with the old protocol.
     </p>
diff --git a/docs/design.html b/docs/design.html
index 4d52277898a..4c686e68f52 100644
--- a/docs/design.html
+++ b/docs/design.html
@@ -140,7 +140,7 @@
     example, it validates that the number of records in the batch is same as 
what batch header states. This batch of messages is then written to disk in 
compressed form. The batch will remain compressed in the log and it will also 
be transmitted to the 
     consumer in compressed form. The consumer decompresses any compressed data 
that it receives.
     <p>
-    Kafka supports GZIP, Snappy, LZ4 and ZStandard compression protocols. More 
details on compression can be found <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Compression";>here</a>.
+    Kafka supports GZIP, Snappy, LZ4 and ZStandard compression protocols. More 
details on compression can be found <a 
href="https://cwiki.apache.org/confluence/x/S5qoAQ";>here</a>.
 
     <h3 class="anchor-heading"><a id="theproducer" class="anchor-link"></a><a 
href="#theproducer">4.4 The Producer</a></h3>
 
@@ -240,7 +240,7 @@
     the broker version and then throws an UnsupportedException. If you 
accidentally configure duplicate ids for different instances,
     a fencing mechanism on broker side will inform your duplicate client to 
shutdown immediately by triggering a 
<code>org.apache.kafka.common.errors.FencedInstanceIdException</code>.
     For more details, see
-    <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-345%3A+Introduce+static+membership+protocol+to+reduce+consumer+rebalances";>KIP-345</a>
+    <a href="https://cwiki.apache.org/confluence/x/kRg0BQ";>KIP-345</a>
 
     <h3 class="anchor-heading"><a id="semantics" class="anchor-link"></a><a 
href="#semantics">4.6 Message Delivery Semantics</a></h3>
     <p>
diff --git a/docs/ecosystem.html b/docs/ecosystem.html
index 5fbcec59ba2..a198e2efd71 100644
--- a/docs/ecosystem.html
+++ b/docs/ecosystem.html
@@ -15,4 +15,4 @@
  limitations under the License.
 -->
 
-There are a plethora of tools that integrate with Kafka outside the main 
distribution. The <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem";> ecosystem 
page</a> lists many of these, including stream processing systems, Hadoop 
integration, monitoring, and deployment tools.
+There are a plethora of tools that integrate with Kafka outside the main 
distribution. The <a href="https://cwiki.apache.org/confluence/x/Ri3VAQ";> 
ecosystem page</a> lists many of these, including stream processing systems, 
Hadoop integration, monitoring, and deployment tools.
diff --git a/docs/introduction.html b/docs/introduction.html
index 49de2faf030..5e1597f725a 100644
--- a/docs/introduction.html
+++ b/docs/introduction.html
@@ -119,7 +119,7 @@
     <strong>Clients</strong>: They allow you to write distributed applications 
and microservices that read, write,
     and process streams of events in parallel, at scale, and in a 
fault-tolerant manner even in the case of network
     problems or machine failures. Kafka ships with some such clients included, 
which are augmented by
-    <a href="https://cwiki.apache.org/confluence/display/KAFKA/Clients";>dozens 
of clients</a> provided by the Kafka
+    <a href="https://cwiki.apache.org/confluence/x/3gDVAQ";>dozens of 
clients</a> provided by the Kafka
     community: clients are available for Java and Scala including the 
higher-level
     <a href="/documentation/streams/">Kafka Streams</a> library, for Go, 
Python, C/C++, and
     many other programming languages as well as REST APIs.
diff --git a/docs/ops.html b/docs/ops.html
index e821cf50408..bee5c4d5b55 100644
--- a/docs/ops.html
+++ b/docs/ops.html
@@ -162,7 +162,7 @@ Deletion of requested consumer groups ('my-group', 
'my-other-group') was success
   <p>
   To reset offsets of a consumer group, "--reset-offsets" option can be used.
   This option supports one consumer group at the time. It requires defining 
following scopes: --all-topics or --topic. One scope must be selected, unless 
you use '--from-file' scenario. Also, first make sure that the consumer 
instances are inactive.
-  See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-122%3A+Add+Reset+Consumer+Group+Offsets+tooling";>KIP-122</a>
 for more details.
+  See <a href="https://cwiki.apache.org/confluence/x/_iEIB";>KIP-122</a> for 
more details.
 
   <p>
   It has 3 execution options:
@@ -590,7 +590,7 @@ primary->secondary.topics = foobar-topic, 
quux-.*</code></pre>
   <h4 class="anchor-heading"><a id="georeplication-mirrormaker" 
class="anchor-link"></a><a href="#georeplication-mirrormaker">Configuring 
Geo-Replication</a></h4>
 
   <p>
-    The following sections describe how to configure and run a dedicated 
MirrorMaker cluster. If you want to run MirrorMaker within an existing Kafka 
Connect cluster or other supported deployment setups, please refer to <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-382%3A+MirrorMaker+2.0";>KIP-382:
 MirrorMaker 2.0</a> and be aware that the names of configuration settings may 
vary between deployment modes.
+    The following sections describe how to configure and run a dedicated 
MirrorMaker cluster. If you want to run MirrorMaker within an existing Kafka 
Connect cluster or other supported deployment setups, please refer to <a 
href="https://cwiki.apache.org/confluence/x/ooOzBQ";>KIP-382: MirrorMaker 
2.0</a> and be aware that the names of configuration settings may vary between 
deployment modes.
   </p>
 
   <p>
@@ -600,7 +600,7 @@ primary->secondary.topics = foobar-topic, 
quux-.*</code></pre>
   <ul>
     <li><a 
href="https://github.com/apache/kafka/blob/trunk/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorMakerConfig.java";>MirrorMakerConfig</a>,
 <a 
href="https://github.com/apache/kafka/blob/trunk/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/MirrorConnectorConfig.java";>MirrorConnectorConfig</a></li>
     <li><a 
href="https://github.com/apache/kafka/blob/trunk/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/DefaultTopicFilter.java";>DefaultTopicFilter</a>
 for topics, <a 
href="https://github.com/apache/kafka/blob/trunk/connect/mirror/src/main/java/org/apache/kafka/connect/mirror/DefaultGroupFilter.java";>DefaultGroupFilter</a>
 for consumer groups</li>
-    <li>Example configuration settings in <a 
href="https://github.com/apache/kafka/blob/trunk/config/connect-mirror-maker.properties";>connect-mirror-maker.properties</a>,
 <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-382%3A+MirrorMaker+2.0";>KIP-382:
 MirrorMaker 2.0</a></li>
+    <li>Example configuration settings in <a 
href="https://github.com/apache/kafka/blob/trunk/config/connect-mirror-maker.properties";>connect-mirror-maker.properties</a>,
 <a href="https://cwiki.apache.org/confluence/x/ooOzBQ";>KIP-382: MirrorMaker 
2.0</a></li>
   </ul>
 
   <h5 class="anchor-heading"><a id="georeplication-config-syntax" 
class="anchor-link"></a><a href="#georeplication-config-syntax">Configuration 
File Syntax</a></h5>
@@ -695,7 +695,7 @@ us-east.admin.bootstrap.servers = 
broker8-secondary:9092</code></pre>
   </p>
 
   <p>
-    In either case, it is also necessary to enable intra-cluster communication 
between the MirrorMaker nodes, as described in  <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-710%3A+Full+support+for+distributed+mode+in+dedicated+MirrorMaker+2.0+clusters";>KIP-710</a>.
 To do this, the <code>dedicated.mode.enable.internal.rest</code> property must 
be set to <code>true</code>. In addition, many of the REST-related  <a 
href="https://kafka.apache.org/documentation/#connectconfig [...]
+    In either case, it is also necessary to enable intra-cluster communication 
between the MirrorMaker nodes, as described in  <a 
href="https://cwiki.apache.org/confluence/x/4g5RCg";>KIP-710</a>. To do this, 
the <code>dedicated.mode.enable.internal.rest</code> property must be set to 
<code>true</code>. In addition, many of the REST-related  <a 
href="https://kafka.apache.org/documentation/#connectconfigs";>configuration 
properties available for Kafka Connect</a> can be specified the MirrorM [...]
   </p>
 
 <pre><code class="language-text">dedicated.mode.enable.internal.rest = true
@@ -1129,8 +1129,8 @@ checkpoint-latency-ms-avg</code></pre>
   </p>
 
   <ul>
-    <li>Use <a href="#security_authz">prefix ACLs</a> (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>)
 to enforce a common prefix for topic names. For example, team A may only be 
permitted to create topics whose names start with 
<code>payments.teamA.</code>.</li>
-    <li>Define a custom <code>CreateTopicPolicy</code> (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-108%3A+Create+Topic+Policy";>KIP-108</a>
 and the setting <a 
href="#brokerconfigs_create.topic.policy.class.name">create.topic.policy.class.name</a>)
 to enforce strict naming patterns. These policies provide the most flexibility 
and can cover complex patterns and rules to match an organization's needs.</li>
+    <li>Use <a href="#security_authz">prefix ACLs</a> (cf. <a 
href="https://cwiki.apache.org/confluence/x/QpvLB";>KIP-290</a>) to enforce a 
common prefix for topic names. For example, team A may only be permitted to 
create topics whose names start with <code>payments.teamA.</code>.</li>
+    <li>Define a custom <code>CreateTopicPolicy</code> (cf. <a 
href="https://cwiki.apache.org/confluence/x/Iw8IB";>KIP-108</a> and the setting 
<a 
href="#brokerconfigs_create.topic.policy.class.name">create.topic.policy.class.name</a>)
 to enforce strict naming patterns. These policies provide the most flexibility 
and can cover complex patterns and rules to match an organization's needs.</li>
     <li>Disable topic creation for normal users by denying it with an ACL, and 
then rely on an external process to create topics on behalf of users (e.g., 
scripting or your favorite automation toolkit).</li>
     <li>It may also be useful to disable the Kafka feature to auto-create 
topics on demand by setting <code>auto.create.topics.enable=false</code> in the 
broker configuration. Note that you should not rely solely on this option.</li>
   </ul>
@@ -1155,7 +1155,7 @@ Security settings for Kafka fall into three main 
categories, which are similar t
   <ol>
     <li><strong>Encryption</strong> of data transferred between Kafka brokers 
and Kafka clients, between brokers, and between brokers and other optional 
tools.</li>
     <li><strong>Authentication</strong> of connections from Kafka clients and 
applications to Kafka brokers, as well as connections between Kafka 
brokers.</li>
-    <li><strong>Authorization</strong> of client operations such as creating, 
deleting, and altering the configuration of topics; writing events to or 
reading events from a topic; creating and deleting ACLs. Administrators can 
also define custom policies to put in place additional restrictions, such as a 
<code>CreateTopicPolicy</code> and <code>AlterConfigPolicy</code> (see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-108%3A+Create+Topic+Policy";>KIP-108</a>
 and the sett [...]
+    <li><strong>Authorization</strong> of client operations such as creating, 
deleting, and altering the configuration of topics; writing events to or 
reading events from a topic; creating and deleting ACLs. Administrators can 
also define custom policies to put in place additional restrictions, such as a 
<code>CreateTopicPolicy</code> and <code>AlterConfigPolicy</code> (see <a 
href="https://cwiki.apache.org/confluence/x/Iw8IB";>KIP-108</a> and the settings 
<a href="#brokerconfigs_create.t [...]
   </ol>
 
   <p>
@@ -1184,7 +1184,7 @@ $ bin/kafka-acls.sh \
   </p>
 
   <p>
-  <strong>Client quotas:</strong> Kafka supports different types of (per-user 
principal) client quotas. Because a client's quotas apply irrespective of which 
topics the client is writing to or reading from, they are a convenient and 
effective tool to allocate resources in a multi-tenant cluster. <a 
href="#design_quotascpu">Request rate quotas</a>, for example, help to limit a 
user's impact on broker CPU usage by limiting the time a broker spends on the 
<a href="/protocol.html">request ha [...]
+  <strong>Client quotas:</strong> Kafka supports different types of (per-user 
principal) client quotas. Because a client's quotas apply irrespective of which 
topics the client is writing to or reading from, they are a convenient and 
effective tool to allocate resources in a multi-tenant cluster. <a 
href="#design_quotascpu">Request rate quotas</a>, for example, help to limit a 
user's impact on broker CPU usage by limiting the time a broker spends on the 
<a href="/protocol.html">request ha [...]
   </p>
 
   <p>
@@ -4007,7 +4007,7 @@ foo
 <p>In the tiered storage approach, Kafka cluster is configured with two tiers 
of storage - local and remote.
   The local tier is the same as the current Kafka that uses the local disks on 
the Kafka brokers to store the log segments.
   The new remote tier uses external storage systems, such as HDFS or S3, to 
store the completed log segments.
-  Please check <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage";>KIP-405</a>
 for more information.
+  Please check <a 
href="https://cwiki.apache.org/confluence/x/KJDQBQ";>KIP-405</a> for more 
information.
 </p>
 
 <h4 class="anchor-heading"><a id="tiered_storage_config" 
class="anchor-link"></a><a href="#tiered_storage_config">Configuration</a></h4>
@@ -4159,14 +4159,14 @@ $ bin/kafka-topics.sh --create --topic tieredTopic 
--bootstrap-server localhost:
   <li>No support for log segments missing producer snapshot file. It can 
happen when topic is created before v2.8.0.</li>
 </ul>
 
-<p>For more information, please check <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Tiered+Storage+GA+Release+Notes";>Kafka
 Tiered Storage GA Release Notes</a>.
+<p>For more information, please check <a 
href="https://cwiki.apache.org/confluence/x/9xDOEg";>Kafka Tiered Storage GA 
Release Notes</a>.
 </p>
 
   <h3 class="anchor-heading"><a id="consumer_rebalance_protocol" 
class="anchor-link"></a><a href="#consumer_rebalance_protocol">6.10 Consumer 
Rebalance Protocol</a></h3>
 
   <h4 class="anchor-heading"><a id="consumer_rebalance_protocol_overview" 
class="anchor-link"></a><a 
href="#consumer_rebalance_protocol_overview">Overview</a></h4>
 
-  <p>Starting from Apache Kafka 4.0, the Next Generation of the Consumer 
Rebalance Protocol (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol";>KIP-848</a>)
+  <p>Starting from Apache Kafka 4.0, the Next Generation of the Consumer 
Rebalance Protocol (<a 
href="https://cwiki.apache.org/confluence/x/HhD1D";>KIP-848</a>)
     is Generally Available (GA). It improves the scalability of consumer 
groups while simplifying consumers. It also decreases rebalance times, thanks to
     its fully incremental design, which no longer relies on a global 
synchronization barrier.</p>
 
@@ -4202,7 +4202,7 @@ $ bin/kafka-topics.sh --create --topic tieredTopic 
--bootstrap-server localhost:
     on the server side.</p>
 
   <p>New metrics have been added to the Consumer when using the new rebalance 
protocol, mainly providing visibility over the improved threading model.
-    See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1068%3A+New+metrics+for+the+new+KafkaConsumer";>New
 Consumer Metrics</a>.</p>
+    See <a href="https://cwiki.apache.org/confluence/x/lQ_TEg";>New Consumer 
Metrics</a>.</p>
 
   <p>When the new rebalance protocol is enabled, the following configurations 
and APIs are no longer usable:</p>
   <ul>
@@ -4241,7 +4241,7 @@ $ bin/kafka-topics.sh --create --topic tieredTopic 
--bootstrap-server localhost:
 
 <h4 class="anchor-heading"><a id="transaction_protocol_overview" 
class="anchor-link"></a><a 
href="#transaction_protocol_overview">Overview</a></h4>
 
-<p>Starting from Apache Kafka 4.0, Transactions Server Side Defense (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-890%3A+Transactions+Server-Side+Defense";>KIP-890</a>)
+<p>Starting from Apache Kafka 4.0, Transactions Server Side Defense (<a 
href="https://cwiki.apache.org/confluence/x/B40ODg";>KIP-890</a>)
   brings a strengthened transactional protocol. When enabled and using 4.0 
producer clients, the producer epoch is bumped on every transaction to ensure 
every transaction includes the intended messages and duplicates are not
   written as part of the next transaction.</p>
 
@@ -4279,7 +4279,7 @@ $ bin/kafka-topics.sh --create --topic tieredTopic 
--bootstrap-server localhost:
 
   <h4 class="anchor-heading"><a id="eligible_leader_replicas_overview" 
class="anchor-link"></a><a 
href="#eligible_leader_replicas_overview">Overview</a></h4>
 
-  <p>Starting from Apache Kafka 4.0, Eligible Leader Replicas (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-966%3A+Eligible+Leader+Replicas";>KIP-966
 Part 1</a>)
+  <p>Starting from Apache Kafka 4.0, Eligible Leader Replicas (<a 
href="https://cwiki.apache.org/confluence/x/mpOzDw";>KIP-966 Part 1</a>)
     is available for the users to an improvement to Kafka replication. As the 
"strict min ISR" rule has been generally applied, which means the high 
watermark for the data partition can't advance
     if the size of the ISR is smaller than the min 
ISR(<code>min.insync.replicas</code>), it makes some replicas that are not in 
the ISR safe to become the leader. The KRaft controller
     stores such replicas in the PartitionRecord field called <code>Eligible 
Leader Replicas</code>. During the leader election, the controller will select 
the leaders
diff --git a/docs/protocol.html b/docs/protocol.html
index 84f4aec4b0d..963ce5a5a5f 100644
--- a/docs/protocol.html
+++ b/docs/protocol.html
@@ -122,11 +122,11 @@
 
 <p>The server will reject requests with a version it does not support, and 
will always respond to the client with exactly the protocol format it expects 
based on the version it included in its request. The intended upgrade path is 
that new features would first be rolled out on the server (with the older 
clients not making use of them) and then as newer clients are deployed these 
new features would gradually be taken advantage of. Note there is an 
exceptional case while <a href="#api_vers [...]
 
-<p>Note that <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-482%3A+The+Kafka+Protocol+should+Support+Optional+Tagged+Fields";>KIP-482
 tagged fields</a> can be added to a request without incrementing the version 
number.  This offers an additional way of evolving the message schema without 
breaking compatibility.  Tagged fields do not take up any space when the field 
is not set.  Therefore, if a field is rarely used, it is more efficient to make 
it a tagged field than to put [...]
+<p>Note that <a href="https://cwiki.apache.org/confluence/x/OhMyBw";>KIP-482 
tagged fields</a> can be added to a request without incrementing the version 
number.  This offers an additional way of evolving the message schema without 
breaking compatibility.  Tagged fields do not take up any space when the field 
is not set.  Therefore, if a field is rarely used, it is more efficient to make 
it a tagged field than to put it in the mandatory schema.  However, tagged 
fields are ignored by recip [...]
 
 <h5 class="anchor-heading"><a id="api_versions" class="anchor-link"></a><a 
href="#api_versions">Retrieving Supported API versions</a></h5>
 <p>In order to work against multiple broker versions, clients need to know 
what versions of various APIs a
-    broker supports. The broker exposes this information since 0.10.0.0 as 
described in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-35+-+Retrieving+protocol+version";>KIP-35</a>.
+    broker supports. The broker exposes this information since 0.10.0.0 as 
described in <a href="https://cwiki.apache.org/confluence/x/KK6nAw";>KIP-35</a>.
     Clients should use the supported API versions information to choose the 
highest API version supported by both client and broker. If no such version
     exists, an error should be reported to the user.</p>
 <p>The following sequence may be used by a client to obtain supported API 
versions from a broker.</p>
@@ -144,7 +144,7 @@
         with the <a href="#protocol_error_codes">error code</a> set to 
<code>UNSUPPORTED_VERSION</code> and the <code>api_versions</code>
         field populated with the supported version of the 
<code>ApiVersionsRequest</code>. It is then up to the client to retry, making
         another <code>ApiVersionsRequest</code> using the highest version 
supported by the client and broker.
-        See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-511%3A+Collect+and+Expose+Client%27s+Name+and+Version+in+the+Brokers";>KIP-511:
 Collect and Expose Client's Name and Version in the Brokers</a></li>
+        See <a href="https://cwiki.apache.org/confluence/x/qRJ4Bw";>KIP-511: 
Collect and Expose Client's Name and Version in the Brokers</a></li>
     <li>If multiple versions of an API are supported by broker and client, 
clients are recommended to use the latest version supported
         by the broker and itself.</li>
     <li>Deprecation of a protocol version is done by marking an API version as 
deprecated in the protocol documentation.</li>
diff --git a/docs/security.html b/docs/security.html
index ba1f5941c36..8c0d345ec8e 100644
--- a/docs/security.html
+++ b/docs/security.html
@@ -1146,7 +1146,7 @@ sasl.mechanism.inter.broker.protocol=GSSAPI (or one of 
the other enabled mechani
             <p>Delegation token based authentication is a lightweight 
authentication mechanism to complement existing SASL/SSL
                 methods. Delegation tokens are shared secrets between kafka 
brokers and clients. Delegation tokens will help processing
                 frameworks to distribute the workload to available workers in 
a secure environment without the added cost of distributing
-                Kerberos TGT/keytabs or keystores when 2-way SSL is used. See 
<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-48+Delegation+token+support+for+Kafka";>KIP-48</a>
+                Kerberos TGT/keytabs or keystores when 2-way SSL is used. See 
<a href="https://cwiki.apache.org/confluence/x/tfmnAw";>KIP-48</a>
                 for more details.</p>
             Under the default implementation of 
<code>principal.builder.class</code>, the owner of delegation token is used as 
the authenticated <code>Principal</code> for configuration of ACLs etc.
 
@@ -1246,8 +1246,8 @@ sasl.mechanism.inter.broker.protocol=GSSAPI (or one of 
the other enabled mechani
     <pre><code 
class="language-text">authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer</code></pre>
 
     Kafka ACLs are defined in the general format of "Principal {P} is 
[Allowed|Denied] Operation {O} From Host {H} on any Resource {R} matching 
ResourcePattern {RP}".
-    You can read more about the ACL structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and
-    resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
+    You can read more about the ACL structure in <a 
href="https://cwiki.apache.org/confluence/x/XIUWAw";>KIP-11</a> and
+    resource patterns in <a 
href="https://cwiki.apache.org/confluence/x/QpvLB";>KIP-290</a>.
     In order to add, remove, or list ACLs, you can use the Kafka ACL CLI 
<code>kafka-acls.sh</code>. 
     <h5><u>Behavior Without ACLs:</u></h5>
     <p>If a resource (R) does not have any ACLs defined, meaning that no ACL 
matches the resource, Kafka will restrict
@@ -1573,10 +1573,10 @@ 
RULE:[n:string](regexp)s/pattern/replacement/g/U</code></pre>
         <li><b>DelegationToken:</b> this represents the delegation tokens in 
the cluster. Actions, such as describing
             delegation tokens could be protected by a privilege on the 
DelegationToken resource. Since these objects have
             a little special behavior in Kafka it is recommended to read
-            <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-48+Delegation+token+support+for+Kafka#KIP-48DelegationtokensupportforKafka-DescribeDelegationTokenRequest";>KIP-48</a>
+            <a href="https://cwiki.apache.org/confluence/x/tfmnAw";>KIP-48</a>
             and the related upstream documentation at <a 
href="#security_delegation_token">Authentication using Delegation 
Tokens</a>.</li>
         <li><b>User:</b> CreateToken and DescribeToken operations can be 
granted to User resources to allow creating and describing
-            tokens for other users. More info can be found in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-373%3A+Allow+users+to+create+delegation+tokens+for+other+users";>KIP-373</a>.</li>
+            tokens for other users. More info can be found in <a 
href="https://cwiki.apache.org/confluence/x/cwOQBQ";>KIP-373</a>.</li>
     </ul>
     <h5 class="anchor-heading"><a id="operations_resources_and_protocols" 
class="anchor-link"></a><a 
href="#operations_resources_and_protocols">Operations and Resources on 
Protocols</a></h5>
     <p>In the below table we'll list the valid operations on resources that 
are executed by the Kafka API protocols.</p>
diff --git a/docs/streams/architecture.html b/docs/streams/architecture.html
index 1094f165957..ca77069700e 100644
--- a/docs/streams/architecture.html
+++ b/docs/streams/architecture.html
@@ -102,7 +102,7 @@
     <p>
         Starting more stream threads or more instances of the application 
merely amounts to replicating the topology and having it process a different 
subset of Kafka partitions, effectively parallelizing processing.
         It is worth noting that there is no shared state amongst the threads, 
so no inter-thread coordination is necessary. This makes it very simple to run 
topologies in parallel across the application instances and threads.
-        The assignment of Kafka topic partitions amongst the various stream 
threads is transparently handled by Kafka Streams leveraging <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Client-side+Assignment+Proposal";>Kafka's
 coordination</a> functionality.
+        The assignment of Kafka topic partitions amongst the various stream 
threads is transparently handled by Kafka Streams leveraging <a 
href="https://cwiki.apache.org/confluence/x/foynAw";>Kafka's coordination</a> 
functionality.
     </p>
 
     <p>
diff --git a/docs/streams/core-concepts.html b/docs/streams/core-concepts.html
index d9a2851e271..c400ca08453 100644
--- a/docs/streams/core-concepts.html
+++ b/docs/streams/core-concepts.html
@@ -289,7 +289,7 @@
         More specifically, it guarantees that for any record read from the 
source Kafka topics, its processing results will be reflected exactly once in 
the output Kafka topic as well as in the state stores for stateful operations.
         Note the key difference between Kafka Streams end-to-end exactly-once 
guarantee with other stream processing frameworks' claimed guarantees is that 
Kafka Streams tightly integrates with the underlying Kafka storage system and 
ensure that
         commits on the input topic offsets, updates on the state stores, and 
writes to the output topics will be completed atomically instead of treating 
Kafka as an external system that may have side-effects.
-        For more information on how this is done inside Kafka Streams, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-129%3A+Streams+Exactly-Once+Semantics";>KIP-129</a>.<br
 />
+        For more information on how this is done inside Kafka Streams, see <a 
href="https://cwiki.apache.org/confluence/x/0okYB";>KIP-129</a>.<br />
 
         As of the 2.6.0 release, Kafka Streams supports an improved 
implementation of exactly-once processing, named "exactly-once v2",
         which requires broker version 2.5.0 or newer.
@@ -298,7 +298,7 @@
         As of the 3.0.0 release, the first version of exactly-once has been 
deprecated. Users are encouraged to use exactly-once v2 for
         exactly-once processing from now on, and prepare by upgrading their 
brokers if necessary.
         For more information on how this is done inside the brokers and Kafka 
Streams, see 
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-447%3A+Producer+scalability+for+exactly+once+semantics";>KIP-447</a>.<br
 />
+        <a href="https://cwiki.apache.org/confluence/x/vhYlBg";>KIP-447</a>.<br 
/>
 
         To enable exactly-once semantics when running Kafka Streams 
applications,
         set the <code>processing.guarantee</code> config value (default value 
is <b>at_least_once</b>)
diff --git a/docs/streams/developer-guide/config-streams.html 
b/docs/streams/developer-guide/config-streams.html
index 7f9aaa60616..c1f23e994e1 100644
--- a/docs/streams/developer-guide/config-streams.html
+++ b/docs/streams/developer-guide/config-streams.html
@@ -661,7 +661,7 @@ 
settings.put(StreamsConfig.PRODUCTION_EXCEPTION_HANDLER_CLASS_CONFIG,
                 <a class="reference external" 
href="/{{version}}/javadoc/org/apache/kafka/streams/processor/FailOnInvalidTimestamp.html">FailOnInvalidTimestamp</a>.
                 This extractor retrieves built-in timestamps that are 
automatically embedded into Kafka messages by the Kafka producer
                 client since
-                <a class="reference external" 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-32+-+Add+timestamps+to+Kafka+message";>Kafka
 version 0.10</a>.
+                <a class="reference external" 
href="https://cwiki.apache.org/confluence/x/eaSnAw";>Kafka version 0.10</a>.
                 Depending on the setting of Kafka&#8217;s server-side <code 
class="docutils literal"><span 
class="pre">log.message.timestamp.type</span></code> broker and <code 
class="docutils literal"><span class="pre">message.timestamp.type</span></code> 
topic parameters,
                 this extractor provides you with:</p>
               <ul class="simple">
diff --git a/docs/streams/developer-guide/running-app.html 
b/docs/streams/developer-guide/running-app.html
index 7ef2b98a580..a6c603f2a3c 100644
--- a/docs/streams/developer-guide/running-app.html
+++ b/docs/streams/developer-guide/running-app.html
@@ -67,7 +67,7 @@ $ java -cp path-to-app-fatjar.jar 
com.example.MyStreamsApp</code></pre>
                   dynamically during application runtime without any downtime 
or data loss.  This makes your applications
                   resilient in the face of failures and for allows you to 
perform maintenance as needed (e.g. rolling upgrades).</p>
               <p>For more information about this elasticity, see the <a 
class="reference internal" 
href="../architecture.html#streams_architecture_tasks"><span class="std 
std-ref">Parallelism Model</span></a> section. Kafka Streams
-                  leverages the Kafka group management functionality, which is 
built right into the <a class="reference external" 
href="https://cwiki.apache.org/confluence/display/KAFKA/A+Guide+To+The+Kafka+Protocol";>Kafka
 wire protocol</a>. It is the foundation that enables the
+                  leverages the Kafka group management functionality, which is 
built right into the <a class="reference external" 
href="https://cwiki.apache.org/confluence/x/uxvVAQ";>Kafka wire protocol</a>. It 
is the foundation that enables the
                   elasticity of Kafka Streams applications: members of a group 
coordinate and collaborate jointly on the consumption and
                   processing of data in Kafka.  Additionally, Kafka Streams 
provides stateful processing and allows for fault-tolerant
                   state in environments where application instances may come 
and go at any time.</p>
diff --git a/docs/streams/developer-guide/security.html 
b/docs/streams/developer-guide/security.html
index e3622bf80e8..13e671fa931 100644
--- a/docs/streams/developer-guide/security.html
+++ b/docs/streams/developer-guide/security.html
@@ -85,8 +85,8 @@
                 it is recommended to use ACLs on prefixed resource pattern
                 to configure control lists to allow client to manage all 
topics and consumer groups started with this prefix
                 as <code class="docutils literal"><span 
class="pre">--resource-pattern-type prefixed --topic your.application.id 
--operation All </span></code>
-                (see <a class="reference external" 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-277+-+Fine+Grained+ACL+for+CreateTopics+API";>KIP-277</a>
-                and <a class="reference external" 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>
 for details).
+                (see <a class="reference external" 
href="https://cwiki.apache.org/confluence/x/zlOHB";>KIP-277</a>
+                and <a class="reference external" 
href="https://cwiki.apache.org/confluence/x/QpvLB";>KIP-290</a> for details).
             </p>
         </div>
         <div class="section" id="security-example">
diff --git a/docs/streams/upgrade-guide.html b/docs/streams/upgrade-guide.html
index b1d16397e10..eb96e0b4c95 100644
--- a/docs/streams/upgrade-guide.html
+++ b/docs/streams/upgrade-guide.html
@@ -136,13 +136,13 @@
         can choose whether or not to reuse the source topic based on the 
<code>StreamsConfig#TOPOLOGY_OPTIMIZATION_CONFIG</code>: if you are upgrading 
from the old <code>KStreamBuilder</code> class and hence you need to change 
your code to use
         the new <code>StreamsBuilder</code>, you should set this config value 
to <code>StreamsConfig#OPTIMIZE</code> to continue reusing the source topic; if 
you are upgrading from 1.0 or 1.1 where you are already using 
<code>StreamsBuilder</code> and hence have already
         created a separate changelog topic, you should set this config value 
to <code>StreamsConfig#NO_OPTIMIZATION</code> when upgrading to 
{{fullDotVersion}} in order to use that changelog topic for restoring the state 
store.
-        More details about the new config 
<code>StreamsConfig#TOPOLOGY_OPTIMIZATION_CONFIG</code> can be found in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-295%3A+Add+Streams+Configuration+Allowing+for+Optional+Topology+Optimization";>KIP-295</a>.
+        More details about the new config 
<code>StreamsConfig#TOPOLOGY_OPTIMIZATION_CONFIG</code> can be found in <a 
href="https://cwiki.apache.org/confluence/x/V53LB";>KIP-295</a>.
     </p>
 
     <h3><a id="streams_api_changes_410" 
href="#streams_api_changes_410">Streams API changes in 4.1.0</a></h3>
 
     <p>
-        The introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1111:+Enforcing+Explicit+Naming+for+Kafka+Streams+Internal+Topics";>KIP-1111</a>
+        The introduction of <a 
href="https://cwiki.apache.org/confluence/x/4Y_MEw";>KIP-1111</a>
         enables you to enforce explicit naming for all internal resources of 
the topology, including internal topics (e.g., changelog and repartition 
topics) and their associated state stores.
         This ensures that every internal resource is named before the Kafka 
Streams application is deployed, which is essential for upgrading your topology.
         You can enable this feature via <code>StreamsConfig</code> using the 
<code>StreamsConfig#ENSURE_EXPLICIT_INTERNAL_RESOURCE_NAMING_CONFIG</code> 
parameter.
@@ -167,59 +167,59 @@
 
     <p>
         In this release the <code>ClientInstanceIds</code> instance stores the 
global consumer<code>Uuid</code> for the
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-714%3A+Client+metrics+and+observability#KIP714:Clientmetricsandobservability-Clientidentificationandtheclientinstanceid";>KIP-714</a>
+        <a 
href="https://cwiki.apache.org/confluence/x/2xRRCg#KIP714:Clientmetricsandobservability-Clientidentificationandtheclientinstanceid";>KIP-714</a>
         id with a key of global stream-thread name appended with 
<code>"-global-consumer"</code> where before it was only the global 
stream-thread name.
     </p>
 
     <p>
         In this release two configs 
<code>default.deserialization.exception.handler</code> and 
<code>default.production.exception.handler</code> are deprecated, as they don't 
have any overwrites, which is described in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1056%3A+Remove+%60default.%60+prefix+for+exception+handler+StreamsConfig";>KIP-1056</a>
+        <a href="https://cwiki.apache.org/confluence/x/Y41yEg";>KIP-1056</a>
         You can refer to new configs via 
<code>deserialization.exception.handler</code> and 
<code>production.exception.handler</code>.
     </p>
 
     <p>
         In previous release, a new version of the Processor API was introduced 
and the old Processor API was
         incrementally replaced and deprecated.
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1070%3A+deprecate+MockProcessorContext";>KIP-1070</a>
+        <a href="https://cwiki.apache.org/confluence/x/sxCTEg";>KIP-1070</a>
         follow this path by deprecating <code>MockProcessorContext</code>, 
<code>Transformer</code>,
         <code>TransformerSupplier</code>, <code>ValueTransformer</code>, and 
<code>ValueTransformerSupplier</code>.
     </p>
 
     <p>
         Previously, the <code>ProductionExceptionHandler</code> was not 
invoked on a (retriable) <code>TimeoutException</code>. With Kafka Streams 4.0, 
the handler is called, and the default handler would return <code>RETRY</code> 
to not change existing behavior.
-        However, a custom handler can now decide to break the infinite retry 
loop by returning either <code>CONTINUE</code> or <code>FAIL</code> (<a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=311627309";>KIP-1065</a>).
+        However, a custom handler can now decide to break the infinite retry 
loop by returning either <code>CONTINUE</code> or <code>FAIL</code> (<a 
href="https://cwiki.apache.org/confluence/x/LQ6TEg";>KIP-1065</a>).
     </p>
 
     <p>
         In this release, Kafka Streams metrics can be collected broker side 
via the KIP-714 broker-plugin.
-        For more detailed information, refer to <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1076%3A++Metrics+for+client+applications+KIP-714+extension";>KIP-1076</a>
 document please.
+        For more detailed information, refer to <a 
href="https://cwiki.apache.org/confluence/x/XA-OEg";>KIP-1076</a> document 
please.
     </p>
 
     <p>
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1077%3A+Deprecate+%60ForeachProcessor%60+and+move+to+internal+package";>KIP-1077</a>
+        <a href="https://cwiki.apache.org/confluence/x/eA-OEg";>KIP-1077</a>
         deprecates the <code>ForeachProcessor</code> class.
         This change is aimed at improving the organization and clarity of the 
Kafka Streams API by ensuring that internal classes are not exposed in public 
packages.
     </p>
 
     <p>
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1078%3A+Remove+Leaking+Getter+Methods+in+Joined+Helper+Class";>KIP-1078</a>
 deprecates the leaking getter methods in the <code>Joined</code> helper class.
+        <a href="https://cwiki.apache.org/confluence/x/hg-OEg";>KIP-1078</a> 
deprecates the leaking getter methods in the <code>Joined</code> helper class.
         These methods are deprecated without a replacement for future removal, 
as they don't add any value to Kafka Streams users.
     </p>
 
     <p>
         To ensures better encapsulation and organization of configuration 
documentation within Kafka Streams,
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1085%3A+Fix+leaking+*_DOC+variables+in+StreamsConfig";>KIP-1085</a>
+        <a href="https://cwiki.apache.org/confluence/x/hYz9Eg";>KIP-1085</a>
         deprecate certain public doc description variables that are only used 
within the <code>StreamsConfig</code> or <code>TopologyConfig</code> classes.
         Additionally, the unused variable <code>DUMMY_THREAD_INDEX</code> will 
also be deprecated.
     </p>
 
     <p>
         Due to the removal of the already deprecated <code>#through</code> 
method in Kafka Streams, the <code>intermediateTopicsOption</code> of 
<code>StreamsResetter</code> tool in Apache Kafka is
-        not needed any more and therefore is deprecated (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1087%3A+Removing+intermediateTopicsOption+from+StreamsResetter";>KIP-1087</a>).
+        not needed any more and therefore is deprecated (<a 
href="https://cwiki.apache.org/confluence/x/Vo39Eg";>KIP-1087</a>).
     </p>
 
     <p>
-        Since string metrics cannot be collected on the broker side (KIP-714), 
<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1091%3A+Improved+Kafka+Streams+operator+metrics";>KIP-1091</a>
+        Since string metrics cannot be collected on the broker side (KIP-714), 
<a href="https://cwiki.apache.org/confluence/x/IgstEw";>KIP-1091</a>
         introduces numeric counterparts to allow proper broker-side metric 
collection for Kafka Streams applications.
         These metrics will be available at the <code>INFO</code> recording 
level, and a thread-level metric with a String value will be available for 
users leveraging Java Management Extensions (<code>JMX</code>).
     </p>
@@ -234,7 +234,7 @@
     </p>
 
     <p>
-        With introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1106%3A+Add+duration+based+offset+reset+option+for+consumer+clients";>KIP-1106</a>,
+        With introduction of <a 
href="https://cwiki.apache.org/confluence/x/NIyMEw";>KIP-1106</a>,
         the existing <code>Topology.AutoOffsetReset</code> is deprecated and 
replaced with a new class <code>org.apache.kafka.streams.AutoOffsetReset</code> 
to capture the reset strategies.
         New methods will be added to the 
<code>org.apache.kafka.streams.Topology</code> and 
<code>org.apache.kafka.streams.kstream.Consumed</code> classes to support the 
new reset strategy.
         These changes aim to provide more flexibility and efficiency in 
managing offsets, especially in scenarios involving long-term storage and 
infinite retention.
@@ -265,7 +265,7 @@
     <h3><a id="streams_api_changes_390" 
href="#streams_api_changes_390">Streams API changes in 3.9.0</a></h3>
 
     <p>
-        The introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1033%3A+Add+Kafka+Streams+exception+handler+for+exceptions+occurring+during+processing";>KIP-1033</a>
+        The introduction of <a 
href="https://cwiki.apache.org/confluence/x/xQniEQ";>KIP-1033</a>
         enables you to provide a processing exception handler to manage 
exceptions during the processing of a record rather than throwing the exception 
all the way out of your streams application.
         You can provide the configs via the <code>StreamsConfig</code> as 
<code>StreamsConfig#PROCESSING_EXCEPTION_HANDLER_CLASS_CONFIG</code>.
         The specified handler must implement the 
<code>org.apache.kafka.streams.errors.ProcessingExceptionHandler</code> 
interface.
@@ -274,7 +274,7 @@
     <p>
         Kafka Streams now allows to customize the logging interval of 
stream-thread runtime summary, via the newly added config 
<code>log.summary.interval.ms</code>.
         By default, the summary is logged every 2 minutes. More details can be 
found in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1049%3A+Add+config+log.summary.interval.ms+to+Kafka+Streams";>KIP-1049</a>.
+        <a href="https://cwiki.apache.org/confluence/x/fwpeEg";>KIP-1049</a>.
     </p>
 
     <h3><a id="streams_api_changes_380" 
href="#streams_api_changes_380">Streams API changes in 3.8.0</a></h3>
@@ -299,12 +299,12 @@
         that implements the new public <code>TaskAssignor</code> interface.
 
         For more details, see the public interface section of
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-924%3A+customizable+task+assignment+for+Streams";>KIP-924</a>.
+        <a href="https://cwiki.apache.org/confluence/x/PxU0Dw";>KIP-924</a>.
     </p>
 
     <p>
         The Processor API now support so-called read-only state stores, added 
via 
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-813%3A+Shareable+State+Stores";>KIP-813</a>.
+        <a href="https://cwiki.apache.org/confluence/x/q53kCw";>KIP-813</a>.
         These stores don't have a dedicated changelog topic, but use their 
source topic for fault-tolerance,
         similar to <code>KTables</code> with source-topic optimization enabled.
     </p>
@@ -314,41 +314,41 @@
         age of open iterators. The new metrics are 
<code>num-open-iterators</code>, <code>iterator-duration-avg</code>,
         <code>iterator-duration-max</code> and 
<code>oldest-iterator-open-since-ms</code>. These metrics are available
         for all state stores, including RocksDB, in-memory, and custom stores. 
More details can be found in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-989%3A+Improved+StateStore+Iterator+metrics+for+detecting+leaks";>KIP-989</a>.
+        <a href="https://cwiki.apache.org/confluence/x/9KCzDw";>KIP-989</a>.
     </p>
 
     <h3><a id="streams_api_changes_370" 
href="#streams_api_changes_370">Streams API changes in 3.7.0</a></h3>
     <p>
         We added a new method to <code>KafkaStreams</code>, namely 
<code>KafkaStreams#setStandbyUpdateListener()</code> in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-988%3A+Streams+Standby+Update+Listener";>KIP-988</a>,
+        <a href="https://cwiki.apache.org/confluence/x/yqCzDw";>KIP-988</a>,
         in which users can provide their customized implementation of the 
newly added <code>StandbyUpdateListener</code> interface to continuously 
monitor changes to standby tasks.
     </p>
 
     <p>
         IQv2 supports <code>RangeQuery</code> that allows to specify 
unbounded, bounded, or half-open key-ranges, which return data in unordered 
(byte[]-lexicographical) order (per partition).
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-985%3A+Add+reverseRange+and+reverseAll+query+over+kv-store+in+IQv2";>KIP-985</a>
 extends this functionality by adding <code>.withDescendingKeys()</code> and 
<code>.withAscendingKeys()</code>to allow user to receive data in descending or 
ascending order.
+        <a href="https://cwiki.apache.org/confluence/x/eKCzDw";>KIP-985</a> 
extends this functionality by adding <code>.withDescendingKeys()</code> and 
<code>.withAscendingKeys()</code>to allow user to receive data in descending or 
ascending order.
     </p>
     <p>
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-992%3A+Proposal+to+introduce+IQv2+Query+Types%3A+TimestampedKeyQuery+and+TimestampedRangeQuery";>KIP-992</a>
 adds two new query types,
+        <a href="https://cwiki.apache.org/confluence/x/TYxEE";>KIP-992</a> adds 
two new query types,
         namely <code>TimestampedKeyQuery</code> and 
<code>TimestampedRangeQuery</code>. Both should be used to query a timestamped 
key-value store, to retrieve a <code>ValueAndTimestamp</code> result.
         The existing <code>KeyQuery</code> and <code>RangeQuery</code> are 
changed to always return the value only for timestamped key-value stores.
     </p>
 
     <p>
-        IQv2 adds support for <code>MultiVersionedKeyQuery</code> (introduced 
in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-968%3A+Support+single-key_multi-timestamp+interactive+queries+%28IQv2%29+for+versioned+state+stores";>KIP-968</a>)
+        IQv2 adds support for <code>MultiVersionedKeyQuery</code> (introduced 
in <a href="https://cwiki.apache.org/confluence/x/WpSzDw";>KIP-968</a>)
         that allows retrieving a set of records from a versioned state store 
for a given key and a specified time range.
         Users have to use <code>fromTime(Instant)</code> and/or 
<code>toTime(Instant)</code> to specify a half or a complete time range.
     </p>
 
     <p>
-        IQv2 adds support for <code>VersionedKeyQuery</code> (introduced in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-960%3A+Support+single-key_single-timestamp+interactive+queries+%28IQv2%29+for+versioned+state+stores";>KIP-960</a>)
+        IQv2 adds support for <code>VersionedKeyQuery</code> (introduced in <a 
href="https://cwiki.apache.org/confluence/x/qo_zDw";>KIP-960</a>)
         that allows retrieving a single record from a versioned state store 
based on its key and timestamp.
         Users have to use the <code>asOf(Instant)</code> method to define a 
query that returns the record's version for the specified timestamp.
         To be more precise, the key query returns the record with the greatest 
timestamp <code>&lt;= Instant</code>.
     </p>
 
     <p>
-        The non-null key requirements for Kafka Streams join operators were 
relaxed as part of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-962%3A+Relax+non-null+key+requirement+in+Kafka+Streams";>KIP-962</a>.
+        The non-null key requirements for Kafka Streams join operators were 
relaxed as part of <a 
href="https://cwiki.apache.org/confluence/x/f5CzDw";>KIP-962</a>.
         The behavior of the following operators changed.
     <ul>
         <li>left join KStream-KStream: no longer drop left records with 
null-key and call ValueJoiner with 'null' for right value.</li>
@@ -411,7 +411,7 @@
 
     <h3><a id="streams_api_changes_360" 
href="#streams_api_changes_360">Streams API changes in 3.6.0</a></h3>
     <p>
-      Rack aware task assignment was introduced in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-925%3A+Rack+aware+task+assignment+in+Kafka+Streams";>KIP-925</a>.
+      Rack aware task assignment was introduced in <a 
href="https://cwiki.apache.org/confluence/x/CQ40Dw";>KIP-925</a>.
       Rack aware task assignment can be enabled for 
<code>StickyTaskAssignor</code> or <code>HighAvailabilityTaskAssignor</code> to 
compute task assignments which can minimize cross rack traffic under certain 
conditions.
       For more information, including how it can be enabled and further 
configured, see the <a 
href="/{{version}}/documentation/streams/developer-guide/config-streams.html#rack-aware-assignment-strategy"><b>Kafka
 Streams Developer Guide</b></a>.
     </p>
@@ -419,14 +419,14 @@
     <p>
       IQv2 supports a <code>RangeQuery</code> that allows to specify 
unbounded, bounded, or half-open key-ranges. Users have to use 
<code>withUpperBound(K)</code>, <code>withLowerBound(K)</code>,
       or <code>withNoBounds()</code> to specify half-open or unbounded ranges, 
but cannot use <code>withRange(K lower, K upper)</code> for the same.
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-941%3A+Range+queries+to+accept+null+lower+and+upper+bounds";>KIP-941</a>
 closes this gap by allowing to pass in <code>null</code>
+      <a href="https://cwiki.apache.org/confluence/x/_Rk0Dw";>KIP-941</a> 
closes this gap by allowing to pass in <code>null</code>
       as upper and lower bound (with semantics "no bound") to simplify the 
usage of the <code>RangeQuery</code> class.
     </p>
 
     <p>
         KStreams-to-KTable joins now have an option for adding a grace period.
         The grace period is enabled on the <code>Joined</code> object using 
with <code>withGracePeriod()</code> method.
-        This change was introduced in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-923%3A+Add+A+Grace+Period+to+Stream+Table+Join";>KIP-923</a>.
+        This change was introduced in <a 
href="https://cwiki.apache.org/confluence/x/lAs0Dw";>KIP-923</a>.
         To use the grace period option in the Stream-Table join the table must 
be
         <a 
href="/{{version}}/documentation/streams/developer-guide/dsl-api.html#versioned-state-stores">versioned</a>.
         For more information, including how it can be enabled and further 
configured, see the <a 
href="/{{version}}/documentation/streams/developer-guide/config-streams.html#rack-aware-assignment-strategy"><b>Kafka
 Streams Developer Guide</b></a>.
@@ -435,8 +435,8 @@
     <h3><a id="streams_api_changes_350" 
href="#streams_api_changes_350">Streams API changes in 3.5.0</a></h3>
     <p>      
       A new state store type, versioned key-value stores, was introduced in
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-889%3A+Versioned+State+Stores";>KIP-889</a>
 and
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-914%3A+DSL+Processor+Semantics+for+Versioned+Stores";>KIP-914</a>.
+      <a href="https://cwiki.apache.org/confluence/x/AIwODg";>KIP-889</a> and
+      <a href="https://cwiki.apache.org/confluence/x/QorFDg";>KIP-914</a>.
       Rather than storing a single record version (value and timestamp) per 
key,
       versioned state stores may store multiple record versions per key. This
       allows versioned state stores to support timestamped retrieval operations
@@ -449,7 +449,7 @@
     </p>
 
     <p>
-      In addition to KIP-899, <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-914%3A+DSL+Processor+Semantics+for+Versioned+Stores";>KIP-914</a>
+      In addition to KIP-899, <a 
href="https://cwiki.apache.org/confluence/x/QorFDg";>KIP-914</a>
       updates DSL processing semantics if a user opts-in to use the new 
versioned key-value stores.
       Using the new versioned key-value stores, DSL processing are able to 
handle out-of-order data better:
       For example, late record may be dropped and stream-table joins do a 
timestamped based lookup into the table.
@@ -458,24 +458,24 @@
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-904%3A+Kafka+Streams+-+Guarantee+subtractor+is+called+before+adder+if+key+has+not+changed";>KIP-904</a>
+      <a href="https://cwiki.apache.org/confluence/x/P5VbDg";>KIP-904</a>
       improves the implementation of KTable aggregations. In general, an input 
KTable update triggers a result refinent for two rows;
       however, prior to KIP-904, if both refinements happen to the same result 
row, two independent updates to the same row are applied, resulting in spurious 
itermediate results.
       KIP-904 allows us to detect this case, and to only apply a single update 
avoiding spurious intermediate results.
     </p>
 
     <p>
-      Error handling is improved via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-399%3A+Extend+ProductionExceptionHandler+to+cover+serialization+exceptions";>KIP-399</a>.
+      Error handling is improved via <a 
href="https://cwiki.apache.org/confluence/x/R4nQBQ";>KIP-399</a>.
       The existing <code>ProductionExceptionHandler</code> now also covers 
serialization errors.
     </p>
 
     <p>
       We added a new Serde type <code>Boolean</code> in
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-907%3A+Add+Boolean+Serde+to+public+interface";>KIP-907</a>
+      <a href="https://cwiki.apache.org/confluence/x/pZpbDg";>KIP-907</a>
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-884%3A+Add+config+to+configure+KafkaClientSupplier+in+Kafka+Streams";>KIP-884</a>
+      <a href="https://cwiki.apache.org/confluence/x/AZfGDQ";>KIP-884</a>
       adds a new config <code>default.client.supplier</code> that allows to 
use a custom <code>KafkaClientSupplier</code> without any code changes.
     </p>
 
@@ -496,14 +496,14 @@
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-862%3A+Self-join+optimization+for+stream-stream+joins";>KIP-862</a>
+      <a href="https://cwiki.apache.org/confluence/x/WSf1D";>KIP-862</a>
       adds a DSL optimization for stream-stream self-joins. The optimization 
is enabled via a new option <code>single.store.self.join</code>
       which can be set via existing config <code>topology.optimization</code>. 
If enabled, the DSL will use a different
       join processor implementation that uses a single RocksDB store instead 
of two, to avoid unnecessary data duplication for the self-join case.
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-865%3A+Support+--bootstrap-server+in+kafka-streams-application-reset";>KIP-865</a>
+      <a href="https://cwiki.apache.org/confluence/x/UY9rDQ";>KIP-865</a>
       updates the Kafka Streams application reset tool’s server parameter name 
to conform to the other Kafka tooling by deprecating
       the <code>--bootstrap-servers</code> parameter and introducing a new 
<code>--bootstrap-server</code> parameter in its place.
     </p>
@@ -512,7 +512,7 @@
     <p>
       Kafka Streams does not send a "leave group" request when an instance is 
closed. This behavior implies
       that a rebalance is delayed until <code>max.poll.interval.ms</code> 
passed.
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-812%3A+Introduce+another+form+of+the+%60KafkaStreams.close%28%29%60+API+that+forces+the+member+to+leave+the+consumer+group";>KIP-812</a>
+      <a href="https://cwiki.apache.org/confluence/x/KZvkCw";>KIP-812</a>
       introduces <code>KafkaStreams.close(CloseOptions)</code> overload, which 
allows forcing an instance to leave the
       group immediately.
 
@@ -522,7 +522,7 @@
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-820%3A+Extend+KStream+process+with+new+Processor+API";>KIP-820</a>
+      <a href="https://cwiki.apache.org/confluence/x/yKbkCw";>KIP-820</a>
       adapts the PAPI type-safety improvement of KIP-478 into the DSL. The 
existing methods <code>KStream.transform</code>,
       <code>KStream.flatTransform</code>, 
<code>KStream.transformValues</code>, and 
<code>KStream.flatTransformValues</code>
       as well as all overloads of <code>void KStream.process</code> are 
deprecated in favor of the newly added methods
@@ -541,7 +541,7 @@
       Emitting a windowed aggregation result only after a window is closed is 
currently supported via the
       <code>suppress()</code> operator. However, <code>suppress()</code> uses 
an in-memory implementation and does not
       support RocksDB. To close this gap,
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-825%3A+introduce+a+new+API+to+control+when+aggregated+results+are+produced";>KIP-825</a>
+      <a href="https://cwiki.apache.org/confluence/x/n7fkCw";>KIP-825</a>
       introduces "emit strategies", which are built into the aggregation 
operator directly to use the already existing
       RocksDB store. 
<code>TimeWindowedKStream.emitStrategy(EmitStrategy)</code> and
       <code>SessionWindowedKStream.emitStrategy(EmitStrategy)</code> allow 
picking between "emit on window update" (default)
@@ -567,7 +567,7 @@
     <h3><a id="streams_api_changes_320" 
href="#streams_api_changes_320">Streams API changes in 3.2.0</a></h3>
     <p>
         RocksDB offers many metrics which are critical to monitor and tune its 
performance. Kafka Streams started to make RocksDB metrics accessible
-        like any other Kafka metric via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-471%3A+Expose+RocksDB+Metrics+in+Kafka+Streams";>KIP-471</a>
 in 2.4.0 release.
+        like any other Kafka metric via <a 
href="https://cwiki.apache.org/confluence/x/A5LiBg";>KIP-471</a> in 2.4.0 
release.
         However, the KIP was only partially implemented, and is now completed 
with the 3.2.0 release.
         For a full list of available RocksDB metrics, please consult the <a 
href="/{{version}}/documentation/#kafka_streams_client_monitoring">monitoring 
documentation</a>.
     </p>
@@ -576,7 +576,7 @@
         Kafka Streams ships with RocksDB and in-memory store implementations 
and users can pick which one to use.
         However, for the DSL, the choice is a per-operator one, making it 
cumbersome to switch from the default RocksDB
         store to in-memory store for all operators, especially for larger 
topologies.
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-591%3A+Add+Kafka+Streams+config+to+set+default+state+store";>KIP-591</a>
+        <a href="https://cwiki.apache.org/confluence/x/eCvcC";>KIP-591</a>
         adds a new config <code>default.dsl.store</code> that enables setting 
the default store for all DSL operators globally.
         Note that it is required to pass <code>TopologyConfig</code> to the 
<code>StreamsBuilder</code> constructor to make use of this new config.
     </p>
@@ -584,13 +584,13 @@
     <p>
         For multi-AZ deployments, it is desired to assign StandbyTasks to a 
KafkaStreams instance running in a different
         AZ than the corresponding active StreamTask.
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-708%3A+Rack+aware+StandbyTask+assignment+for+Kafka+Streams";>KIP-708</a>
+        <a href="https://cwiki.apache.org/confluence/x/UQ5RCg";>KIP-708</a>
         enables configuring Kafka Streams instances with a rack-aware 
StandbyTask assignment strategy, by using the new added configs
         <code>rack.aware.assignment.tags</code> and corresponding 
<code>client.tag.&lt;myTag&gt;</code>.
     </p>
 
     <p>
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-791%3A+Add+Record+Metadata+to+State+Store+Context";>KIP-791</a>
+        <a href="https://cwiki.apache.org/confluence/x/I5BnCw";>KIP-791</a>
         adds a new method <code>Optional&lt;RecordMetadata&gt; 
StateStoreContext.recordMetadata()</code> to expose
         record metadata. This helps for example to provide read-your-writes 
consistency guarantees in interactive queries.
     </p>
@@ -600,14 +600,14 @@
         tap into the operational state of Kafka Streams processor nodes. The 
existing API is tightly coupled with the
         actual state store interfaces and thus the internal implementation of 
state store. To break up this tight coupling
         and allow for building more advanced IQ features,
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-796%3A+Interactive+Query+v2";>KIP-796</a>
 introduces
+        <a href="https://cwiki.apache.org/confluence/x/34xnCw";>KIP-796</a> 
introduces
         a completely new IQv2 API, via <code>StateQueryRequest</code> and 
<code>StateQueryResult</code> classes,
         as well as <code>Query</code> and <code>QueryResult</code> interfaces 
(plus additional helper classes).
 
         In addition, multiple built-in query types were added: 
<code>KeyQuery</code> for key lookups and
-        <code>RangeQuery</code> (via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-805%3A+Add+range+and+scan+query+over+kv-store+in+IQv2";>KIP-805</a>)
+        <code>RangeQuery</code> (via <a 
href="https://cwiki.apache.org/confluence/x/85OqCw";>KIP-805</a>)
         for key-range queries on key-value stores, as well as 
<code>WindowKeyQuery</code> and <code>WindowRangeQuery</code>
-        (via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-806%3A+Add+session+and+window+query+over+kv-store+in+IQv2";>KIP-806</a>)
+        (via <a 
href="https://cwiki.apache.org/confluence/x/LJaqCw";>KIP-806</a>)
         for key and range lookup into windowed stores.
     </p>
 
@@ -615,14 +615,14 @@
         The Kafka Streams DSL may insert so-called repartition topics for 
certain DSL operators to ensure correct partitioning
         of data. These topics are configured with infinite retention time, and 
Kafka Streams purges old data explicitly
         via "delete record" requests, when commiting input topic offsets.
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-811%3A+Add+config+repartition.purge.interval.ms+to+Kafka+Streams";>KIP-811</a>
+        <a href="https://cwiki.apache.org/confluence/x/JY-kCw";>KIP-811</a>
         adds a new config <code>repartition.purge.interval.ms</code> allowing 
you to configure the purge interval independently of the commit interval.
     </p>
 
     <h3><a id="streams_api_changes_310" 
href="#streams_api_changes_310">Streams API changes in 3.1.0</a></h3>
     <p>
       The semantics of left/outer stream-stream join got improved via
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-633%3A+Deprecate+24-hour+Default+Grace+Period+for+Windowed+Operations+in+Streams";>KIP-633</a>.
+      <a href="https://cwiki.apache.org/confluence/x/Ho2NCg";>KIP-633</a>.
       Previously, left-/outer stream-stream join might have emitted so-call 
spurious left/outer results, due to an eager-emit strategy.
       The implementation was changed to emit left/outer join result records 
only after the join window is closed.
       The old API to specify the join window, i.e., 
<code>JoinWindows.of()</code> that enables the eager-emit strategy,
@@ -635,21 +635,21 @@
     </p>
 
     <p>
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-761%3A+Add+Total+Blocked+Time+Metric+to+Streams";>KIP-761</a>
+      <a href="https://cwiki.apache.org/confluence/x/vAUBCw";>KIP-761</a>
       adds new metrics that allow to track blocking times on the underlying 
consumer and producer clients.
       Check out the section on <a 
href="/documentation/#kafka_streams_monitoring">Kafka Streams metrics</a> for 
more details.
     </p>
 
     <p>
       <a 
href="/documentation/streams/developer-guide/interactive-queries.html">Interactive
 Queries</a> were improved via
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-763%3A+Range+queries+with+open+endpoints";>KIP-763</a>
-      <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=186876596";>KIP-766</a>.
+      <a href="https://cwiki.apache.org/confluence/x/jAoBCw";>KIP-763</a>
+      <a href="https://cwiki.apache.org/confluence/x/tIIjCw";>KIP-766</a>.
       Range queries now accept <code>null</code> as lower/upper key-range 
bound to indicate an open-ended lower/upper bound.
     </p>
 
     <p>
       Foreign-key table-table joins now support custom partitioners via
-      <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-775%3A+Custom+partitioners+in+foreign+key+joins";>KIP-775</a>.
+      <a href="https://cwiki.apache.org/confluence/x/-QhACw";>KIP-775</a>.
       Previously, if an input table was partitioned by a non-default 
partitioner, joining records might fail.
       With KIP-775 you now can pass a custom <code>StreamPartitioner</code> 
into the join using the newly added
       <code>TableJoined</code> object.
@@ -682,7 +682,7 @@
         <li> <code>InvalidStateStorePartitionException</code>: If the 
specified partition does not exist, a 
<code>InvalidStateStorePartitionException</code> will be thrown.</li>
     </ul>
     <p>
-        See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-216%3A+IQ+should+throw+different+exceptions+for+different+errors";>KIP-216</a>
 for more information.
+        See <a href="https://cwiki.apache.org/confluence/x/0JpzB";>KIP-216</a> 
for more information.
     </p>
     <p>
       We deprecated the StreamsConfig <code>processing.guarantee</code> 
configuration value <code>"exactly_once"</code> (for EOS version 1) in favor of 
the improved EOS version 2, formerly configured via
@@ -713,7 +713,7 @@
         when playing around with Kafka Streams for the first time. Note that 
using the new APIs for the
         <code>JoinWindows</code> class will also enable a fix for spurious 
left/outer join results, as described in
         the following paragraph. For more details on the grace period and new 
static constructors, see
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-633%3A+Drop+24+hour+default+of+grace+period+in+Streams";>KIP-633</a>
+        <a href="https://cwiki.apache.org/confluence/x/Ho2NCg";>KIP-633</a>
     </p>
     <p>
         Additionally, in older versions Kafka Streams emitted stream-stream 
left/outer join results eagerly. This behavior may lead to spurious left/outer 
join result records.
@@ -746,22 +746,22 @@
         We removed the following deprecated APIs:
     </p>
     <ul>
-        <li> <code>--zookeeper</code> flag of the application reset tool: 
deprecated in Kafka 1.0.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-198%3A+Remove+ZK+dependency+from+Streams+Reset+Tool";>KIP-198</a>).</li>
-        <li> <code>--execute</code> flag of the application reset tool: 
deprecated in Kafka 1.1.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-171+-+Extend+Consumer+Group+Reset+Offset+for+Stream+Application";>KIP-171</a>).</li>
-        <li> <code>StreamsBuilder#addGlobalStore</code> (one overload): 
deprecated in Kafka 1.1.0 (<a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=74689212";>KIP-233</a>).</li>
-        <li> <code>ProcessorContext#forward</code> (some overloads): 
deprecated in Kafka 2.0.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-251%3A+Allow+timestamp+manipulation+in+Processor+API";>KIP-251</a>).</li>
-        <li> <code>WindowBytesStoreSupplier#segments</code>: deprecated in 
Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-319%3A+Replace+segments+with+segmentInterval+in+WindowBytesStoreSupplier";>KIP-319</a>).</li>
-        <li> <code>segments, until, maintainMs</code> on 
<code>TimeWindows</code>, <code>JoinWindows</code>, and 
<code>SessionWindows</code>: deprecated in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-328%3A+Ability+to+suppress+updates+for+KTables";>KIP-328</a>).</li>
-        <li> Overloaded <code>JoinWindows#of, before, after</code>, 
<code>SessionWindows#with</code>, <code>TimeWindows#of, advanceBy</code>, 
<code>UnlimitedWindows#startOn</code> and <code>KafkaStreams#close</code> with 
<code>long</code> typed parameters: deprecated in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-358%3A+Migrate+Streams+API+to+Duration+instead+of+long+ms+times";>KIP-358</a>).</li>
-        <li> Overloaded <code>KStream#groupBy, groupByKey</code> and 
<code>KTable#groupBy</code> with <code>Serialized</code> parameter: deprecated 
in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-372%3A+Naming+Repartition+Topics+for+Joins+and+Grouping";>KIP-372</a>).</li>
-        <li> <code>Joined#named, name</code>: deprecated in Kafka 2.3.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-307%3A+Allow+to+define+custom+processor+names+with+KStreams+DSL";>KIP-307</a>).</li>
-        <li> <code>TopologyTestDriver#pipeInput, readOutput</code>, 
<code>OutputVerifier</code> and <code>ConsumerRecordFactory</code> classes (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-470%3A+TopologyTestDriver+test+input+and+output+usability+improvements";>KIP-470</a>).</li>
-        <li> <code>KafkaClientSupplier#getAdminClient</code>: deprecated in 
Kafka 2.4.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-476%3A+Add+Java+AdminClient+Interface";>KIP-476</a>).</li>
-        <li> Overloaded <code>KStream#join, leftJoin, outerJoin</code> with 
<code>KStream</code> and <code>Joined</code> parameters: deprecated in Kafka 
2.4.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-479%3A+Add+StreamJoined+config+object+to+Join";>KIP-479</a>).</li>
-        <li> <code>WindowStore#put(K key, V value)</code>: deprecated in Kafka 
2.4.0 (<a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=115526545";>KIP-474</a>).</li>
-        <li> <code>UsePreviousTimeOnInvalidTimestamp</code>: deprecated in 
Kafka 2.5.0 as renamed to <code>UsePartitionTimeOnInvalidTimestamp</code> (<a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=130028807";>KIP-530</a>).</li>
-        <li> Overloaded <code>KafkaStreams#metadataForKey</code>: deprecated 
in Kafka 2.5.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-535%3A+Allow+state+stores+to+serve+stale+reads+during+rebalance";>KIP-535</a>).</li>
-        <li> Overloaded <code>KafkaStreams#store</code>: deprecated in Kafka 
2.5.0 (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-562%3A+Allow+fetching+a+key+from+a+single+partition+rather+than+iterating+over+all+the+stores+on+an+instance";>KIP-562</a>).</li>
+        <li> <code>--zookeeper</code> flag of the application reset tool: 
deprecated in Kafka 1.0.0 (<a 
href="https://cwiki.apache.org/confluence/x/6J1jB";>KIP-198</a>).</li>
+        <li> <code>--execute</code> flag of the application reset tool: 
deprecated in Kafka 1.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/ApI7B";>KIP-171</a>).</li>
+        <li> <code>StreamsBuilder#addGlobalStore</code> (one overload): 
deprecated in Kafka 1.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/vKpzB";>KIP-233</a>).</li>
+        <li> <code>ProcessorContext#forward</code> (some overloads): 
deprecated in Kafka 2.0.0 (<a 
href="https://cwiki.apache.org/confluence/x/Ih6HB";>KIP-251</a>).</li>
+        <li> <code>WindowBytesStoreSupplier#segments</code>: deprecated in 
Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/mQU0BQ";>KIP-319</a>).</li>
+        <li> <code>segments, until, maintainMs</code> on 
<code>TimeWindows</code>, <code>JoinWindows</code>, and 
<code>SessionWindows</code>: deprecated in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/sQU0BQ";>KIP-328</a>).</li>
+        <li> Overloaded <code>JoinWindows#of, before, after</code>, 
<code>SessionWindows#with</code>, <code>TimeWindows#of, advanceBy</code>, 
<code>UnlimitedWindows#startOn</code> and <code>KafkaStreams#close</code> with 
<code>long</code> typed parameters: deprecated in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/IBNPBQ";>KIP-358</a>).</li>
+        <li> Overloaded <code>KStream#groupBy, groupByKey</code> and 
<code>KTable#groupBy</code> with <code>Serialized</code> parameter: deprecated 
in Kafka 2.1.0 (<a 
href="https://cwiki.apache.org/confluence/x/mgJ1BQ";>KIP-372</a>).</li>
+        <li> <code>Joined#named, name</code>: deprecated in Kafka 2.3.0 (<a 
href="https://cwiki.apache.org/confluence/x/xikYBQ";>KIP-307</a>).</li>
+        <li> <code>TopologyTestDriver#pipeInput, readOutput</code>, 
<code>OutputVerifier</code> and <code>ConsumerRecordFactory</code> classes (<a 
href="https://cwiki.apache.org/confluence/x/tI-iBg";>KIP-470</a>).</li>
+        <li> <code>KafkaClientSupplier#getAdminClient</code>: deprecated in 
Kafka 2.4.0 (<a 
href="https://cwiki.apache.org/confluence/x/V9XiBg";>KIP-476</a>).</li>
+        <li> Overloaded <code>KStream#join, leftJoin, outerJoin</code> with 
<code>KStream</code> and <code>Joined</code> parameters: deprecated in Kafka 
2.4.0 (<a href="https://cwiki.apache.org/confluence/x/EBEgBw";>KIP-479</a>).</li>
+        <li> <code>WindowStore#put(K key, V value)</code>: deprecated in Kafka 
2.4.0 (<a href="https://cwiki.apache.org/confluence/x/kcviBg";>KIP-474</a>).</li>
+        <li> <code>UsePreviousTimeOnInvalidTimestamp</code>: deprecated in 
Kafka 2.5.0 as renamed to <code>UsePartitionTimeOnInvalidTimestamp</code> (<a 
href="https://cwiki.apache.org/confluence/x/BxXABw";>KIP-530</a>).</li>
+        <li> Overloaded <code>KafkaStreams#metadataForKey</code>: deprecated 
in Kafka 2.5.0 (<a 
href="https://cwiki.apache.org/confluence/x/Xg-jBw";>KIP-535</a>).</li>
+        <li> Overloaded <code>KafkaStreams#store</code>: deprecated in Kafka 
2.5.0 (<a href="https://cwiki.apache.org/confluence/x/QYyvC";>KIP-562</a>).</li>
     </ul>
     <p>
         The following dependencies were removed from Kafka Streams:
@@ -784,7 +784,7 @@
     <h3><a id="streams_api_changes_280" 
href="#streams_api_changes_280">Streams API changes in 2.8.0</a></h3>
     <p>
         We extended <code>StreamJoined</code> to include the options 
<code>withLoggingEnabled()</code> and <code>withLoggingDisabled()</code> in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-689%3A+Extend+%60StreamJoined%60+to+allow+more+store+configs";>KIP-689</a>.
+        <a href="https://cwiki.apache.org/confluence/x/DyrZCQ";>KIP-689</a>.
     </p>
     <p>
         We added two new methods to <code>KafkaStreams</code>, namely 
<code>KafkaStreams#addStreamThread()</code> and 
<code>KafkaStreams#removeStreamThread()</code> in
@@ -813,19 +813,19 @@
         The <code>TimeWindowedDeserializer</code> constructor 
<code>TimeWindowedDeserializer(final Deserializer inner)</code>
         was deprecated to encourage users to properly set their window size 
through <code>TimeWindowedDeserializer(final Deserializer inner, Long 
windowSize)</code>.
         An additional streams config, <code>window.size.ms</code>, was added 
for users that cannot set the window size through
-        the constructor, such as when using the console consumer. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-659%3A+Improve+TimeWindowedDeserializer+and+TimeWindowedSerde+to+handle+window+size";>KIP-659</a>
+        the constructor, such as when using the console consumer. <a 
href="https://cwiki.apache.org/confluence/x/aDR4CQ";>KIP-659</a>
         has more details.
     </p>
     <p>
         To simplify testing, two new constructors that don't require a 
<code>Properties</code> parameter have been
         added to the <code>TopologyTestDriver</code> class. If 
<code>Properties</code> are passed
         into the constructor, it is no longer required to set mandatory 
configuration parameters
-        (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-680%3A+TopologyTestDriver+should+not+require+a+Properties+argument";>KIP-680</a>).
+        (cf. <a 
href="https://cwiki.apache.org/confluence/x/MB3ZCQ";>KIP-680</a>).
     </p>
     <p>
         We added the <code>prefixScan()</code> method to interface 
<code>ReadOnlyKeyValueStore</code>.
         The new <code>prefixScan()</code> allows fetching all values whose 
keys start with a given prefix.
-        See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-614%3A+Add+Prefix+Scan+support+for+State+Stores";>KIP-614</a>
 for more details.
+        See <a href="https://cwiki.apache.org/confluence/x/qhkRCQ";>KIP-614</a> 
for more details.
     </p>
     <p>
         Kafka Streams is now handling <code>TimeoutException</code> thrown by 
the consumer, producer, and admin client.
@@ -834,12 +834,12 @@
         To bound how long Kafka Streams retries a task, you can set 
<code>task.timeout.ms</code> (default is 5 minutes).
         If a task does not make progress within the specified task timeout, 
which is tracked on a per-task basis,
         Kafka Streams throws a <code>TimeoutException</code>
-        (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-572%3A+Improve+timeouts+and+retries+in+Kafka+Streams";>KIP-572</a>).
+        (cf. <a 
href="https://cwiki.apache.org/confluence/x/5ArcC";>KIP-572</a>).
     </p>
     <p>
         We changed the default value of <code>default.key.serde</code> and 
<code>default.value.serde</code> to be <code>null</code> instead of 
<code>ByteArraySerde</code>.
         Users will now see a <code>ConfigException</code> if their serdes are 
not correctly configured through those configs or passed in explicitly.
-        See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-741%3A+Change+default+serde+to+be+null";>KIP-741</a>
 for more details.
+        See <a href="https://cwiki.apache.org/confluence/x/bIbOCg";>KIP-741</a> 
for more details.
     </p>
 
     <h3><a id="streams_api_changes_270" 
href="#streams_api_changes_270">Streams API changes in 2.7.0</a></h3>
@@ -849,13 +849,13 @@
         <code>KeyQueryMetadata</code> was introduced in Kafka Streams 2.5 
release with getter methods having prefix <code>get</code>.
         The intend of this change is to bring the method names to Kafka custom 
to not use the <code>get</code> prefix for getter methods.
         The old methods are deprecated and is not effected.
-        (Cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-648%3A+Renaming+getter+method+for+Interactive+Queries";>KIP-648</a>.)
+        (Cf. <a 
href="https://cwiki.apache.org/confluence/x/vyd4CQ";>KIP-648</a>.)
     </p>
     <p>
         The <code>StreamsConfig</code> variable for configuration parameter 
<code>"topology.optimization"</code>
         is renamed from <code>TOPOLOGY_OPTIMIZATION</code> to 
<code>TOPOLOGY_OPTIMIZATION_CONFIG</code>.
         The old variable is deprecated. Note, that the parameter name itself 
is not affected.
-        (Cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-626%3A+Rename+StreamsConfig+config+variable+name";>KIP-629</a>.)
+        (Cf. <a 
href="https://cwiki.apache.org/confluence/x/gBB4CQ";>KIP-626</a>.)
     </p>
     <p>
         The configuration parameter <code>retries</code> is deprecated in 
favor of the new parameter <code>task.timeout.ms</code>.
@@ -864,7 +864,7 @@
     </p>
     <p>
         We added <code>SlidingWindows</code> as an option for 
<code>windowedBy()</code> windowed aggregations as described in
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-450%3A+Sliding+Window+Aggregations+in+the+DSL";>KIP-450</a>.
+        <a href="https://cwiki.apache.org/confluence/x/nAqZBg";>KIP-450</a>.
         Sliding windows are fixed-time and data-aligned windows that allow for 
flexible and efficient windowed aggregations.
     </p>
 
@@ -877,7 +877,7 @@
     <h3><a id="streams_api_changes_260" 
href="#streams_api_changes_260">Streams API changes in 2.6.0</a></h3>
     <p>
         We added a new processing mode, EOS version 2, that improves 
application scalability using exactly-once guarantees
-        (via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-447%3A+Producer+scalability+for+exactly+once+semantics";>KIP-447</a>).
+        (via <a 
href="https://cwiki.apache.org/confluence/x/vhYlBg";>KIP-447</a>).
         You can enable this new feature by setting the configuration parameter 
<code>processing.guarantee</code> to the
         new value <code>"exactly_once_beta"</code>.
         Note that you need brokers with version 2.5 or newer to use this 
feature.
@@ -896,7 +896,7 @@
     </p>
     <p>
         As of 2.6.0 Kafka Streams deprecates <code>KStream.through()</code> in 
favor of the new <code>KStream.repartition()</code> operator
-        (as per <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-221%3A+Enhance+DSL+with+Connecting+Topic+Creation+and+Repartition+Hint";>KIP-221</a>).
+        (as per <a 
href="https://cwiki.apache.org/confluence/x/i55zB";>KIP-221</a>).
         <code>KStream.repartition()</code> is similar to 
<code>KStream.through()</code>, however Kafka Streams will manage the topic for 
you.
         If you need to write into and read back from a topic that you manage, 
you can fall back to use <code>KStream.to()</code> in combination with 
<code>StreamsBuilder#stream()</code>.
         Please refer to the <a 
href="/{{version}}/documentation/streams/developer-guide/dsl-api.html">developer
 guide</a> for more details about <code>KStream.repartition()</code>.
@@ -910,50 +910,50 @@
     </p>
     <p>
         We added a <code>--force</code> option in StreamsResetter to force 
remove left-over members on broker side when long session time out was 
configured
-        as per <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-571%3A+Add+option+to+force+remove+members+in+StreamsResetter";>KIP-571</a>.
+        as per <a 
href="https://cwiki.apache.org/confluence/x/8I7JC";>KIP-571</a>.
     </p>
     <p>
         We added <code>Suppressed.withLoggingDisabled()</code> and 
<code>Suppressed.withLoggingEnabled(config)</code>
         methods to allow disabling or configuring of the changelog topic and 
allows for configuration of the changelog topic
-        as per <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-446%3A+Add+changelog+topic+configuration+to+KTable+suppress";>KIP-446</a>.
+        as per <a 
href="https://cwiki.apache.org/confluence/x/RBiGBg";>KIP-446</a>.
     </p>
 
     <h3 class="anchor-heading"><a id="streams_api_changes_250" 
class="anchor-link"></a><a href="#streams_api_changes_250">Streams API changes 
in 2.5.0</a></h3>
     <p>
-        We add a new <code>cogroup()</code> operator (via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-150+-+Kafka-Streams+Cogroup";>KIP-150</a>)
+        We add a new <code>cogroup()</code> operator (via <a 
href="https://cwiki.apache.org/confluence/x/YxcjB";>KIP-150</a>)
         that allows to aggregate multiple streams in a single operation.
         Cogrouped streams can also be windowed before they are aggregated.
         Please refer to the <a 
href="/{{version}}/documentation/streams/developer-guide/dsl-api.html">developer
 guide</a> for more details.
     </p>
     <p>
         We added a new <code>KStream.toTable()</code> API to translate an 
input event stream into a changelog stream as per
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-523%3A+Add+KStream%23toTable+to+the+Streams+DSL";>KIP-523</a>.
+        <a href="https://cwiki.apache.org/confluence/x/IBKrBw";>KIP-523</a>.
     </p>
     <p>
-        We added a new Serde type <code>Void</code> in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-527%3A+Add+VoidSerde+to+Serdes";>KIP-527</a>
 to represent
+        We added a new Serde type <code>Void</code> in <a 
href="https://cwiki.apache.org/confluence/x/3QvABw";>KIP-527</a> to represent
         null keys or null values from input topic.
     </p>
     <p>
         Deprecated <code>UsePreviousTimeOnInvalidTimestamp</code> and replaced 
it with <code>UsePartitionTimeOnInvalidTimeStamp</code> as per
-        <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=130028807";>KIP-530</a>.
+        <a href="https://cwiki.apache.org/confluence/x/BxXABw";>KIP-530</a>.
     </p>
     <p>
         Deprecated <code>KafkaStreams.store(String, QueryableStoreType)</code> 
and replaced it with <code>KafkaStreams.store(StoreQueryParameters)</code> to 
allow querying
         for a store with variety of parameters, including querying a specific 
task and stale stores, as per
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-562%3A+Allow+fetching+a+key+from+a+single+partition+rather+than+iterating+over+all+the+stores+on+an+instance";>KIP-562</a>
 and
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-535%3A+Allow+state+stores+to+serve+stale+reads+during+rebalance";>KIP-535</a>
 respectively.
+        <a href="https://cwiki.apache.org/confluence/x/QYyvC";>KIP-562</a> and
+        <a href="https://cwiki.apache.org/confluence/x/Xg-jBw";>KIP-535</a> 
respectively.
     </p>
 
     <h3 class="anchor-heading"><a id="streams_api_changes_240" 
class="anchor-link"></a><a href="#streams_api_changes_240">Streams API changes 
in 2.4.0</a></h3>
     <p>     
-         As of 2.4.0 Kafka Streams offers a KTable-KTable foreign-key join (as 
per <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-213+Support+non-key+joining+in+KTable";>KIP-213</a>).
 
+         As of 2.4.0 Kafka Streams offers a KTable-KTable foreign-key join (as 
per <a href="https://cwiki.apache.org/confluence/x/pJlzB";>KIP-213</a>). 
          This joiner allows for records to be joined between two KTables with 
different keys. 
          Both <a 
href="/{{version}}/documentation/streams/developer-guide/dsl-api.html#ktable-ktable-fk-join">INNER
 and LEFT foreign-key joins</a> 
          are supported.
     </p>
     <p>
         In the 2.4 release, you now can name all operators in a Kafka Streams 
DSL topology via
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-307%3A+Allow+to+define+custom+processor+names+with+KStreams+DSL";>KIP-307</a>.
+        <a href="https://cwiki.apache.org/confluence/x/xikYBQ";>KIP-307</a>.
         Giving your operators meaningful names makes it easier to understand 
the topology 
         description (<code>Topology#describe()#toString()</code>) and 
         understand the full context of what your Kafka Streams application is 
doing.
@@ -981,19 +981,19 @@
         of <code>StreamJoined</code>, stream-stream join operations
         using <code>Joined</code> have been deprecated. Please switch over to 
stream-stream join methods using the
         new overloaded methods.  You can get more details from
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-479%3A+Add+StreamJoined+config+object+to+Join";>KIP-479</a>.
+        <a href="https://cwiki.apache.org/confluence/x/EBEgBw";>KIP-479</a>.
     </p>
     <p>
         With the introduction of incremental cooperative rebalancing, Streams 
no longer requires all tasks be revoked at the beginning of a rebalance. 
Instead, at the completion of the rebalance only those tasks which are to be 
migrated to another consumer
         for overall load balance will need to be closed and revoked. This 
changes the semantics of the <code>StateListener</code> a bit, as it will not 
necessarily transition to <code>REBALANCING</code> at the beginning of a 
rebalance anymore. Note that
         this means IQ will now be available at all times except during state 
restoration, including while a rebalance is in progress. If restoration is 
occurring when a rebalance begins, we will continue to actively restore the 
state stores and/or process
         standby tasks during a cooperative rebalance. Note that with this new 
rebalancing protocol, you may sometimes see a rebalance be followed by a second 
short rebalance that ensures all tasks are safely distributed. For details on 
please see
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-429%3A+Kafka+Consumer+Incremental+Rebalance+Protocol";>KIP-429</a>.
+        <a href="https://cwiki.apache.org/confluence/x/vAclBg";>KIP-429</a>.
     </p>
 
     <p>
         The 2.4.0 release contains newly added and reworked metrics.
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-444%3A+Augment+metrics+for+Kafka+Streams";>KIP-444</a>
+        <a href="https://cwiki.apache.org/confluence/x/CiiGBg";>KIP-444</a>
         adds new <em>client level</em> (i.e., <code>KafkaStreams</code> 
instance level) metrics to the existing
         thread-level, task-level, and processor-/state-store-level metrics.
         For a full list of available client level metrics, see the
@@ -1001,7 +1001,7 @@
         section in the operations guide.
         <br />
         Furthermore, RocksDB metrics are exposed via
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-471%3A+Expose+RocksDB+Metrics+in+Kafka+Streams";>KIP-471</a>.
+        <a href="https://cwiki.apache.org/confluence/x/A5LiBg";>KIP-471</a>.
         For a full list of available RocksDB metrics, see the
         <a 
href="/{{version}}/documentation/#kafka_streams_rocksdb_monitoring">RocksDB 
monitoring</a>
         section in the operations guide.
@@ -1009,7 +1009,7 @@
 
     <p>
         Kafka Streams <code>test-utils</code> got improved via
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-470%3A+TopologyTestDriver+test+input+and+output+usability+improvements";>KIP-470</a>
+        <a href="https://cwiki.apache.org/confluence/x/tI-iBg";>KIP-470</a>
         to simplify the process of using <code>TopologyTestDriver</code> to 
test your application code.
         We deprecated <code>ConsumerRecordFactory</code>, 
<code>TopologyTestDriver#pipeInput()</code>,
         <code>OutputVerifier</code>, as well as 
<code>TopologyTestDriver#readOutput()</code> and replace them with
@@ -1028,7 +1028,7 @@
     <p>
         Furthermore, the <code>PartitionGrouper</code> interface and its 
corresponding configuration parameter
         <code>partition.grouper</code> were deprecated
-        (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-528%3A+Deprecate+PartitionGrouper+configuration+and+interface";>KIP-528</a>)
+        (<a href="https://cwiki.apache.org/confluence/x/BwzABw";>KIP-528</a>)
         and will be removed in the next major release (<a 
href="https://issues.apache.org/jira/browse/KAFKA-7785";>KAFKA-7785</a>.
         Hence, this feature won't be supported in the future any longer and 
you need to updated your code accordingly.
         If you use a custom <code>PartitionGrouper</code> and stop to use it, 
the created tasks might change.
@@ -1040,8 +1040,8 @@
     <p>Version 2.3.0 adds the Suppress operator to the 
<code>kafka-streams-scala</code> Ktable API.</p>
 
     <p>
-        As of 2.3.0 Streams now offers an in-memory version of the window (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-428%3A+Add+in-memory+window+store";>KIP-428</a>)
-        and the session (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-445%3A+In-memory+Session+Store";>KIP-445</a>)
 store, in addition to the persistent ones based on RocksDB.
+        As of 2.3.0 Streams now offers an in-memory version of the window (<a 
href="https://cwiki.apache.org/confluence/x/6AQlBg";>KIP-428</a>)
+        and the session (<a 
href="https://cwiki.apache.org/confluence/x/DiqGBg";>KIP-445</a>) store, in 
addition to the persistent ones based on RocksDB.
         The new public interfaces <code>inMemoryWindowStore()</code> and 
<code>inMemorySessionStore()</code> are added to <code>Stores</code> and 
provide the built-in in-memory window or session store.
     </p>
 
@@ -1056,7 +1056,7 @@
     <p>
         In 2.3.0 we have added default implementation to <code>close()</code> 
and <code>configure()</code> for <code>Serializer</code>,
         <code>Deserializer</code> and <code>Serde</code> so that they can be 
implemented by lambda expression.
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-331+Add+default+implementation+to+close%28%29+and+configure%28%29+for+Serializer%2C+Deserializer+and+Serde";>KIP-331</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/fgw0BQ";>KIP-331</a>.
     </p>
 
     <p>
@@ -1070,18 +1070,18 @@
         <code>java.lang.ClassCastException: class 
org.apache.kafka.streams.state.ValueAndTimestamp cannot be cast to class 
YOUR-VALUE-TYPE</code>
         upon getting a value from the store.</strong>
         Additionally, <code>TopologyTestDriver#getStateStore()</code> only 
returns non-built-in stores and throws an exception if a built-in store is 
accessed.
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-258%3A+Allow+to+Store+Record+Timestamps+in+RocksDB";>KIP-258</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/0j6HB";>KIP-258</a>.
     </p>
 
     <p>
         To improve type safety, a new operator 
<code>KStream#flatTransformValues</code> is added.
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-313%3A+Add+KStream.flatTransform+and+KStream.flatTransformValues";>KIP-313</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/bUgYBQ";>KIP-313</a>.
     </p>
 
     <p>
         Kafka Streams used to set the configuration parameter 
<code>max.poll.interval.ms</code> to <code>Integer.MAX_VALUE</code>.
         This default value is removed and Kafka Streams uses the consumer 
default value now.
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-442%3A+Return+to+default+max+poll+interval+in+Streams";>KIP-442</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/1COGBg";>KIP-442</a>.
     </p>
 
     <p>
@@ -1089,13 +1089,13 @@
         The segment size for index files (<code>segment.index.bytes</code>) is 
no longer 50MB, but uses the cluster default.
         Similarly, the configuration <code>segment.ms</code> in no longer 10 
minutes, but uses the cluster default configuration.
         Lastly, the retention period (<code>retention.ms</code>) is changed 
from <code>Long.MAX_VALUE</code> to <code>-1</code> (infinite).
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-443%3A+Return+to+default+segment.ms+and+segment.index.bytes+in+Streams+repartition+topics";>KIP-443</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/4iOGBg";>KIP-443</a>.
     </p>
 
     <p>
         To avoid memory leaks, <code>RocksDBConfigSetter</code> has a new 
<code>close()</code> method that is called on shutdown.
         Users should implement this method to release any memory used by 
RocksDB config objects, by closing those objects.
-        For more details please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-453%3A+Add+close%28%29+method+to+RocksDBConfigSetter";>KIP-453</a>.
+        For more details please read <a 
href="https://cwiki.apache.org/confluence/x/QhaZBg";>KIP-453</a>.
     </p>
 
     <p>
@@ -1113,12 +1113,12 @@
 
     <p>
         In <code>WindowedSerdes</code>, we've added a new static constructor 
to return a <code>TimeWindowSerde</code> with configurable window size. This is 
to help users to construct time window serdes to read directly from a 
time-windowed store's changelog.
-        More details can be found in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-393%3A+Time+windowed+serde+to+properly+deserialize+changelog+input+topic";>KIP-393</a>.
+        More details can be found in <a 
href="https://cwiki.apache.org/confluence/x/WYTQBQ";>KIP-393</a>.
     </p>
 
     <p>
         In 2.2.0 we have extended a few public interfaces including 
<code>KafkaStreams</code> to extend <code>AutoCloseable</code> so that they can 
be
-        used in a try-with-resource statement. For a full list of public 
interfaces that get impacted please read <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-376%3A+Implement+AutoClosable+on+appropriate+classes+that+want+to+be+used+in+a+try-with-resource+statement";>KIP-376</a>.
+        used in a try-with-resource statement. For a full list of public 
interfaces that get impacted please read <a 
href="https://cwiki.apache.org/confluence/x/-AeQBQ";>KIP-376</a>.
     </p>
 
     <h3 class="anchor-heading"><a id="streams_api_changes_210" 
class="anchor-link"></a><a href="#streams_api_changes_210">Streams API changes 
in 2.1.0</a></h3>
@@ -1127,7 +1127,7 @@
         Users are encouraged to use <code>#topicSet()</code> and 
<code>#topicPattern()</code> accordingly on 
<code>TopologyDescription.Source</code> nodes,
         instead of using <code>#topics()</code>, which has since been 
deprecated. Similarly, use <code>#topic()</code> and 
<code>#topicNameExtractor()</code>
         to get descriptions of <code>TopologyDescription.Sink</code> nodes. 
For more details, see
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-321%3A+Update+TopologyDescription+to+better+represent+Source+and+Sink+Nodes";>KIP-321</a>.
+        <a href="https://cwiki.apache.org/confluence/x/NQU0BQ";>KIP-321</a>.
     </p>
 
     <p>
@@ -1140,7 +1140,7 @@
 
         Additionally, we've updated the <code>Joined</code> class with a new 
method <code>Joined#withName</code>
         enabling users to name any repartition topics required for performing 
Stream/Stream or Stream/Table join.  For more details repartition
-        topic naming, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-372%3A+Naming+Repartition+Topics+for+Joins+and+Grouping";>KIP-372</a>.
+        topic naming, see <a 
href="https://cwiki.apache.org/confluence/x/mgJ1BQ";>KIP-372</a>.
 
         As a result we've updated the Kafka Streams Scala API and removed the 
<code>Serialized</code> class in favor of adding <code>Grouped</code>.
         If you just rely on the implicit <code>Serialized</code>, you just 
need to recompile; if you pass in <code>Serialized</code> explicitly, sorry 
you'll have to make code changes.
@@ -1161,7 +1161,7 @@
 
     <p>
         We added a new serde for UUIDs (<code>Serdes.UUIDSerde</code>) that 
you can use via <code>Serdes.UUID()</code>
-       (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-206%3A+Add+support+for+UUID+serialization+and+deserialization";>KIP-206</a>).
+       (cf. <a href="https://cwiki.apache.org/confluence/x/26hjB";>KIP-206</a>).
     </p>
 
     <p>
@@ -1175,19 +1175,19 @@
         The <code>Window</code> class has new methods 
<code>#startTime()</code> and <code>#endTime()</code> that return window 
start/end timestamp as <code>Instant</code>.
         For interactive queries, there are new <code>#fetch(...)</code> 
overloads taking <code>Instant</code> arguments.
         Additionally, punctuations are now registered via 
<code>ProcessorContext#schedule(Duration interval, ...)</code>.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-358%3A+Migrate+Streams+API+to+Duration+instead+of+long+ms+times";>KIP-358</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/IBNPBQ";>KIP-358</a>.
     </p>
 
     <p>
         We deprecated <code>KafkaStreams#close(...)</code> and replaced it 
with <code>KafkaStreams#close(Duration)</code> that accepts a single timeout 
argument
         Note: the new <code>#close(Duration)</code> method has improved (but 
slightly different) semantics.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-358%3A+Migrate+Streams+API+to+Duration+instead+of+long+ms+times";>KIP-358</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/IBNPBQ";>KIP-358</a>.
     </p>
 
     <p>
         The newly exposed <code>AdminClient</code> metrics are now available 
when calling the <code>KafkaStream#metrics()</code> method.
         For more details on exposing <code>AdminClients</code> metrics
-        see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-324%3A+Add+method+to+get+metrics%28%29+in+AdminClient";>KIP-324</a>
+        see <a href="https://cwiki.apache.org/confluence/x/lQg0BQ";>KIP-324</a>
     </p>
 
     <p>
@@ -1197,9 +1197,9 @@
         Similarly, <code>WindowBytesStoreSupplier#segments()</code> was 
deprecated and replaced with 
<code>WindowBytesStoreSupplier#segmentInterval()</code>.
         If you implement custom window store, you need to update your code 
accordingly.
            Finally, <code>Stores#persistentWindowStore(...)</code> were 
deprecated and replaced with a new overload that does not allow to specify the 
number of segments any longer.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-319%3A+Replace+segments+with+segmentInterval+in+WindowBytesStoreSupplier";>KIP-319</a>
-        (note: <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-328%3A+Ability+to+suppress+updates+for+KTables";>KIP-328</a>
 and 
-           <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-358%3A+Migrate+Streams+API+to+Duration+instead+of+long+ms+times";>KIP-358</a>
 'overlap' with KIP-319).
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/mQU0BQ";>KIP-319</a>
+        (note: <a 
href="https://cwiki.apache.org/confluence/x/sQU0BQ";>KIP-328</a> and 
+           <a href="https://cwiki.apache.org/confluence/x/IBNPBQ";>KIP-358</a> 
'overlap' with KIP-319).
     </p>
 
     <p>
@@ -1211,7 +1211,7 @@
         reusing the source topic as the changelog topic, the topology may be 
optimized to merge redundant repartition topics into one
         repartition topic.  The original no parameter version of 
<code>StreamsBuilder#build</code> is still available for those who wish to not
         optimize their topology.  Note that enabling optimization of the 
topology may require you to do an application reset when redeploying the 
application.  For more
-        details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-312%3A+Add+Overloaded+StreamsBuilder+Build+Method+to+Accept+java.util.Properties";>KIP-312</a>
+        details, see <a 
href="https://cwiki.apache.org/confluence/x/CkcYBQ";>KIP-312</a>
     </p>
 
     <p>
@@ -1249,7 +1249,7 @@
         <code>skipped-records-rate</code> and 
<code>skipped-records-total</code>. When a record is skipped, the event is
         now logged at WARN level. If these warnings become burdensome, we 
recommend explicitly filtering out unprocessable
         records instead of depending on record skipping semantics. For more 
details, see
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-274%3A+Kafka+Streams+Skipped+Records+Metrics";>KIP-274</a>.
+        <a href="https://cwiki.apache.org/confluence/x/gFOHB";>KIP-274</a>.
         As of right now, the potential causes of skipped records are:
     </p>
     <ul>
@@ -1287,13 +1287,13 @@
     <p>
         We have added support for methods in <code>ReadOnlyWindowStore</code> 
which allows for querying a single window's key-value pair.
         For users who have customized window store implementations on the 
above interface, they'd need to update their code to implement the newly added 
method as well.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-261%3A+Add+Single+Value+Fetch+in+Window+Stores";>KIP-261</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/UUSHB";>KIP-261</a>.
     </p>
     <p>
         We have added public <code>WindowedSerdes</code> to allow users to 
read from / write to a topic storing windowed table changelogs directly.
         In addition, in <code>StreamsConfig</code> we have also added 
<code>default.windowed.key.serde.inner</code> and 
<code>default.windowed.value.serde.inner</code>
         to let users specify inner serdes if the default serde classes are 
windowed serdes.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-265%3A+Make+Windowed+Serde+to+public+APIs";>KIP-265</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/_keHB";>KIP-265</a>.
     </p>
     <p>
         We've added message header support in the <code>Processor API</code> 
in Kafka 2.0.0. In particular, we have added a new API 
<code>ProcessorContext#headers()</code>
@@ -1304,10 +1304,10 @@
     <p>
         We have deprecated constructors of <code>KafkaStreams</code> that take 
a <code>StreamsConfig</code> as parameter.
         Please use the other corresponding constructors that accept 
<code>java.util.Properties</code> instead.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-245%3A+Use+Properties+instead+of+StreamsConfig+in+KafkaStreams+constructor";>KIP-245</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/KLRzB";>KIP-245</a>.
     </p>
     <p>
-        Kafka 2.0.0 allows to manipulate timestamps of output records using 
the Processor API (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-251%3A+Allow+timestamp+manipulation+in+Processor+API";>KIP-251</a>).
+        Kafka 2.0.0 allows to manipulate timestamps of output records using 
the Processor API (<a 
href="https://cwiki.apache.org/confluence/x/Ih6HB";>KIP-251</a>).
         To enable this new feature, <code>ProcessorContext#forward(...)</code> 
was modified.
         The two existing overloads <code>#forward(Object key, Object value, 
String childName)</code> and <code>#forward(Object key, Object value, int 
childIndex)</code> were deprecated and a new overload <code>#forward(Object 
key, Object value, To to)</code> was added.
         The new class <code>To</code> allows you to send records to all or 
specific downstream processors by name and to set the timestamp for the output 
record.
@@ -1334,7 +1334,7 @@
         automatic conversion between Java and Scala collection types, a way
         to implicitly provide Serdes to reduce boilerplate from your 
application and make it more typesafe, and more!  For more information see the
         <a 
href="/{{version}}/documentation/streams/developer-guide/dsl-api.html#scala-dsl">Kafka
 Streams DSL for Scala documentation</a> and
-        <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-270+-+A+Scala+Wrapper+Library+for+Kafka+Streams";>KIP-270</a>.
+        <a href="https://cwiki.apache.org/confluence/x/c06HB";>KIP-270</a>.
     </p>
     <p>
         We have removed these deprecated APIs:
@@ -1361,17 +1361,17 @@
     <p>
         We have added support for methods in <code>ReadOnlyWindowStore</code> 
which allows for querying <code>WindowStore</code>s without the necessity of 
providing keys.
         For users who have customized window store implementations on the 
above interface, they'd need to update their code to implement the newly added 
method as well.
-        For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-205%3A+Add+all%28%29+and+range%28%29+API+to+ReadOnlyWindowStore";>KIP-205</a>.
+        For more details, see <a 
href="https://cwiki.apache.org/confluence/x/6qdjB";>KIP-205</a>.
     </p>
 
     <p>
            There is a new artifact <code>kafka-streams-test-utils</code> 
providing a <code>TopologyTestDriver</code>, 
<code>ConsumerRecordFactory</code>, and <code>OutputVerifier</code> class.
            You can include the new artifact as a regular dependency to your 
unit tests and use the test driver to test your business logic of your Kafka 
Streams application.
-           For more details, see <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-247%3A+Add+public+test+utils+for+Kafka+Streams";>KIP-247</a>.
+           For more details, see <a 
href="https://cwiki.apache.org/confluence/x/EQOHB";>KIP-247</a>.
     </p>
 
     <p>
-        The introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-220%3A+Add+AdminClient+into+Kafka+Streams%27+ClientSupplier";>KIP-220</a>
+        The introduction of <a 
href="https://cwiki.apache.org/confluence/x/QJ5zB";>KIP-220</a>
         enables you to provide configuration parameters for the embedded admin 
client created by Kafka Streams, similar to the embedded producer and consumer 
clients.
         You can provide the configs via <code>StreamsConfig</code> by adding 
the configs with the prefix <code>admin.</code> as defined by 
<code>StreamsConfig#adminClientPrefix(String)</code>
         to distinguish them from configurations of other clients that share 
the same config names.
@@ -1412,7 +1412,7 @@
 
     <p> Changes in <code>StreamsResetter</code>: </p>
     <ul>
-        <li> added options to specify input topics offsets to reset according 
to <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-171+-+Extend+Consumer+Group+Reset+Offset+for+Stream+Application";>KIP-171</a></li>
+        <li> added options to specify input topics offsets to reset according 
to <a href="https://cwiki.apache.org/confluence/x/ApI7B";>KIP-171</a></li>
     </ul>
 
     <h3 class="anchor-heading"><a id="streams_api_changes_100" 
class="anchor-link"></a><a href="#streams_api_changes_100">Streams API changes 
in 1.0.0</a></h3>
@@ -1438,8 +1438,8 @@
         and <code>TopologyBuilder</code> but not part of the actual API are 
not present
         in the new classes any longer.
         Furthermore, some overloads were simplified compared to the original 
classes.
-        See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-120%3A+Cleanup+Kafka+Streams+builder+API";>KIP-120</a>
-        and <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-182%3A+Reduce+Streams+DSL+overloads+and+allow+easier+use+of+custom+storage+engines";>KIP-182</a>
+        See <a href="https://cwiki.apache.org/confluence/x/uR8IB";>KIP-120</a>
+        and <a href="https://cwiki.apache.org/confluence/x/TYZjB";>KIP-182</a>
         for full details.
     </p>
 
@@ -1459,7 +1459,7 @@
         New methods in <code>KStream</code>:
     </p>
     <ul>
-        <li>With the introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-202+Move+merge%28%29+from+StreamsBuilder+to+KStream";>KIP-202</a>
+        <li>With the introduction of <a 
href="https://cwiki.apache.org/confluence/x/66JjB";>KIP-202</a>
             a new method <code>merge()</code> has been created in 
<code>KStream</code> as the StreamsBuilder class's 
<code>StreamsBuilder#merge()</code> has been removed.
             The method signature was also changed, too: instead of providing 
multiple <code>KStream</code>s into the method at the once, only a single 
<code>KStream</code> is accepted.
         </li>
@@ -1483,7 +1483,7 @@
             <code>TopologyDescription</code> / 
<code>Topology#describe()</code> (returning static information).
         </li>
         <li>
-            With the introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-182%3A+Reduce+Streams+DSL+overloads+and+allow+easier+use+of+custom+storage+engines";>KIP-182</a>
+            With the introduction of <a 
href="https://cwiki.apache.org/confluence/x/TYZjB";>KIP-182</a>
             you should no longer pass in <code>Serde</code> to 
<code>KStream#print</code> operations.
             If you can't rely on using <code>toString</code> to print your 
keys an values, you should instead you provide a custom 
<code>KeyValueMapper</code> via the <code>Printed#withKeyValueMapper</code> 
call.
         </li>
@@ -1533,14 +1533,14 @@
     </p>
 
     <p>
-        The introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-161%3A+streams+deserialization+exception+handlers";>KIP-161</a>
+        The introduction of <a 
href="https://cwiki.apache.org/confluence/x/WQgwB";>KIP-161</a>
         enables you to provide a default exception handler for deserialization 
errors when reading data from Kafka rather than throwing the exception all the 
way out of your streams application.
         You can provide the configs via the <code>StreamsConfig</code> as 
<code>StreamsConfig#DEFAULT_DESERIALIZATION_EXCEPTION_HANDLER_CLASS_CONFIG</code>.
         The specified handler must implement the 
<code>org.apache.kafka.streams.errors.DeserializationExceptionHandler</code> 
interface.
     </p>
 
     <p>
-        The introduction of <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-173%3A+Add+prefix+to+StreamsConfig+to+enable+setting+default+internal+topic+configs";>KIP-173</a>
+        The introduction of <a 
href="https://cwiki.apache.org/confluence/x/aZM7B";>KIP-173</a>
         enables you to provide topic configuration parameters for any topics 
created by Kafka Streams.
         This includes repartition and changelog topics.
         You can provide the configs via the <code>StreamsConfig</code> by 
adding the configs with the prefix as defined by 
<code>StreamsConfig#topicPrefix(String)</code>.
@@ -1645,7 +1645,7 @@
     </p>
     <ul>
         <li> parameter <code>zookeeper.connect</code> was deprecated; a Kafka 
Streams application does no longer interact with ZooKeeper for topic management 
but uses the new broker admin protocol
-            (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-4+-+Command+line+and+centralized+administrative+operations#KIP-4-Commandlineandcentralizedadministrativeoperations-TopicAdminSchema.1";>KIP-4,
 Section "Topic Admin Schema"</a>) </li>
+            (cf. <a href="https://cwiki.apache.org/confluence/x/vBEIAw";>KIP-4, 
Section "Topic Admin Schema"</a>) </li>
         <li> added many new parameters for metrics, security, and client 
configurations </li>
     </ul>
 
@@ -1673,7 +1673,7 @@
         <li> added overloads for <code>join()</code> to join with 
<code>KTable</code> </li>
         <li> added overloads for <code>join()</code> and 
<code>leftJoin()</code> to join with <code>GlobalKTable</code> </li>
         <li> note, join semantics in 0.10.2 were improved and thus you might 
see different result compared to 0.10.0.x and 0.10.1.x
-            (cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Join+Semantics";>Kafka
 Streams Join Semantics</a> in the Apache Kafka wiki)
+            (cf. <a href="https://cwiki.apache.org/confluence/x/EzPtAw";>Kafka 
Streams Join Semantics</a> in the Apache Kafka wiki)
     </ul>
 
     <p> Aligned <code>null</code>-key handling for <code>KTable</code> joins: 
</p>
@@ -1696,7 +1696,7 @@
         <li> new alternative timestamp extractor classes 
<code>LogAndSkipOnInvalidTimestamp</code> and 
<code>UsePreviousTimeOnInvalidTimestamps</code> </li>
     </ul>
 
-    <p> Relaxed type constraints of many DSL interfaces, classes, and methods 
(cf. <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-100+-+Relax+Type+constraints+in+Kafka+Streams+API";>KIP-100</a>).
 </p>
+    <p> Relaxed type constraints of many DSL interfaces, classes, and methods 
(cf. <a href="https://cwiki.apache.org/confluence/x/dQMIB";>KIP-100</a>). </p>
 
     <h3 class="anchor-heading"><a id="streams_api_changes_0101" 
class="anchor-link"></a><a href="#streams_api_changes_0101">Streams API changes 
in 0.10.1.0</a></h3>
 
diff --git a/docs/upgrade.html b/docs/upgrade.html
index b78a0ffcc6a..cf5bb35f480 100644
--- a/docs/upgrade.html
+++ b/docs/upgrade.html
@@ -58,7 +58,7 @@
            (including Connect and Kafka Streams which use the clients 
internally) to 4.0.
             Similarly, users should ensure their Java clients (including 
Connect and Kafka Streams) version is 2.1 or higher before upgrading brokers to 
4.0.
            Finally, care also needs to be taken when it comes to kafka clients 
that are not part of Apache Kafka, please see
-            <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-896%3A+Remove+old+client+protocol+API+versions+in+Kafka+4.0";>KIP-896</a>
 for the details.
+            <a href="https://cwiki.apache.org/confluence/x/K5sODg";>KIP-896</a> 
for the details.
         </li>
         <li>
             Apache Kafka 4.0 only supports KRaft mode - ZooKeeper mode has 
been removed. As such, broker upgrades to 4.0.x (and higher) require KRaft mode 
and
@@ -72,19 +72,19 @@
             group coordinator can be tuned by setting the configurations with 
prefix <code>group.coordinator</code>.
         </li>
         <li>
-            The Next Generation of the Consumer Rebalance Protocol (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-848%3A+The+Next+Generation+of+the+Consumer+Rebalance+Protocol";>KIP-848</a>)
+            The Next Generation of the Consumer Rebalance Protocol (<a 
href="https://cwiki.apache.org/confluence/x/HhD1D";>KIP-848</a>)
             is now Generally Available (GA) in Apache Kafka 4.0. The protocol 
is automatically enabled on the server when the upgrade to 4.0 is finalized.
             Note that once the new protocol is used by consumer groups, the 
cluster can only downgrade to version 3.4.1 or newer.
             Check <a 
href="/{{version}}/documentation.html#consumer_rebalance_protocol">here</a> for 
details.
         </li>
         <li>
-            Transactions Server Side Defense (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-890%3A+Transactions+Server-Side+Defense";>KIP-890</a>)
+            Transactions Server Side Defense (<a 
href="https://cwiki.apache.org/confluence/x/B40ODg";>KIP-890</a>)
             brings a strengthened transactional protocol to Apache Kafka 4.0. 
The new and improved transactional protocol is enabled when the upgrade to 4.0 
is finalized.
             When using 4.0 producer clients, the producer epoch is bumped on 
every transaction to ensure every transaction includes the intended messages 
and duplicates are not
             written as part of the next transaction. Downgrading the protocol 
is safe. For more information check <a 
href="/{{version}}/documentation.html#transaction_protocol">here</a>
         </li>
         <li>
-            Eligible Leader Replicas (<a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-966%3A+Eligible+Leader+Replicas";>KIP-966
 Part 1</a>)
+            Eligible Leader Replicas (<a 
href="https://cwiki.apache.org/confluence/x/mpOzDw";>KIP-966 Part 1</a>)
             enhances the replication protocol for the Apache Kafka 4.0. Now 
the KRaft controller keeps track of the data partition replicas that are
             not included in ISR but are safe to be elected as leader without 
data loss. Such replicas are stored in the partition metadata as
             the <code>Eligible Leader Replicas</code>(ELR).
@@ -106,7 +106,7 @@
                             is now set to 
<code>org.apache.kafka.common.metrics.JmxReporter</code> by default.
                         </li>
                         <li>The constructor 
<code>org.apache.kafka.common.metrics.JmxReporter</code> with string argument 
was removed.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-606%3A+Add+Metadata+Context+to+MetricsReporter";>KIP-606</a>
 for details.
+                            See <a 
href="https://cwiki.apache.org/confluence/x/SxIRCQ";>KIP-606</a> for details.
                         </li>
                         <li>The <code>bufferpool-wait-time-total</code>, 
<code>io-waittime-total</code>, and <code>iotime-total</code> metrics were 
removed.
                             Please use 
<code>bufferpool-wait-time-ns-total</code>, <code>io-wait-time-ns-total</code>, 
and <code>io-time-ns-total</code> metrics as replacements, respectively.
@@ -151,25 +151,25 @@
                         </li>
                         <li>The 
<code>log.message.timestamp.difference.max.ms</code> configuration was removed.
                             Please use 
<code>log.message.timestamp.before.max.ms</code> and 
<code>log.message.timestamp.after.max.ms</code> instead.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-937%3A+Improve+Message+Timestamp+Validation";>KIP-937</a>
 for details.
+                            See <a 
href="https://cwiki.apache.org/confluence/x/thQ0Dw";>KIP-937</a> for details.
                         </li>
                         <li>
                             The 
<code>remote.log.manager.copier.thread.pool.size</code> configuration default 
value was changed to 10 from -1.
                             Values of -1 are no longer valid. A minimum of 1 
or higher is valid.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                            See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                         </li>
                         <li>
                             The 
<code>remote.log.manager.expiration.thread.pool.size</code> configuration 
default value was changed to 10 from -1.
                             Values of -1 are no longer valid. A minimum of 1 
or higher is valid.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                            See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                         </li>
                         <li>
                             The 
<code>remote.log.manager.thread.pool.size</code> configuration default value 
was changed to 2 from 10.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                            See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                         </li>
                         <li>
                             The minimum 
<code>segment.bytes/log.segment.bytes</code> has changed from 14 bytes to 1MB.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                            See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                         </li>
                     </ul>
                 </li>
@@ -240,7 +240,7 @@
                         </li>
                         <li>kafka-configs.sh now uses incrementalAlterConfigs 
API to alter broker configurations instead of the deprecated alterConfigs API,
                             and it will fall directly if the broker doesn't 
support incrementalAlterConfigs API, which means the broker version is prior to 
2.3.x.
-                            See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1011%3A+Use+incrementalAlterConfigs+when+updating+broker+configs+by+kafka-configs.sh";>KIP-1011</a>
 for more details.
+                            See <a 
href="https://cwiki.apache.org/confluence/x/wIn5E";>KIP-1011</a> for more 
details.
                         </li>
                         <li>The <code>kafka.admin.ZkSecurityMigrator</code> 
tool was removed.
                         </li>
@@ -349,15 +349,15 @@
                 <li>
                     The minimum Java version required by clients and Kafka 
Streams applications has been increased from Java 8 to Java 11
                     while brokers, connect and tools now require Java 17.
-                    See <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181308223";>KIP-750</a>
 and
-                    <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=284789510";>KIP-1013</a>
 for more details.
+                    See <a 
href="https://cwiki.apache.org/confluence/x/P4vOCg";>KIP-750</a> and
+                    <a 
href="https://cwiki.apache.org/confluence/x/Bov5E";>KIP-1013</a> for more 
details.
                 </li>
                 <li>
                     Java 23 support has been added in Apache Kafka 4.0
                 </li>
                 <li>
                     Scala 2.12 support has been removed in Apache Kafka 4.0
-                    See <a 
href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181308218";>KIP-751</a>
 for more details
+                    See <a 
href="https://cwiki.apache.org/confluence/x/OovOCg";>KIP-751</a> for more details
                 </li>
                 <li>
                     Logging framework has been migrated from Log4j to Log4j2.
@@ -377,35 +377,35 @@
                     For implementors of RemoteLogMetadataManager (RLMM), a new 
API `nextSegmentWithTxnIndex` is
                     introduced in RLMM to allow the implementation to return 
the next segment metadata with a transaction
                     index. This API is used when the consumers are enabled 
with isolation level as READ_COMMITTED.
-                    See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1058:+Txn+consumer+exerts+pressure+on+remote+storage+when+collecting+aborted+transactions";>KIP-1058</a>
 for more details.
+                    See <a 
href="https://cwiki.apache.org/confluence/x/BwuTEg";>KIP-1058</a> for more 
details.
                 </li>
                 <li>
                     The criteria for identifying internal topics in 
ReplicationPolicy and DefaultReplicationPolicy have
                     been updated to enable the replication of topics that 
appear to be internal but aren't truly internal to Kafka and Mirror Maker 2.
-                    See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1074%3A+Allow+the+replication+of+user+internal+topics";>KIP-1074</a>
 for more details.
+                    See <a 
href="https://cwiki.apache.org/confluence/x/jA3OEg";>KIP-1074</a> for more 
details.
                 </li>
                 <li>
-                    KIP-714 is now enabled for Kafka Streams via <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1076%3A++Metrics+for+client+applications+KIP-714+extension";>KIP-1076</a>.
+                    KIP-714 is now enabled for Kafka Streams via <a 
href="https://cwiki.apache.org/confluence/x/XA-OEg";>KIP-1076</a>.
                    This allows to not only collect the metric of the 
internally used clients of a Kafka Streams application via a broker-side plugin,
                    but also to collect the <a 
href="/{{version}}/documentation/#kafka_streams_monitoring">metrics</a> of the 
Kafka Streams runtime itself.
             </li>
                 <li>
                     The default value of 'num.recovery.threads.per.data.dir' 
has been changed from 1 to 2. The impact of this is faster
                     recovery post unclean shutdown at the expense of extra IO 
cycles.
-                    See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                    See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                 </li>
                 <li>
                     The default value of 'message.timestamp.after.max.ms' has 
been changed from Long.Max to 1 hour. The impact of this messages with a 
                     timestamp of more than 1 hour in the future will be 
rejected when message.timestamp.type=CreateTime is set.
-                    See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1030%3A+Change+constraints+and+default+values+for+various+configurations";>KIP-1030</a>
 
+                    See <a 
href="https://cwiki.apache.org/confluence/x/FAqpEQ";>KIP-1030</a> 
                 </li>
                 <li>Introduced in KIP-890, the 
<code>TransactionAbortableException</code> enhances error handling within 
transactional operations by clearly indicating scenarios where transactions 
should be aborted due to errors. It is important for applications to properly 
manage both <code>TimeoutException</code> and 
<code>TransactionAbortableException</code> when working with transaction 
producers.</li>
                 <ul>
                     <li><b>TimeoutException:</b> This exception indicates that 
a transactional operation has timed out. Given the risk of message duplication 
that can arise from retrying operations after a timeout (potentially violating 
exactly-once semantics), applications should treat timeouts as reasons to abort 
the ongoing transaction.</li>
                     <li><b>TransactionAbortableException:</b> Specifically 
introduced to signal errors that should lead to transaction abortion, ensuring 
this exception is properly handled is critical for maintaining the integrity of 
transactional processing.</li>
                     <li>To ensure seamless operation and compatibility with 
future Kafka versions, developers are encouraged to update their error-handling 
logic to treat both exceptions as triggers for aborting transactions. This 
approach is pivotal for preserving exactly-once semantics.</li>
-                    <li> See <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-890%3A+Transactions+Server-Side+Defense";>KIP-890</a>
 and
-                    <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-1050%3A+Consistent+error+handling+for+Transactions";>KIP-1050</a>
 for more details </li>
+                    <li> See <a 
href="https://cwiki.apache.org/confluence/x/B40ODg";>KIP-890</a> and
+                    <a 
href="https://cwiki.apache.org/confluence/x/8ItyEg";>KIP-1050</a> for more 
details </li>
                 </ul>
             </ul>
         </li>


Reply via email to