This is an automated email from the ASF dual-hosted git repository.
guozhang 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 c9161af MINOR: doc change for deprecate removal (#5006)
c9161af is described below
commit c9161afda998e42d8ee9ebbfe5e647ff337bd19b
Author: Guozhang Wang <[email protected]>
AuthorDate: Tue May 15 20:26:19 2018 -0700
MINOR: doc change for deprecate removal (#5006)
Reviewers: John Roesler <[email protected]>, Bill Bejeck
<[email protected]>, Matthias J. Sax <[email protected]>
---
docs/streams/upgrade-guide.html | 100 +++++++++++++++++++---------------------
docs/upgrade.html | 69 ++++-----------------------
2 files changed, 58 insertions(+), 111 deletions(-)
diff --git a/docs/streams/upgrade-guide.html b/docs/streams/upgrade-guide.html
index 646908d..f6b237f 100644
--- a/docs/streams/upgrade-guide.html
+++ b/docs/streams/upgrade-guide.html
@@ -34,70 +34,46 @@
</div>
<p>
- If you want to upgrade from 1.1.x to 2.0.0 and you have customized
window store implementations on the <code>ReadOnlyWindowStore</code> interface
- you'd need to update your code to incorporate the newly added public
APIs; otherwise you don't need to make any code changes.
- See <a href="#streams_api_changes_200">below</a> for a complete list
of 2.0.0 API and semantic changes that allow you to advance your application
and/or simplify your code base.
+ Upgrading from any older version to 2.0.0 is possible: (1) you need to
make sure to update you code accordingly, because there are some minor
non-compatible API changes since older
+ releases (the code changes are expected to be minimal, please see
below for the details),
+ (2) upgrading to 2.0.0 in the online mode requires two rolling bounces.
+ For (2), in the first rolling bounce phase users need to set config
<code>upgrade.from="older version"</code> (possible values are <code>"0.10.0",
"0.10.1", "0.10.2", "0.11.0", "1.0", and "1.1"</code>)
+ (cf. <a
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-268%3A+Simplify+Kafka+Streams+Rebalance+Metadata+Upgrade">KIP-268</a>):
</p>
+ <ul>
+ <li> prepare your application instances for a rolling bounce and make
sure that config <code>upgrade.from</code> is set to the version from which it
is being upgrade to new version 2.0.0</li>
+ <li> bounce each instance of your application once </li>
+ <li> prepare your newly deployed 2.0.0 application instances for a
second round of rolling bounces; make sure to remove the value for config
<code>upgrade.mode</code> </li>
+ <li> bounce each instance of your application once more to complete
the upgrade </li>
+ </ul>
+ <p> As an alternative, an offline upgrade is also possible. Upgrading from
any versions as old as 0.10.0.x to 2.0.0 in offline mode require the following
steps: </p>
+ <ul>
+ <li> stop all old (e.g., 0.10.0.x) application instances </li>
+ <li> update your code and swap old code and jar file with new code and
new jar file </li>
+ <li> restart all new (2.0.0) application instances </li>
+ </ul>
<p>
- If you want to upgrade from 1.0.x to 2.0.0 and you have customized
window store implementations on the <code>ReadOnlyWindowStore</code> interface
- you'd need to update your code to incorporate the newly added public
APIs.
- Otherwise, if you are using Java 7 you don't need to make any code
changes as the public API is fully backward compatible;
- but if you are using Java 8 method references in your Kafka Streams
code you might need to update your code to resolve method ambiguities.
- Hot-swaping the jar-file only might not work for this case.
- See below a complete list of <a
href="#streams_api_changes_200">2.0.0</a> and <a
href="#streams_api_changes_110">1.1.0</a>
- API and semantic changes that allow you to advance your application
and/or simplify your code base.
+ Note, that a brokers must be on version 0.10.1 or higher to run a
Kafka Streams application version 0.10.1 or higher;
+ On-disk message format must be 0.10 or higher to run a Kafka Streams
application version 1.0 or higher.
+ For Kafka Streams 0.10.0, broker version 0.10.0 or higher is required.
</p>
<p>
- If you want to upgrade from 0.10.2.x or 0.11.0.x to 2.0.x and you have
customized window store implementations on the <code>ReadOnlyWindowStore</code>
interface
- you'd need to update your code to incorporate the newly added public
APIs.
- Otherwise, if you are using Java 7 you don't need to do any code
changes as the public API is fully backward compatible;
- but if you are using Java 8 method references in your Kafka Streams
code you might need to update your code to resolve method ambiguities.
- However, some public APIs were deprecated and thus it is recommended
to update your code eventually to allow for future upgrades.
- See below a complete list of <a
href="#streams_api_changes_200">2.0</a>, <a
href="#streams_api_changes_110">1.1</a>,
- <a href="#streams_api_changes_100">1.0</a>, and <a
href="#streams_api_changes_0110">0.11.0</a> API
- and semantic changes that allow you to advance your application and/or
simplify your code base, including the usage of new features.
- Additionally, Streams API 1.1.x requires broker on-disk message format
version 0.10 or higher; thus, you need to make sure that the message
- format is configured correctly before you upgrade your Kafka Streams
application.
+ In 2.0.0 we have added a few new APIs on the
<code>ReadOnlyWindowStore</code> interface (for details please read <a
href="#streams_api_changes_200">Streams API changes</a> below).
+ If you have customized window store implementations that extends the
<code>ReadOnlyWindowStore</code> interface you need to make code changes.
</p>
<p>
- If you want to upgrade from 0.10.1.x to 2.0.x see the Upgrade Sections
for <a
href="/{{version}}/documentation/#upgrade_1020_streams"><b>0.10.2</b></a>,
- <a
href="/{{version}}/documentation/#upgrade_1100_streams"><b>0.11.0</b></a>,
- <a
href="/{{version}}/documentation/#upgrade_100_streams"><b>1.0</b></a>,
- <a
href="/{{version}}/documentation/#upgrade_110_streams"><b>1.1</b></a>, and
- <a
href="/{{version}}/documentation/#upgrade_200_streams"><b>2.0</b></a>.
- Note, that a brokers on-disk message format must be on version 0.10 or
higher to run a Kafka Streams application version 2.0 or higher.
- See below a complete list of <a
href="#streams_api_changes_0102">0.10.2</a>, <a
href="#streams_api_changes_0110">0.11.0</a>,
- <a href="#streams_api_changes_100">1.0</a>, <a
href="#streams_api_changes_110">1.1</a>, and <a
href="#streams_api_changes_200">2.0</a>
- API and semantical changes that allow you to advance your application
and/or simplify your code base, including the usage of new features.
+ We have also removed some public APIs that are deprecated prior to
1.0.x in 2.0.0.
+ See below for a detailed list of removed APIs.
</p>
-
<p>
- Upgrading from 0.10.0.x to 2.0.0 directly is also possible.
- Note, that a brokers must be on version 0.10.1 or higher and on-disk
message format must be on version 0.10 or higher
- to run a Kafka Streams application version 2.0 or higher.
- See <a href="#streams_api_changes_0101">Streams API changes in
0.10.1</a>, <a href="#streams_api_changes_0102">Streams API changes in
0.10.2</a>,
- <a href="#streams_api_changes_0110">Streams API changes in 0.11.0</a>,
<a href="#streams_api_changes_100">Streams API changes in 1.0</a>, and
- <a href="#streams_api_changes_110">Streams API changes in 1.1</a>, and
<a href="#streams_api_changes_200">Streams API changes in 2.0</a>
- for a complete list of API changes.
- Upgrading to 2.0.0 requires two rolling bounces with config
<code>upgrade.from="0.10.0"</code> set for first upgrade phase
- (cf. <a
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-268%3A+Simplify+Kafka+Streams+Rebalance+Metadata+Upgrade">KIP-268</a>).
- As an alternative, an offline upgrade is also possible.
+ In addition, if you using Java 8 method references in your Kafka
Streams code you might need to update your code to resolve method ambiguities.
+ Hot-swapping the jar-file only might not work for this case.
+ See below a complete list of <a
href="#streams_api_changes_200">2.0.0</a>
+ API and semantic changes that allow you to advance your application
and/or simplify your code base.
</p>
- <ul>
- <li> prepare your application instances for a rolling bounce and make
sure that config <code>upgrade.from</code> is set to <code>"0.10.0"</code> for
new version 2.0.0</li>
- <li> bounce each instance of your application once </li>
- <li> prepare your newly deployed 2.0.0 application instances for a
second round of rolling bounces; make sure to remove the value for config
<code>upgrade.mode</code> </li>
- <li> bounce each instance of your application once more to complete
the upgrade </li>
- </ul>
- <p> Upgrading from 0.10.0.x to 2.0.0 in offline mode: </p>
- <ul>
- <li> stop all old (0.10.0.x) application instances </li>
- <li> update your code and swap old code and jar file with new code and
new jar file </li>
- <li> restart all new (2.0.0) application instances </li>
- </ul>
<h3><a id="streams_api_changes_200"
href="#streams_api_changes_200">Streams API changes in 2.0.0</a></h3>
<p>
@@ -169,6 +145,26 @@
<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>.
</p>
+ <p>
+ We have removed these deprecated APIs:
+ </p>
+ <ul>
+ <li><code>KafkaStreams#toString</code> no longer returns the topology
and runtime metadata; to get topology metadata users can call
<code>Topology#describe()</code> and to get thread runtime metadata users can
call <code>KafkaStreams#localThreadsMetadata</code> (they are deprecated since
1.0.0).
+ For detailed guidance on how to update your code please read <a
href="#streams_api_changes_100">here</a></li>
+ <li><code>TopologyBuilder</code> and <code>KStreamBuilder</code> are
removed and replaced by <code>Topology</code> and <code>StreamsBuidler</code>
respectively (they are deprecated since 1.0.0).
+ For detailed guidance on how to update your code please read <a
href="#streams_api_changes_100">here</a></li>
+ <li><code>StateStoreSupplier</code> are removed and replaced with
<code>StoreBuilder</code> (they are deprecated since 1.0.0);
+ and the corresponding <code>Stores#create</code> and
<code>KStream, KTable, KGroupedStream</code> overloaded functions that use it
have also been removed.
+ For detailed guidance on how to update your code please read <a
href="#streams_api_changes_100">here</a></li>
+ <li><code>KStream, KTable, KGroupedStream</code> overloaded functions
that requires serde and other specifications explicitly are removed and
replaced with simpler overloaded functions that use <code>Consumed, Produced,
Serialized, Materialized, Joined</code> (they are deprecated since 1.0.0).
+ For detailed guidance on how to update your code please read <a
href="#streams_api_changes_100">here</a></li>
+ <li><code>Processor#punctuate</code>,
<code>ValueTransformer#punctuate</code>,
<code>ValueTransformer#punctuate</code> and
<code>RecordContext#schedule(long)</code> are removed and replaced by
<code>RecordContext#schedule(long, PunctuationType, Punctuator)</code> (they
are deprecated in 1.0.0). </li>
+ <li>The second <code>boolean</code> typed parameter "loggingEnabled"
in <code>ProcessorContext#register</code> has been removed; users can now use
<code>StoreBuilder#withLoggingEnabled, withLoggingDisabled</code> to specify
the behavior when they create the state store. </li>
+ <li><code>KTable#writeAs, print, foreach, to, through</code> are
removed, users can call <code>KTable#tostream()#writeAs</code> instead for the
same purpose (they are deprecated since 0.11.0.0).
+ For detailed list of removed APIs please read <a
href="#streams_api_changes_0110">here</a></li>
+ <li><code>StreamsConfig#KEY_SERDE_CLASS_CONFIG,
VALUE_SERDE_CLASS_CONFIG, TIMESTAMP_EXTRACTOR_CLASS_CONFIG</code> are removed
and replaced with <code>StreamsConfig#DEFAULT_KEY_SERDE_CLASS_CONFIG,
DEFAULT_VALUE_SERDE_CLASS_CONFIG,
DEFAULT_TIMESTAMP_EXTRACTOR_CLASS_CONFIG</code> respectively (they are
deprecated since 0.11.0.0). </li>
+ <li><code>StreamsConfig#ZOOKEEPER_CONNECT_CONFIG</code> are removed as
we do not need ZooKeeper dependency in Streams any more (it is deprecated since
0.10.2.0). </li>
+ </ul>
<h3><a id="streams_api_changes_110"
href="#streams_api_changes_110">Streams API changes in 1.1.0</a></h3>
<p>
diff --git a/docs/upgrade.html b/docs/upgrade.html
index f15191d..00f7ffe 100644
--- a/docs/upgrade.html
+++ b/docs/upgrade.html
@@ -19,7 +19,7 @@
<script id="upgrade-template" type="text/x-handlebars-template">
-<h4><a id="upgrade_2_0_0" href="#upgrade_2_0_0">Upgrading from 0.8.x, 0.9.x,
0.10.0.x, 0.10.1.x, 0.10.2.x, 0.11.0.x, 1.0.x, 1.1.x, or 1.2.x to 2.0.0</a></h4>
+<h4><a id="upgrade_2_0_0" href="#upgrade_2_0_0">Upgrading from 0.8.x, 0.9.x,
0.10.0.x, 0.10.1.x, 0.10.2.x, 0.11.0.x, 1.0.x, or 1.1.x to 2.0.0</a></h4>
<p>Kafka 2.0.0 introduces wire protocol changes. By following the recommended
rolling upgrade plan below,
you guarantee no downtime during the upgrade. However, please review the
<a href="#upgrade_200_notable">notable changes in 2.0.0</a> before upgrading.
</p>
@@ -36,7 +36,7 @@
<li>log.message.format.version=CURRENT_MESSAGE_FORMAT_VERSION
(See <a href="#upgrade_10_performance_impact">potential performance impact
following the upgrade</a> for the details on what this
configuration does.)</li>
</ul>
- If you are upgrading from 0.11.0.x, 1.0.x, 1.1.x or 1.2.x and you have
not overridden the message format, then you only need to override
+ If you are upgrading from 0.11.0.x, 1.0.x, 1.1.x, or 1.2.x and you
have not overridden the message format, then you only need to override
the inter-broker protocol format.
<ul>
<li>inter.broker.protocol.version=CURRENT_KAFKA_VERSION (0.11.0,
1.0, 1.1, 1.2).</li>
@@ -65,59 +65,6 @@
<h5><a id="upgrade_200_notable" href="#upgrade_200_notable">Notable changes in
2.0.0</a></h5>
<ul>
-</ul>
-
-<h5><a id="upgrade_200_new_protocols" href="#upgrade_200_new_protocols">New
Protocol Versions</a></h5>
-<ul>
- <li> <a
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-279%3A+Fix+log+divergence+between+leader+and+follower+after+fast+leader+fail+over">KIP-279</a>:
OffsetsForLeaderEpochResponse v1 introduces a partition-level
<code>leader_epoch</code> field. </li>
-</ul>
-
-<h4><a id="upgrade_2_0_0" href="#upgrade_2_0_0">Upgrading from 0.8.x, 0.9.x,
0.10.0.x, 0.10.1.x, 0.10.2.x, 0.11.0.x, 1.0.x, or 1.1.x to 2.0.x</a></h4>
-<p>Kafka 2.0.0 introduces wire protocol changes. By following the recommended
rolling upgrade plan below,
- you guarantee no downtime during the upgrade. However, please review the
<a href="#upgrade_200_notable">notable changes in 2.0.0</a> before upgrading.
-</p>
-
-<p><b>For a rolling upgrade:</b></p>
-
-<ol>
- <li> Update server.properties on all brokers and add the following
properties. CURRENT_KAFKA_VERSION refers to the version you
- are upgrading from. CURRENT_MESSAGE_FORMAT_VERSION refers to the
message format version currently in use. If you have previously
- overridden the message format version, you should keep its current
value. Alternatively, if you are upgrading from a version prior
- to 0.11.0.x, then CURRENT_MESSAGE_FORMAT_VERSION should be set to
match CURRENT_KAFKA_VERSION.
- <ul>
- <li>inter.broker.protocol.version=CURRENT_KAFKA_VERSION (e.g.
0.8.2, 0.9.0, 0.10.0, 0.10.1, 0.10.2, 0.11.0, 1.0, 1.1).</li>
- <li>log.message.format.version=CURRENT_MESSAGE_FORMAT_VERSION
(See <a href="#upgrade_10_performance_impact">potential performance impact
- following the upgrade</a> for the details on what this
configuration does.)</li>
- </ul>
- If you are upgrading from 0.11.0.x, 1.0.x, or 1.1.x and you have not
overridden the message format, then you only need to override
- the inter-broker protocol format.
- <ul>
- <li>inter.broker.protocol.version=CURRENT_KAFKA_VERSION (0.11.0,
1.0, 1.1).</li>
- </ul>
- </li>
- <li> Upgrade the brokers one at a time: shut down the broker, update the
code, and restart it. </li>
- <li> Once the entire cluster is upgraded, bump the protocol version by
editing <code>inter.broker.protocol.version</code> and setting it to 1.1.
- <li> Restart the brokers one by one for the new protocol version to take
effect.</li>
- <li> If you have overridden the message format version as instructed
above, then you need to do one more rolling restart to
- upgrade it to its latest version. Once all (or most) consumers have
been upgraded to 0.11.0 or later,
- change log.message.format.version to 2.0 on each broker and restart
them one by one. Note that the older Scala consumer
- does not support the new message format introduced in 0.11, so to
avoid the performance cost of down-conversion (or to
- take advantage of <a href="#upgrade_11_exactly_once_semantics">exactly
once semantics</a>), the newer Java consumer must be used.</li>
-</ol>
-
-<p><b>Additional Upgrade Notes:</b></p>
-
-<ol>
- <li>If you are willing to accept downtime, you can simply take all the
brokers down, update the code and start them back up. They will start
- with the new protocol by default.</li>
- <li>Bumping the protocol version and restarting can be done any time after
the brokers are upgraded. It does not have to be immediately after.
- Similarly for the message format version.</li>
- <li>If you are using Java8 method references in your Kafka Streams code
you might need to update your code to resolve method ambiguties.
- Hot-swapping the jar-file only might not work.</li>
-</ol>
-
-<h5><a id="upgrade_200_notable" href="#upgrade_200_notable">Notable changes in
2.0.0</a></h5>
-<ul>
<li><a href="https://cwiki.apache.org/confluence/x/oYtjB">KIP-186</a>
increases the default offset retention time from 1 day to 7 days. This makes it
less likely to "lose" offsets in an application that commits infrequently. It
also increases the active set of offsets and therefore can increase memory
usage on the broker. Note that the console consumer currently enables offset
commit by default and can be the source of a large number of offsets which this
change will now preserve for [...]
<li><a
href="https://issues.apache.org/jira/browse/KAFKA-5674">KAFKA-5674</a> extends
the lower interval of <code>max.connections.per.ip minimum</code> to zero and
therefore allows IP-based filtering of inbound connections.</li>
<li><a
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-272%3A+Add+API+version+tag+to+broker%27s+RequestsPerSec+metric">KIP-272</a>
@@ -132,16 +79,20 @@
</ul>
<h5><a id="upgrade_200_new_protocols" href="#upgrade_200_new_protocols">New
Protocol Versions</a></h5>
-<ul></ul>
+<ul>
+ <li> <a
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-279%3A+Fix+log+divergence+between+leader+and+follower+after+fast+leader+fail+over">KIP-279</a>:
OffsetsForLeaderEpochResponse v1 introduces a partition-level
<code>leader_epoch</code> field. </li>
+</ul>
+
<h5><a id="upgrade_200_streams" href="#upgrade_200_streams">Upgrading a 2.0.0
Kafka Streams Application</a></h5>
<ul>
<li> Upgrading your Streams application from 1.1.0 to 2.0.0 does not
require a broker upgrade.
A Kafka Streams 2.0.0 application can connect to 2.0, 1.1, 1.0,
0.11.0, 0.10.2 and 0.10.1 brokers (it is not possible to connect to 0.10.0
brokers though). </li>
- <li> See <a
href="/{{version}}/documentation/streams/upgrade-guide#streams_api_changes_200">Streams
API changes in 2.0.0</a> for more details. </li>
+ <li> Note that in 2.0 we have removed the public APIs that are deprecated
prior to 1.0; users leveraging on those deprecated APIs need to make code
changes accordingly.
+ See <a
href="/{{version}}/documentation/streams/upgrade-guide#streams_api_changes_200">Streams
API changes in 2.0.0</a> for more details. </li>
</ul>
-<h4><a id="upgrade_1_1_0" href="#upgrade_1_1_0">Upgrading from 0.8.x, 0.9.x,
0.10.0.x, 0.10.1.x, 0.10.2.x, 0.11.0.x or 1.0.x to 1.1.x</a></h4>
+<h4><a id="upgrade_1_1_0" href="#upgrade_1_1_0">Upgrading from 0.8.x, 0.9.x,
0.10.0.x, 0.10.1.x, 0.10.2.x, 0.11.0.x, or 1.0.x to 1.1.x</a></h4>
<p>Kafka 1.1.0 introduces wire protocol changes. By following the recommended
rolling upgrade plan below,
you guarantee no downtime during the upgrade. However, please review the
<a href="#upgrade_110_notable">notable changes in 1.1.0</a> before upgrading.
</p>
@@ -938,7 +889,7 @@ work with 0.10.0.x brokers. Therefore, 0.9.0.0 clients
should be upgraded to 0.9
<li> The new consumer API has been marked stable. </li>
</ul>
-<h4><a id="upgrade_9" href="#upgrade_9">Upgrading from 0.8.0, 0.8.1.X or
0.8.2.X to 0.9.0.0</a></h4>
+<h4><a id="upgrade_9" href="#upgrade_9">Upgrading from 0.8.0, 0.8.1.X, or
0.8.2.X to 0.9.0.0</a></h4>
0.9.0.0 has <a href="#upgrade_9_breaking">potential breaking changes</a>
(please review before upgrading) and an inter-broker protocol change from
previous versions. This means that upgraded brokers and clients may not be
compatible with older versions. It is important that you upgrade your Kafka
cluster before upgrading your clients. If you are using MirrorMaker downstream
clusters should be upgraded first as well.
--
To stop receiving notification emails like this one, please contact
[email protected].