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

laiyingchun pushed a commit to branch branch-1.17.x
in repository https://gitbox.apache.org/repos/asf/kudu.git


The following commit(s) were added to refs/heads/branch-1.17.x by this push:
     new 106b35bbe [docs] Add release notes for 1.17.0
106b35bbe is described below

commit 106b35bbee508664b81393677e6bbd139b875f46
Author: Yingchun Lai <[email protected]>
AuthorDate: Sat Feb 18 13:44:13 2023 +0800

    [docs] Add release notes for 1.17.0
    
    Change-Id: I4381e7824dcf7f500165aa3af9dca09a86ac1dd9
    Reviewed-on: http://gerrit.cloudera.org:8080/19512
    Tested-by: Kudu Jenkins
    Reviewed-by: Alexey Serbin <[email protected]>
---
 docs/release_notes.adoc | 294 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 285 insertions(+), 9 deletions(-)

diff --git a/docs/release_notes.adoc b/docs/release_notes.adoc
index 14655fa21..95995a00c 100644
--- a/docs/release_notes.adoc
+++ b/docs/release_notes.adoc
@@ -31,6 +31,26 @@
 [[rn_1.17.0_upgrade_notes]]
 == Upgrade Notes
 
+** TLSv1.2 is the minimum TLS protocol version that newer Kudu clients are 
able to use for secure
+Kudu RPC. The newer clients are not able to communicate with servers built and 
run with OpenSSL of
+versions prior to 1.0.1.  If such a Kudu cluster is running on a deprecated OS 
versions
+(e.g., RHEL/CentOS 6.4), the following options are available to work around 
the incompatibility:
+* use Kudu clients of 1.14 or earlier versions to communicate with such cluster
+* disable RPC encryption and authentication for Kudu RPC, setting 
`--rpc_authentication=disabled`
+and `--rpc_encryption=disabled` for all masters and tablet servers in the 
cluster to allow the new
+client to work with the old cluster
+
+** TLSv1.2 is the minimum TLS protocol version that newer Kudu servers are 
able to use for secure
+Kudu RPC. The newer servers are not able to communicate using secure Kudu RPC 
with Kudu C++ client
+applications linked with libkudu_client library built against OpenSSL of 
versions prior to 1.0.1 or
+with Java client applications run with outdated Java runtime that doesn't 
support TLSv1.2.  The
+following options are available to work around this incompatibility:
+* customize settings for the `--rpc_tls_min_protocol` and `--rpc_tls_ciphers` 
flags on all masters
+and tablet servers in the cluster, setting `--rpc_tls_min_protocol=TLSv1` and 
adding TLSv1-capable
+cipher suites (e.g. AES128-SHA and AES256-SHA) into the list
+* disable RPC encryption and authentication for Kudu RPC, setting 
`--rpc_authentication=disabled`
+and `--rpc_encryption=disabled` for all masters and tablet servers in the 
cluster to allow such Kudu
+clients to work with newer clusters
 
 [[rn_1.17.0_obsoletions]]
 == Obsoletions
@@ -39,19 +59,261 @@
 [[rn_1.17.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.17.0_new_features]]
 == New features
 
