Skip to content

Commit

Permalink
[docs] Add release notes for 1.15.0 release
Browse files Browse the repository at this point in the history
The rendered version can be viewed here:
https://github.com/bbhavsar/kudu/blob/bankim/RN/docs/release_notes.adoc

Change-Id: Ie10defdf4959006cab484af601a82f32eed2aa80
Reviewed-on: http://gerrit.cloudera.org:8080/17539
Tested-by: Kudu Jenkins
Reviewed-by: Alexey Serbin <[email protected]>
Reviewed-by: Andrew Wong <[email protected]>
  • Loading branch information
bbhavsar committed Jun 9, 2021
1 parent 8c59dcd commit d301382
Showing 1 changed file with 109 additions and 3 deletions.
112 changes: 109 additions & 3 deletions docs/release_notes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -35,23 +35,114 @@
[[rn_1.15.0_obsoletions]]
== Obsoletions

* The `kudu-mapreduce` integration has been removed in the 1.15.0 release.
Similar functionality and capabilities now exist via the Apache Spark, Apache Hive, Apache Impala,
and Apache NiFi integrations. See link:https://issues.apache.org/jira/browse/KUDU-3142[KUDU-3142]
for details.

[[rn_1.15.0_deprecations]]
== Deprecations

Support for Python 2.x and Python 3.4 and earlier is deprecated and may be removed in the next minor release.
* Support for Python 2.x and Python 3.4 and earlier is deprecated and may be removed in the next minor
release.

[[rn_1.15.0_new_features]]
== New features

* Kudu now experimentally supports multi-row transactions. Currently only `INSERT` and
`INSERT_IGNORE` operations are supported.
See link:https://github.com/apache/kudu/blob/master/docs/design-docs/transactions.adoc[here] for a
design overview of this feature.

* Kudu now supports Raft configuration change for Kudu masters and CLI tools for orchestrating
addition and removal of masters in a Kudu cluster. These tools substantially simplify the process
of migrating to multiple masters, recovering a dead master and removing masters from a Kudu cluster.
For detailed steps, see the latest administration documentation. This feature is evolving and
the steps to add, remove and recover masters may change in the future.
See link:https://issues.apache.org/jira/browse/KUDU-2181[KUDU-2181] for details.

* Kudu now supports table comments directly on Kudu tables which are automatically synchronized
when the Hive Metastore integration is enabled. These comments can be added at table creation time
and changed via table alteration.

* Kudu now experimentally supports per-table size limits based on leader disk space usage or number
of rows. When generating new authorization tokens, Masters will now consider the size limits and
strip tokens of `INSERT` and `UPDATE` privileges if either limit is reached. To enable this feature,
set the `--enable_table_write_limit` master flag; adjust the `--table_disk_size_limit` and
`--table_row_count_limit` flags as desired or use the `kudu table set_limit` tool to set limits per
table.

[[rn_1.15.0_improvements]]
== Optimizations and improvements

* It is now possible to change the Kerberos Service Principal Name using the `--principal` flag. The
default SPN is still `kudu/_HOST`. Clients connecting to a cluster using a non-default SPN must set
the `sasl_protocol_name` or `saslProtocolName` to match the SPN base
(i.e. “kudu” if the SPN is “kudu/_HOST”) in the client builder or the Kudu CLI.
See link:https://issues.apache.org/jira/browse/KUDU-1884[KUDU-1884] for details.

* Kudu RPC now supports TLSv1.3. Kudu servers and clients automatically negotiate TLSv1.3 for Kudu
RPC if OpenSSL (or Java runtime correspondingly) on each side supports TLSv1.3.
If necessary, use the newly introduced flag `--rpc_tls_ciphersuites` to customize TLSv1.3-specific
cipher suites at the server side.
See link:https://issues.apache.org/jira/browse/KUDU-2871[KUDU-2871] for details.

* TLS ciphers renegotiation for TLSv1.2 and prior protocol versions is now explicitly disabled.
See link:https://issues.apache.org/jira/browse/KUDU-1926[KUDU-1926] for details.

* The location assignment for Kudu clients is now disabled by default since it doesn’t bring a lot
of benefits, but rather puts an extra load to Kudu masters. This change reduces the load on Kudu
masters which is essential if too many clients run in a cluster. To enable the location assignment
for clients, override the default by setting `--master_client_location_assignment_enabled=true` for
Kudu masters.