+* Kudu now supports encrypting data at rest. Kudu supports `AES-128-CTR`, 
`AES-192-CTR`, and
+`AES-256-CTR` ciphers to encrypt data, supports Apache Ranger KMS and Apache 
Hadoop KMS. See
+link:https://kudu.apache.org/docs/security.html#_data_at_rest_[Data at rest] 
for more details.
+
+* Kudu now supports range-specific hash schemas for tables. It's now possible 
to add ranges with
+their own unique hash schema independent of the table-wide hash schema. This 
can be done at table
+creation time and while altering the table. It’s controlled by the 
`--enable_per_range_hash_schemas`
+master flag which is enabled by default (see
+link:https://issues.apache.org/jira/browse/KUDU-2671[KUDU-2671]).
+
+* Kudu now supports soft-deleted tables. Kudu keeps a soft-deleted table aside 
for a period of time
+(a.k.a. reservation), not purging the data yet.  The table can be 
restored/recalled back before its
+reservation expires.  The reservation period can be customized via Kudu client 
API upon
+soft-deleting the table.  The default reservation period is controlled by the
+`--default_deleted_table_reserve_seconds` master's flag.
+NOTE: As of Kudu 1.17 release, the soft-delete functionality is not supported 
when HMS integration
+is enabled, but this should be addressed in a future release (see
+link:https://issues.apache.org/jira/browse/KUDU-3326[KUDU-3326]).
+
+* Introduced `Auto-Incrementing` column. An auto-incrementing column is 
populated on the server side
+with a monotonically increasing counter. The counter is local to every tablet, 
i.e. each tablet has
+a separate auto incrementing counter (see
+link:https://issues.apache.org/jira/browse/KUDU-1945[KUDU-1945]).
+
+* Kudu now supports experimental non-unique primary key. When a table with 
non-unique primary key is
+created, an `Auto-Incrementing` column named `auto_incrementing_id` is added 
automatically to the
+table as the key column. The non-unique key columns and the 
`Auto-Incrementing` column together form
+the effective primary key (see 
link:https://issues.apache.org/jira/browse/KUDU-1945[KUDU-1945]).
+
+* Introduced `Immutable` column. It's useful to represent a semantically 
constant entity (see
+link:https://issues.apache.org/jira/browse/KUDU-3353[KUDU-3353]).
+
+* An experimental feature is added to Kudu that allows it to automatically 
rebalance tablet leader
+replicas among tablet servers. The background task can be enabled by setting 
the
+`--auto_leader_rebalancing_enabled` flag on the Kudu masters. By default, the 
flag is set to 'false'
+(see link:https://issues.apache.org/jira/browse/KUDU-3390[KUDU-3390]).
+
+* Introduced an experimental feature: authentication of Kudu client 
applications to Kudu servers
+using JSON Web Tokens (JWT).  The JWT-based authentication can be used as an 
alternative to Kerberos
+authentication for Kudu applications running at edge nodes where configuring 
Kerberos might be
+cumbersome.  Similar to Kerberos credentials, a JWT is considered a primary 
client's credentials.
+The server-side capability of JWT-based authentication is controlled by the
+`--enable_jwt_token_auth` flag (set 'false' by default).  When the flat set to 
'true', a Kudu server
+is capable of authenticating Kudu clients using the JWT provided by the client 
during RPC connection
+negotiation.  From its side, a Kudu client authenticates a Kudu server by 
verifying its TLS
+certificate.  For the latter to succeed, the client should use Kudu client API 
to add the cluster's
+IPKI CA certificate into the list of trusted certificates.
+
+* The C++ client scan token builder can now create multiple tokens per tablet. 
So, it's now possible
+to dynamically scale the set of readers/scanners fetching data from a Kudu 
table in parallel. To use
+this functionality, use the newly introduced `SetSplitSizeBytes()` method of 
the Kudu client API to
+specify how many bytes of data each token should scan
+(see link:https://issues.apache.org/jira/browse/KUDU-3393[KUDU-3393]).
+
+* Statistics on various write operations is now available via Kudu client API 
at the session level
+(see link:https://issues.apache.org/jira/browse/KUDU-3351[KUDU-3351],
+link:https://issues.apache.org/jira/browse/KUDU-3365[KUDU-3365]).
+
+* Kudu now exposes all its metrics except for string gauges in Prometheus 
format via the embedded
+webserver's `/metrics_prometheus` endpoint (see
+link:https://issues.apache.org/jira/browse/KUDU-3375[KUDU-3375]).
+
+* It’s now possible to deploy Kudu clusters in an internal network (e.g. in 
K8S environment) and
+avoid internal traffic (i.e. tservers and masters) using advertised addresses 
and allow Kudu clients
+running in external networks. This can be achieved by customizing the setting 
for the newly
+introduced `--rpc_proxy_advertised_addresses` and `--rpc_proxied_addresses` 
server flags. This might
+be useful in various scenarios where Kudu cluster is running in an internal 
network behind a
+firewall, but Kudu clients are running at the other side of the firewall using 
JWT to authenticate
+to Kudu servers, and the RPC traffic between to the Kudu cluster is forwarded 
through a TCP/SOCKS
+proxy (see link:https://issues.apache.org/jira/browse/KUDU-3357[KUDU-3357]).
+
+* It’s now possible to clean up metadata for deleted tables/tablets from Kudu 
master's in-memory map
+and the `sys.catalog` table.  This is useful in reducing the memory 
consumption and bootstrap time
+for masters. This can be achieved by customizing the setting for the newly 
introduced
+`--enable_metadata_cleanup_for_deleted_tables_and_tablets` and
+`--metadata_for_deleted_table_and_tablet_reserved_secs` kudu-master’s flags.
+
+* It’s now possible to perform range rebalancing for a single table per run in 
the `kudu cluster
+rebalance` CLI tool by setting the newly introduced 
`--enable_range_rebalancing` tool flag.  This is
+useful to address various hot-spotting issues when too many tablet replicas 
from the same range (but
+different hash buckets) were placed at the same tablet server.  The 
hot-spotting issue in tablet
+replica placement should be address in a follow-up releases, see
+link:https://issues.apache.org/jira/browse/KUDU-3476[KUDU-3476] for details.
+
+* It’s now possible to compact log container metadata files at runtime.  This 
is useful in
+reclaiming the disk space once the container becomes full. This feature can be 
turned on/off by
+customizing the setting for the newly introduced 
`--log_container_metadata_runtime_compact`
+kudu-tserver flag (see 
link:https://issues.apache.org/jira/browse/KUDU-3318[KUDU-3318]).
+
+* New CLI tools `kudu master/tserver set_flag_for_all` are added to update 
flags for all masters and
+tablet servers in a Kudu cluster at once.
+
+* A new CLI tool `kudu local_replica copy_from_local` is added to copy tablet 
replicas' data at the
+filesystem level. It can be used when adding disks and for quick rebalancing 
of data between disks,
+or can be used when migrating data from one data directory to the other. It 
will make data more
+dense than data on old data directories too.
+
+* A new CLI tool `kudu diagnose parse_metrics` is added to parse metrics out 
of diagnostic logs (see
+link:https://issues.apache.org/jira/browse/KUDU-2353[KUDU-2353]).
+
+* A new CLI tool `kudu local_replica tmeta delete_rowsets` is added to delete 
rowsets from the
+tablet.
+
+* A sanity check has been added to detect wall clock jumps, it is controlled 
by the newly introduced
+`--wall_clock_jump_detection` and `--wall_clock_jump_threshold_sec` flags. 
That should help to
+address issues reported in 
link:https://issues.apache.org/jira/browse/KUDU-2906[KUDU-2906].
 
 [[rn_1.17.0_improvements]]
 == Optimizations and improvements
 
+* Reduce the memory consumption if there are frequent alter schema operations 
for tablet servers
+(see link:https://issues.apache.org/jira/browse/KUDU-3197[KUDU-3197]).
+
+* Reduce the memory consumption by implementing memory budgeting for 
performing RowSet merge
+compactions (i.e. CompactRowSetsOp maintenance operations). Several flags have 
been introduced,
+while the `--rowset_compaction_memory_estimate_enabled` flag indicates whether 
to check for
+available memory necessary to run CompactRowSetsOp maintenance operations (see
+link:https://issues.apache.org/jira/browse/KUDU-3406[KUDU-3406]).
+
+* Optimized evaluating in-list predicates based on RowSet PK bounds.  A tablet 
server can now
+effectively skip rows when the predicate is on a non-prefix part of the 
primary key and the leading
+columns' cardinality is 1 (see 
link:https://issues.apache.org/jira/browse/KUDU-1644[KUDU-1644]).
+
+* Speed up CLI tool `kudu cluster rebalance` to run intra-location rebalancing 
in parallel for
+location-aware Kudu cluster. Theoretically, running intra-location rebalancing 
in parallel might
+shorten the runtime by N times compared with running sequentially, where N is 
the number of
+locations in a Kudu cluster. This can be achieved by customizing the setting 
for the newly
+introduced `--intra_location_rebalancing_concurrency` flag.
+
+* Two new flags `--show_tablet_partition_info` and 
`--show_hash_partition_info` have been introduced
+for the `kudu table list` CLI tool to show the corresponding relationship 
between partitions and
+tablet ids, and it's possible to specify the output format by specifying
+`--list_table_output_format` flag.
+
+* A new flag `--create_table_replication_factor` has been introduced for the 
`kudu table copy` CLI
+tool to specify the replication factor for the destination table.
+
+* A new flag `--create_table_hash_bucket_nums` has been introduced for the 
`kudu table copy` CLI
+tool to specify the number of hash buckets in each hash dimension for the 
destination table.
+
+* A new flag `--tables` has been introduced for the `kudu master 
unsafe_rebuild` CLI tool to rebuild
+the metadata of specified tables on Kudu master, and it has no effect on the 
other tables.
+
+* A new flag `--fault_tolerant` has been introduced for the `kudu table 
copy/scan` and
+`kudu perf table_scan` CLI tool to make the scanner fault-tolerant and the 
results returned in
+primary key order per-tablet.
+
+* A new flag `--show_column_comment` has been introduced for the `kudu table 
describe` CLI tool to
+show column comments.
+
+* A new flag `--current_leader_uuid` has been introduced for the `kudu tablet 
leader_step_down` CLI
+tool to conveniently step down leader replica using a given UUID.
+
+* A new flag `--use_readable_format` has been introduced for the `kudu 
local_replica dump rowset`
+CLI tool to indicate whether to dump the primary key in human readable format. 
Besides, another flag
+`--dump_primary_key_bounds_only` has been introduced to this tool to indicate 
whether to dump rowset
+primary key bounds only.
+
+* A new flag `--tables` has been introduced for the `kudu local_replica 
delete` CLI tool to
+conveniently delete multiple tablets by table name.
+
+* It’s now possible to specify `owner` and `comment` fields when using the 
`kudu table create` CLI
+tool to create tables.
+
+* It’s now possible to use the `kudu local_replica copy_from_remote` CLI tool 
to copy tablets in a
+batch.
+
+* It’s now possible to enable or disable auto rebalancer by setting 
`--auto_rebalancing_enabled`
+flag to Kudu master at runtime.
+
+* It’s now possible for `kudu tserver/master get_flags` CLI tool to filter 
flags even if the server
+side doesn’t support flags filter function (the latter is for Kudu servers of 
releases prior to
+1.12).
+
+* Added a CSP (Content Security Policy) header to prevent security scanners 
flagging Kudu's web UI
+as vulnerable.
+
+* A separated section has been introduced to include all non-default flags 
specially on path `/varz`
+of Kudu's web UI.
+
+* A separated section has been introduced to show slow scans on path `/scans` 
of Kudu's web UI, it
+can be enabled by tweaking the `--show_slow_scans` flag for tablet servers. A 
scan is called 'slow'
+if it takes more time than defined by `--slow_scanner_threshold_ms`.
+
+* A new `Data retained` column has been introduced to the `Non-running 
operations` section to
+indicate the approximate amount of disk space that would be freed on path 
`/maintenance-manager` of
+Kudu's web UI.
+
+* The default value of tablet history retention time (controlled by 
`--tablet_history_max_age_sec`
+flag) on Kudu master has been reduced from 7 days to 5 minutes. It's not 
necessary to keep such a
+long history of the system tablet since masters always scan data at the latest 
available snapshot.
+
+* Kudu can now be built and run on Apple M chips and macOS 11, 12. As with 
prior releases, Kudu's
+support for macOS is experimental, and should only be used for development.
 
 [[rn_1.17.0_fixed_issues]]
 == Fixed Issues
 
+* Fixed an issue where historical MVCC data older than the ancient history 
mark (configured by
+`--tablet_history_max_age_sec`) that had only DELETE operations wouldn't be 
compacted correctly. As
+a result, the ancient history data could not be GCed if the tablet had been 
created by Kudu servers
+of releases prior to 1.10 (those versions did not support live row counting) 
(see
+link:https://issues.apache.org/jira/browse/KUDU-3367[KUDU-3367]).
+
+* Fixed an issue where the Kudu server could potentially crash on malicious 
negotiation attempts.
+
+* Fixed a bug when a Kudu tablet server started under an OS account that had 
no permission to access
+tablet metadata files would stuck in the tablet bootstrapping phase (see
+link:https://issues.apache.org/jira/browse/KUDU-3419[KUDU-3419]).
+
+* Fixed a bug in the C++ client where toggling `SetFaultTolerant(false)` would 
not work.
+
+* Fixed a bug in the C++ client where toggling `KuduScanner::SetSelection()` 
would not work.
+
+* Fixed a bug in the Java client where under certain conditions same rows 
would be returned multiple
+times even if the scanner was configured to be fault-tolerant.
+
+* Fixed a bug in the Java client where the last propagated timestamp and 
resource metrics would not
+be updated in subsequent scan responses.
+
+* Fixed a bug in the Java client where it would not invalidate stale locations 
of the leader master.
+
+* Fixed a bug in the Kudu HMS client that was causing failures when scanning 
Kudu tables from Hive
+(see link:https://issues.apache.org/jira/browse/KUDU-3401[KUDU-3401]).
+
+* Fixed a bug where the `kudu table copy` CLI tool would fail copying an 
unpartitioned table.
+
+* Fixed a bug where the `kudu master unsafe_rebuild` CLI tool would rebuild 
the system catalog with
+outdated schemas of tables that were unhealthy during the rebuild process.
+
+* Fixed a bug where `kudu table copy` failed to copy tables that had STRING, 
BINARY or VARCHAR type
+of columns in their range keys (see
+link:https://issues.apache.org/jira/browse/KUDU-3306[KUDU-3306]).
+
+* Fixed a bug of the `kudu table copy` CLI tool crashing if encountering an 
error while copying rows
+to the destination table. The tool now exits gracefully and provides 
additional information for
+troubleshooting in such a condition.
+
+* Fixed a bug where the `kudu local_replica list` CLI tool would crash if the 
`--list_detail` flag
+was enabled.
+
+* Fixed a bug when a sub-process running Ranger client would crash when 
receiving a oversized
+message from Kudu master.  With the fix, each peer communicating via the 
Subprocess protocol now
+discards an oversized message, logs about the issue, and clears the channel, 
and is able to receive
+further messages after encountering such a condition.
+
+* Fixed a bug when a Kudu application linked with kudu_client library would 
crash with SIGILL if
+running on a machine lacking SSE4.2 support (see
+link:https://issues.apache.org/jira/browse/KUDU-3248[KUDU-3248]).
 
 [[rn_1.17.0_wire_compatibility]]
 == Wire Protocol compatibility
@@ -81,15 +343,16 @@ on wire compatibility between Kudu 1.17 and versions 
earlier than 1.3:
 [[rn_1.17.0_client_compatibility]]
 === Client Library Compatibility
 
-* The Kudu 1.17 Java client library is API- and ABI-compatible with Kudu 1.16. 
Applications
-  written against Kudu 1.16 will compile and run against the Kudu 1.17 client 
library and
-  vice-versa.
+* The Kudu 1.17 Java client library is API- and ABI-compatible with Kudu 1.16. 
Applications written
+  against Kudu 1.16 will compile and run against the Kudu 1.17 client library. 
Applications written
+  against Kudu 1.17 will compile and run against the Kudu 1.16 client library 
unless they use the
+  API newly introduced in Kudu 1.17.
 
-* The Kudu 1.17 {cpp} client is API- and ABI-forward-compatible with Kudu 1.16.
-  Applications written and compiled against the Kudu 1.16 client library will 
run without
-  modification against the Kudu 1.17 client library. Applications written and 
compiled
-  against the Kudu 1.17 client library will run without modification against 
the Kudu 1.16
-  client library.
+* The Kudu 1.17 {cpp} client is API- and ABI-forward-compatible with Kudu 
1.16. Applications written
+  and compiled against the Kudu 1.16 client library will run without 
modification against the Kudu
+  1.17 client library. Applications written and compiled against the Kudu 1.17 
client library will
+  run without modification against the Kudu 1.16 client library unless they 
use the API newly
+  introduced in Kudu 1.17.
 
 * The Kudu 1.17 Python client is API-compatible with Kudu 1.16. Applications
   written against Kudu 1.16 will continue to run against the Kudu 1.17 client
@@ -104,6 +367,19 @@ documentation.
 [[rn_1.17.0_contributors]]
 == Contributors
 
+Kudu 1.17.0 includes contributions from 24 people, including 10 first-time 
contributors:
+
+* Ashwani Raina
+* Hari Reddy
+* Kurt Deschler
+* Marton Greber
+* bsglz
+* mammadli.khazar
+* wzhou-code
+* xinghuayu007
+* xlwh
+* Ádám Bakai
+
 [[resources_and_next_steps]]
 == Resources
 

Reply via email to