* The behavior of the C++ client replica selection for closest replica, the default, was updated to
match the behavior of the Java client. Instead of picking a random replica each time, a static value
is used for each process ensuring that the selection remains deterministic and can benefit from
better caching. See link:https://issues.apache.org/jira/browse/KUDU-3248[KUDU-3248] for details.

* The Web UI /rpcz endpoint now displays information on whether an RPC connection is protected by
TLS, and if so, provides information on the negotiated TLS cipher suite.

* Tooling requests and C++ client requests bound for leader masters will now be retried in the event
the masters cannot be reached.

* Cluster tooling will now validate that the master argument contains no duplicate values.
See link:https://issues.apache.org/jira/browse/KUDU-3226[KUDU-3226] for details.

* The error message output by Kudu Java client in an attempt to write into a non-existent table
partition now contains the table’s name.
See link:https://issues.apache.org/jira/browse/KUDU-3267[KUDU-3267] for details.

[[rn_1.15.0_fixed_issues]]
== Fixed Issues

* Fixed a bug in the Kudu tablet servers that could result in a crash when performing an incremental
backup of rows that had many batches of updates.
See link:https://issues.apache.org/jira/browse/KUDU-3291[KUDU-3291] for more details.

* The Kudu Java client will now retry scans bound for tablets hosted on quiescing tablet servers at
replicas on other tablet servers. See
link:https://issues.apache.org/jira/browse/KUDU-3213[KUDU-3213] for more details.

* Fixed a race between the scheduling of a maintenance op and the destruction of a tablet. This
could previously lead to a crash.
See link:https://issues.apache.org/jira/browse/KUDU-3268[KUDU-3268] for more details.

* Fixed crash in Kudu C++ client introduced with KUDU-1802.
See link:https://issues.apache.org/jira/browse/KUDU-3254[KUDU-3254] for details.

* Fixed bug in Kudu Java client which manifested in `AUTO_FLUSH_BACKGROUND` sessions hung in a call
to `KuduSession.flush()` method. Another sign of the bug were stuck data ingest workloads based on
Java client (e.g., kudu-spark applications) with
"java.lang.AssertionError: This Deferred was already called!" message in the logs.
See link:https://issues.apache.org/jira/browse/KUDU-3277[KUDU-3277] for details.

* Fixed crash in Kudu server due to lack of `getrandom(2)` system call in Linux kernel version
earlier than 3.17 by instead using `/dev/random` for uuid generation in the Boost library.
Crash includes the following message in the logs
"terminate called after throwing an instance of 'boost::wrapexcept<boost::uuids::entropy_error>'".
See the link:https://gerrit.cloudera.org/c/17354/[fix] for a sample stack trace.

[[rn_1.15.0_wire_compatibility]]
== Wire Protocol compatibility
Expand All @@ -77,12 +168,20 @@ on wire compatibility between Kudu 1.15 and versions earlier than 1.3:
[[rn_1.15.0_incompatible_changes]]
== Incompatible Changes in Kudu 1.15.0

* Updated hash computation for empty strings in the FastHash implementation to conform with the
handling in Apache Impala. For Bloom filter predicate pushdown feature that uses FastHash,
this makes the Kudu client older than version 1.15.0 incompatible with Kudu server version 1.15.0
and Kudu client version at or newer than 1.15.0 incompatible with Kudu server version earlier than
1.15.0. Both client library and Kudu server need to be updated to version 1.15.0 or above if using
the Bloom filter predicate feature. One manifestation of this incompatibility is following message
in the logs, "Not implemented: call requires unsupported application feature flags: 4".
See link:https://issues.apache.org/jira/browse/KUDU-3286[KUDU-3286] for details.

[[rn_1.15.0_client_compatibility]]
=== Client Library Compatibility

* The Kudu 1.15 Java client library is API- and ABI-compatible with Kudu 1.12. Applications
written against Kudu 1.12 will compile and run against the Kudu 1.15 client library and
* The Kudu 1.15 Java client library is API- and ABI-compatible with Kudu 1.14. Applications
written against Kudu 1.14 will compile and run against the Kudu 1.15 client library and
vice-versa.

* The Kudu 1.15 {cpp} client is API- and ABI-forward-compatible with Kudu 1.14.
Expand All @@ -104,6 +203,13 @@ documentation.
[[rn_1.15.0_contributors]]
== Contributors

Kudu 1.15.0 includes contributions from 12 people, including 2 first-time contributors:

* Abhishek Chennaka
* shenxingwuying

Thank you for your contributions!

[[resources_and_next_steps]]
== Resources

Expand Down

0 comments on commit d301382

Please sign in to comment.