<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="A new open source Apache Hadoop ecosystem project, Apache Kudu completes Hadoop's storage layer to enable fast analytics on fast data" />
    <meta name="author" content="Cloudera" />
    <title>Apache Kudu - Apache Kudu 1.17.0 Release Notes</title>
    <!-- Bootstrap core CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"
          integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7"
          crossorigin="anonymous">

    <!-- Custom styles for this template -->
    <link href="/css/kudu.css" rel="stylesheet"/>
    <link href="/css/asciidoc.css" rel="stylesheet"/>
    <link rel="shortcut icon" href="/img/logo-favicon.ico" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" />

    

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
        <![endif]-->
  </head>
  <body>
    <div class="kudu-site container-fluid">
      <!-- Static navbar -->
        <nav class="navbar navbar-default">
          <div class="container-fluid">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="logo" href="/"><img
                src="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png"
                srcset="//d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_80px.png 1x, //d3dr9sfxru4sde.cloudfront.net/i/k/apachekudu_logo_0716_160px.png 2x"
                alt="Apache Kudu"/></a>
              
            </div>
            <div id="navbar" class="collapse navbar-collapse">
              <ul class="nav navbar-nav navbar-right">
                <li >
                  <a href="/">Home</a>
                </li>
                <li >
                  <a href="/overview.html">Overview</a>
                </li>
                <li class="active">
                  <a href="/docs/">Documentation</a>
                </li>
                <li >
                  <a href="/releases/">Releases</a>
                </li>
                <li >
                  <a href="/blog/">Blog</a>
                </li>
                <!-- NOTE: this dropdown menu does not appear on Mobile, so don't add anything here
                     that doesn't also appear elsewhere on the site. -->
                <li class="dropdown">
                  <a href="/community.html" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                  <ul class="dropdown-menu">
                    <li class="dropdown-header">GET IN TOUCH</li>
                    <li><a class="icon email" href="/community.html">Mailing Lists</a></li>
                    <li><a class="icon slack" href="https://join.slack.com/t/getkudu/shared_invite/zt-244b4zvki-hB1q9IbAk6CqHNMZHvUALA">Slack Channel</a></li>
                    <li role="separator" class="divider"></li>
                    <li><a href="/community.html#meetups-user-groups-and-conference-presentations">Events and Meetups</a></li>
                    <li><a href="/committers.html">Project Committers</a></li>
                    <li><a href="/ecosystem.html">Ecosystem</a></li>
                    <!--<li><a href="/roadmap.html">Roadmap</a></li>-->
                    <li><a href="/community.html#contributions">How to Contribute</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">DEVELOPER RESOURCES</li>
                    <li><a class="icon github" href="https://github.com/apache/incubator-kudu">GitHub</a></li>
                    <li><a class="icon gerrit" href="http://gerrit.cloudera.org:8080/#/q/status:open+project:kudu">Gerrit Code Review</a></li>
                    <li><a class="icon jira" href="https://issues.apache.org/jira/browse/KUDU">JIRA Issue Tracker</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">SOCIAL MEDIA</li>
                    <li><a class="icon twitter" href="https://twitter.com/ApacheKudu">Twitter</a></li>
                    <li><a href="https://www.reddit.com/r/kudu/">Reddit</a></li>
                    <li role="separator" class="divider"></li>
                    <li class="dropdown-header">APACHE SOFTWARE FOUNDATION</li>
                    <li><a href="https://www.apache.org/security/" target="_blank">Security</a></li>
                    <li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Sponsorship</a></li>
                    <li><a href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li>
                    <li><a href="https://www.apache.org/licenses/" target="_blank">License</a></li>
                  </ul>
                </li>
                <li >
                  <a href="/faq.html">FAQ</a>
                </li>
              </ul><!-- /.nav -->
            </div><!-- /#navbar -->
          </div><!-- /.container-fluid -->
        </nav>

<!--

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->


<div class="container">
  <div class="row">
    <div class="col-md-9">

<h1>Apache Kudu 1.17.0 Release Notes</h1>
      <div class="sect1">
<h2 id="rn_1.17.0_upgrade_notes"><a class="link" href="#rn_1.17.0_upgrade_notes">Upgrade Notes</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>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:</p>
<div class="ulist">
<ul>
<li>
<p>use Kudu clients of 1.14 or earlier versions to communicate with such cluster</p>
</li>
<li>
<p>disable RPC encryption and authentication for Kudu RPC, setting <code>--rpc_authentication=disabled</code>
and <code>--rpc_encryption=disabled</code> for all masters and tablet servers in the cluster to allow the new
client to work with the old cluster</p>
</li>
</ul>
</div>
</li>
<li>
<p>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&#8217;t support TLSv1.2.  The
following options are available to work around this incompatibility:</p>
<div class="ulist">
<ul>
<li>
<p>customize settings for the <code>--rpc_tls_min_protocol</code> and <code>--rpc_tls_ciphers</code> flags on all masters
and tablet servers in the cluster, setting <code>--rpc_tls_min_protocol=TLSv1</code> and adding TLSv1-capable
cipher suites (e.g. AES128-SHA and AES256-SHA) into the list</p>
</li>
<li>
<p>disable RPC encryption and authentication for Kudu RPC, setting <code>--rpc_authentication=disabled</code>
and <code>--rpc_encryption=disabled</code> for all masters and tablet servers in the cluster to allow such Kudu
clients to work with newer clusters</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_obsoletions"><a class="link" href="#rn_1.17.0_obsoletions">Obsoletions</a></h2>
<div class="sectionbody">

</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_deprecations"><a class="link" href="#rn_1.17.0_deprecations">Deprecations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Support for Python 2.x and Python 3.4 and earlier is deprecated and may be removed in the next minor
release.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_new_features"><a class="link" href="#rn_1.17.0_new_features">New features</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Kudu now supports encrypting data at rest. Kudu supports <code>AES-128-CTR</code>, <code>AES-192-CTR</code>, and
<code>AES-256-CTR</code> ciphers to encrypt data, supports Apache Ranger KMS and Apache Hadoop KMS. See
<a href="https://kudu.apache.org/docs/security.html#<em>data_at_rest</em>">Data at rest</a> for more details.</p>
</li>
<li>
<p>Kudu now supports range-specific hash schemas for tables. It&#8217;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 <code>--enable_per_range_hash_schemas</code>
master flag which is enabled by default (see
<a href="https://issues.apache.org/jira/browse/KUDU-2671">KUDU-2671</a>).</p>
</li>
<li>
<p>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
<code>--default_deleted_table_reserve_seconds</code> master&#8217;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
<a href="https://issues.apache.org/jira/browse/KUDU-3326">KUDU-3326</a>).</p>
</li>
<li>
<p>Introduced <code>Auto-Incrementing</code> 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
<a href="https://issues.apache.org/jira/browse/KUDU-1945">KUDU-1945</a>).</p>
</li>
<li>
<p>Kudu now supports experimental non-unique primary key. When a table with non-unique primary key is
created, an <code>Auto-Incrementing</code> column named <code>auto_incrementing_id</code> is added automatically to the
table as the key column. The non-unique key columns and the <code>Auto-Incrementing</code> column together form
the effective primary key (see <a href="https://issues.apache.org/jira/browse/KUDU-1945">KUDU-1945</a>).</p>
</li>
<li>
<p>Introduced <code>Immutable</code> column. It&#8217;s useful to represent a semantically constant entity (see
<a href="https://issues.apache.org/jira/browse/KUDU-3353">KUDU-3353</a>).</p>
</li>
<li>
<p>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
<code>--auto_leader_rebalancing_enabled</code> flag on the Kudu masters. By default, the flag is set to 'false'
(see <a href="https://issues.apache.org/jira/browse/KUDU-3390">KUDU-3390</a>).</p>
</li>
<li>
<p>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&#8217;s credentials.
The server-side capability of JWT-based authentication is controlled by the
<code>--enable_jwt_token_auth</code> 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&#8217;s
IPKI CA certificate into the list of trusted certificates.</p>
</li>
<li>
<p>The C++ client scan token builder can now create multiple tokens per tablet. So, it&#8217;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 <code>SetSplitSizeBytes()</code> method of the Kudu client API to
specify how many bytes of data each token should scan
(see <a href="https://issues.apache.org/jira/browse/KUDU-3393">KUDU-3393</a>).</p>
</li>
<li>
<p>Kudu&#8217;s default replica placement algorithm is now range and table aware to prevent hotspotting
unlike the old power of two choices algorithm. New replicas from the same range are spread evenly
across available tablet servers, the table the range belongs to is used as a tiebreaker (see
<a href="https://issues.apache.org/jira/browse/KUDU-3476">KUDU-3476</a>).</p>
</li>
<li>
<p>Statistics on various write operations is now available via Kudu client API at the session level
(see <a href="https://issues.apache.org/jira/browse/KUDU-3351">KUDU-3351</a>,
<a href="https://issues.apache.org/jira/browse/KUDU-3365">KUDU-3365</a>).</p>
</li>
<li>
<p>Kudu now exposes all its metrics except for string gauges in Prometheus format via the embedded
webserver&#8217;s <code>/metrics_prometheus</code> endpoint (see
<a href="https://issues.apache.org/jira/browse/KUDU-3375">KUDU-3375</a>).</p>
</li>
<li>
<p>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 <code>--rpc_proxy_advertised_addresses</code> and <code>--rpc_proxied_addresses</code> 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 <a href="https://issues.apache.org/jira/browse/KUDU-3357">KUDU-3357</a>).</p>
</li>
<li>
<p>It’s now possible to clean up metadata for deleted tables/tablets from Kudu master&#8217;s in-memory map
and the <code>sys.catalog</code> 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
<code>--enable_metadata_cleanup_for_deleted_tables_and_tablets</code> and
<code>--metadata_for_deleted_table_and_tablet_reserved_secs</code> kudu-master’s flags.</p>
</li>
<li>
<p>It’s now possible to perform range rebalancing for a single table per run in the <code>kudu cluster
rebalance</code> CLI tool by setting the newly introduced <code>--enable_range_rebalancing</code> 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
<a href="https://issues.apache.org/jira/browse/KUDU-3476">KUDU-3476</a> for details.</p>
</li>
<li>
<p>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 <code>--log_container_metadata_runtime_compact</code>
kudu-tserver flag (see <a href="https://issues.apache.org/jira/browse/KUDU-3318">KUDU-3318</a>).</p>
</li>
<li>
<p>New CLI tools <code>kudu master/tserver set_flag_for_all</code> are added to update flags for all masters and
tablet servers in a Kudu cluster at once.</p>
</li>
<li>
<p>A new CLI tool <code>kudu local_replica copy_from_local</code> 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.</p>
</li>
<li>
<p>A new CLI tool <code>kudu diagnose parse_metrics</code> is added to parse metrics out of diagnostic logs (see
<a href="https://issues.apache.org/jira/browse/KUDU-2353">KUDU-2353</a>).</p>
</li>
<li>
<p>A new CLI tool <code>kudu local_replica tmeta delete_rowsets</code> is added to delete rowsets from the
tablet.</p>
</li>
<li>
<p>A sanity check has been added to detect wall clock jumps, it is controlled by the newly introduced
<code>--wall_clock_jump_detection</code> and <code>--wall_clock_jump_threshold_sec</code> flags. That should help to
address issues reported in <a href="https://issues.apache.org/jira/browse/KUDU-2906">KUDU-2906</a>.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_improvements"><a class="link" href="#rn_1.17.0_improvements">Optimizations and improvements</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Reduce the memory consumption if there are frequent alter schema operations for tablet servers
(see <a href="https://issues.apache.org/jira/browse/KUDU-3197">KUDU-3197</a>).</p>
</li>
<li>
<p>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 <code>--rowset_compaction_memory_estimate_enabled</code> flag indicates whether to check for
available memory necessary to run CompactRowSetsOp maintenance operations (see
<a href="https://issues.apache.org/jira/browse/KUDU-3406">KUDU-3406</a>).</p>
</li>
<li>
<p>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 <a href="https://issues.apache.org/jira/browse/KUDU-1644">KUDU-1644</a>).</p>
</li>
<li>
<p>Speed up CLI tool <code>kudu cluster rebalance</code> 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 <code>--intra_location_rebalancing_concurrency</code> flag.</p>
</li>
<li>
<p>Two new flags <code>--show_tablet_partition_info</code> and <code>--show_hash_partition_info</code> have been introduced
for the <code>kudu table list</code> CLI tool to show the corresponding relationship between partitions and
tablet ids, and it&#8217;s possible to specify the output format by specifying
<code>--list_table_output_format</code> flag.</p>
</li>
<li>
<p>A new flag <code>--create_table_replication_factor</code> has been introduced for the <code>kudu table copy</code> CLI
tool to specify the replication factor for the destination table.</p>
</li>
<li>
<p>A new flag <code>--create_table_hash_bucket_nums</code> has been introduced for the <code>kudu table copy</code> CLI
tool to specify the number of hash buckets in each hash dimension for the destination table.</p>
</li>
<li>
<p>A new flag <code>--tables</code> has been introduced for the <code>kudu master unsafe_rebuild</code> CLI tool to rebuild
the metadata of specified tables on Kudu master, and it has no effect on the other tables.</p>
</li>
<li>
<p>A new flag <code>--fault_tolerant</code> has been introduced for the <code>kudu table copy/scan</code> and
<code>kudu perf table_scan</code> CLI tool to make the scanner fault-tolerant and the results returned in
primary key order per-tablet.</p>
</li>
<li>
<p>A new flag <code>--show_column_comment</code> has been introduced for the <code>kudu table describe</code> CLI tool to
show column comments.</p>
</li>
<li>
<p>A new flag <code>--current_leader_uuid</code> has been introduced for the <code>kudu tablet leader_step_down</code> CLI
tool to conveniently step down leader replica using a given UUID.</p>
</li>
<li>
<p>A new flag <code>--use_readable_format</code> has been introduced for the <code>kudu local_replica dump rowset</code>
CLI tool to indicate whether to dump the primary key in human readable format. Besides, another flag
<code>--dump_primary_key_bounds_only</code> has been introduced to this tool to indicate whether to dump rowset
primary key bounds only.</p>
</li>
<li>
<p>A new flag <code>--tables</code> has been introduced for the <code>kudu local_replica delete</code> CLI tool to
conveniently delete multiple tablets by table name.</p>
</li>
<li>
<p>It’s now possible to specify <code>owner</code> and <code>comment</code> fields when using the <code>kudu table create</code> CLI
tool to create tables.</p>
</li>
<li>
<p>It’s now possible to use the <code>kudu local_replica copy_from_remote</code> CLI tool to copy tablets in a
batch.</p>
</li>
<li>
<p>It’s now possible to enable or disable auto rebalancer by setting <code>--auto_rebalancing_enabled</code>
flag to Kudu master at runtime.</p>
</li>
<li>
<p>It’s now possible for <code>kudu tserver/master get_flags</code> 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).</p>
</li>
<li>
<p>Added a CSP (Content Security Policy) header to prevent security scanners flagging Kudu&#8217;s web UI
as vulnerable.</p>
</li>
<li>
<p>A separated section has been introduced to include all non-default flags specially on path <code>/varz</code>
of Kudu&#8217;s web UI.</p>
</li>
<li>
<p>A separated section has been introduced to show slow scans on path <code>/scans</code> of Kudu&#8217;s web UI, it
can be enabled by tweaking the <code>--show_slow_scans</code> flag for tablet servers. A scan is called 'slow'
if it takes more time than defined by <code>--slow_scanner_threshold_ms</code>.</p>
</li>
<li>
<p>A new <code>Data retained</code> column has been introduced to the <code>Non-running operations</code> section to
indicate the approximate amount of disk space that would be freed on path <code>/maintenance-manager</code> of
Kudu&#8217;s web UI.</p>
</li>
<li>
<p>The default value of tablet history retention time (controlled by <code>--tablet_history_max_age_sec</code>
flag) on Kudu master has been reduced from 7 days to 5 minutes. It&#8217;s not necessary to keep such a
long history of the system tablet since masters always scan data at the latest available snapshot.</p>
</li>
<li>
<p>Kudu can now be built and run on Apple M chips and macOS 11, 12. As with prior releases, Kudu&#8217;s
support for macOS is experimental, and should only be used for development.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_fixed_issues"><a class="link" href="#rn_1.17.0_fixed_issues">Fixed Issues</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Fixed an issue where historical MVCC data older than the ancient history mark (configured by
<code>--tablet_history_max_age_sec</code>) that had only DELETE operations wouldn&#8217;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
<a href="https://issues.apache.org/jira/browse/KUDU-3367">KUDU-3367</a>).</p>
</li>
<li>
<p>Fixed an issue where the Kudu server could potentially crash on malicious negotiation attempts.</p>
</li>
<li>
<p>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
<a href="https://issues.apache.org/jira/browse/KUDU-3419">KUDU-3419</a>).</p>
</li>
<li>
<p>Fixed a bug in the C++ client where toggling <code>SetFaultTolerant(false)</code> would not work.</p>
</li>
<li>
<p>Fixed a bug in the C++ client where toggling <code>KuduScanner::SetSelection()</code> would not work.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>Fixed a bug in the Java client where the last propagated timestamp and resource metrics would not
be updated in subsequent scan responses.</p>
</li>
<li>
<p>Fixed a bug in the Java client where it would not invalidate stale locations of the leader master.</p>
</li>
<li>
<p>Fixed a bug in the Kudu HMS client that was causing failures when scanning Kudu tables from Hive
(see <a href="https://issues.apache.org/jira/browse/KUDU-3401">KUDU-3401</a>).</p>
</li>
<li>
<p>Fixed a bug where the <code>kudu table copy</code> CLI tool would fail copying an unpartitioned table.</p>
</li>
<li>
<p>Fixed a bug where the <code>kudu master unsafe_rebuild</code> CLI tool would rebuild the system catalog with
outdated schemas of tables that were unhealthy during the rebuild process.</p>
</li>
<li>
<p>Fixed a bug where <code>kudu table copy</code> failed to copy tables that had STRING, BINARY or VARCHAR type
of columns in their range keys (see
<a href="https://issues.apache.org/jira/browse/KUDU-3306">KUDU-3306</a>).</p>
</li>
<li>
<p>Fixed a bug of the <code>kudu table copy</code> 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.</p>
</li>
<li>
<p>Fixed a bug where the <code>kudu local_replica list</code> CLI tool would crash if the <code>--list_detail</code> flag
was enabled.</p>
</li>
<li>
<p>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.</p>
</li>
<li>
<p>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
<a href="https://issues.apache.org/jira/browse/KUDU-3248">KUDU-3248</a>).</p>
</li>
<li>
<p>Fixed a bug where the subprocess crashes in case of receiving large messages from the Kudu master
when the pipe gets full to transport the entire message in one go or when there is a delay in
sending from the master (see
<a href="https://issues.apache.org/jira/browse/KUDU-3489">KUDU-3489</a>).</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_wire_compatibility"><a class="link" href="#rn_1.17.0_wire_compatibility">Wire Protocol compatibility</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.17.0 is wire-compatible with previous versions of Kudu:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Kudu 1.17 clients may connect to servers running Kudu 1.0 or later. If the client uses
features that are not available on the target server, an error will be returned.</p>
</li>
<li>
<p>Rolling upgrade between Kudu 1.16 and Kudu 1.17 servers is believed to be possible
though has not been sufficiently tested. Users are encouraged to shut down all nodes
in the cluster, upgrade the software, and then restart the daemons on the new version.</p>
</li>
<li>
<p>Kudu 1.0 clients may connect to servers running Kudu 1.17 with the exception of the
below-mentioned restrictions regarding secure clusters.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The authentication features introduced in Kudu 1.3 place the following limitations
on wire compatibility between Kudu 1.17 and versions earlier than 1.3:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If a Kudu 1.17 cluster is configured with authentication or encryption set to "required",
clients older than Kudu 1.3 will be unable to connect.</p>
</li>
<li>
<p>If a Kudu 1.17 cluster is configured with authentication and encryption set to "optional"
or "disabled", older clients will still be able to connect.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_incompatible_changes"><a class="link" href="#rn_1.17.0_incompatible_changes">Incompatible Changes in Kudu 1.17.0</a></h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="rn_1.17.0_client_compatibility"><a class="link" href="#rn_1.17.0_client_compatibility">Client Library Compatibility</a></h3>
<div class="ulist">
<ul>
<li>
<p>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.</p>
</li>
<li>
<p>The Kudu 1.17 C&#43;&#43; 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.</p>
</li>
<li>
<p>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
and vice-versa.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_known_issues"><a class="link" href="#rn_1.17.0_known_issues">Known Issues and Limitations</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Please refer to the <a href="known_issues.html">Known Issues and Limitations</a> section of the
documentation.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="rn_1.17.0_contributors"><a class="link" href="#rn_1.17.0_contributors">Contributors</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>Kudu 1.17.0 includes contributions from 26 people, including 12 first-time contributors:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Ashwani Raina</p>
</li>
<li>
<p>Hari Reddy</p>
</li>
<li>
<p>Kurt Deschler</p>
</li>
<li>
<p>Marton Greber</p>
</li>
<li>
<p>Song Jiacheng</p>
</li>
<li>
<p>Zoltan Martonka</p>
</li>
<li>
<p>bsglz</p>
</li>
<li>
<p>mammadli.khazar</p>
</li>
<li>
<p>wzhou-code</p>
</li>
<li>
<p>xinghuayu007</p>
</li>
<li>
<p>xlwh</p>
</li>
<li>
<p>Ádám Bakai</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="resources_and_next_steps"><a class="link" href="#resources_and_next_steps">Resources</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="http://kudu.apache.org">Kudu Website</a></p>
</li>
<li>
<p><a href="http://github.com/apache/kudu">Kudu GitHub Repository</a></p>
</li>
<li>
<p><a href="index.html">Kudu Documentation</a></p>
</li>
<li>
<p><a href="prior_release_notes.html">Release notes for older releases</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_installation_options"><a class="link" href="#_installation_options">Installation Options</a></h2>
<div class="sectionbody">
<div class="paragraph">
<p>For full installation details, see <a href="installation.html">Kudu Installation</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_next_steps"><a class="link" href="#_next_steps">Next Steps</a></h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p><a href="quickstart.html">Kudu Quickstart</a></p>
</li>
<li>
<p><a href="installation.html">Installing Kudu</a></p>
</li>
<li>
<p><a href="configuration.html">Configuring Kudu</a></p>
</li>
</ul>
</div>
</div>
</div>
    </div>
    <div class="col-md-3">

  <div id="toc" data-spy="affix" data-offset-top="70">
  <ul>

      <li>

          <a href="index.html">Introducing Kudu</a> 
      </li> 
      <li>
<span class="active-toc">Kudu Release Notes</span>
            <ul class="sectlevel1">
<li><a href="#rn_1.17.0_upgrade_notes">Upgrade Notes</a></li>
<li><a href="#rn_1.17.0_obsoletions">Obsoletions</a></li>
<li><a href="#rn_1.17.0_deprecations">Deprecations</a></li>
<li><a href="#rn_1.17.0_new_features">New features</a></li>
<li><a href="#rn_1.17.0_improvements">Optimizations and improvements</a></li>
<li><a href="#rn_1.17.0_fixed_issues">Fixed Issues</a></li>
<li><a href="#rn_1.17.0_wire_compatibility">Wire Protocol compatibility</a></li>
<li><a href="#rn_1.17.0_incompatible_changes">Incompatible Changes in Kudu 1.17.0</a>
<ul class="sectlevel2">
<li><a href="#rn_1.17.0_client_compatibility">Client Library Compatibility</a></li>
</ul>
</li>
<li><a href="#rn_1.17.0_known_issues">Known Issues and Limitations</a></li>
<li><a href="#rn_1.17.0_contributors">Contributors</a></li>
<li><a href="#resources_and_next_steps">Resources</a></li>
<li><a href="#_installation_options">Installation Options</a></li>
<li><a href="#_next_steps">Next Steps</a></li>
</ul> 
      </li> 
      <li>

          <a href="quickstart.html">Quickstart Guide</a> 
      </li> 
      <li>

          <a href="installation.html">Installation Guide</a> 
      </li> 
      <li>

          <a href="configuration.html">Configuring Kudu</a> 
      </li> 
      <li>

          <a href="hive_metastore.html">Using the Hive Metastore with Kudu</a> 
      </li> 
      <li>

          <a href="kudu_impala_integration.html">Using Impala with Kudu</a> 
      </li> 
      <li>

          <a href="administration.html">Administering Kudu</a> 
      </li> 
      <li>

          <a href="troubleshooting.html">Troubleshooting Kudu</a> 
      </li> 
      <li>

          <a href="developing.html">Developing Applications with Kudu</a> 
      </li> 
      <li>

          <a href="schema_design.html">Kudu Schema Design</a> 
      </li> 
      <li>

          <a href="scaling_guide.html">Kudu Scaling Guide</a> 
      </li> 
      <li>

          <a href="security.html">Kudu Security</a> 
      </li> 
      <li>

          <a href="transaction_semantics.html">Kudu Transaction Semantics</a> 
      </li> 
      <li>

          <a href="background_tasks.html">Background Maintenance Tasks</a> 
      </li> 
      <li>

          <a href="configuration_reference.html">Kudu Configuration Reference</a> 
      </li> 
      <li>

          <a href="command_line_tools_reference.html">Kudu Command Line Tools Reference</a> 
      </li> 
      <li>

          <a href="metrics_reference.html">Kudu Metrics Reference</a> 
      </li> 
      <li>

          <a href="known_issues.html">Known Issues and Limitations</a> 
      </li> 
      <li>

          <a href="contributing.html">Contributing to Kudu</a> 
      </li> 
      <li>

          <a href="export_control.html">Export Control Notice</a> 
      </li> 
  </ul>
  </div>
    </div>
  </div>
</div>
      <footer class="footer">
        <div class="row">
          <div class="col-md-9">
            <p class="small">
            Copyright &copy; 2023 The Apache Software Foundation.  Last updated 2023-09-04 19:34:44 +0800 
            </p>
            <p class="small">
            Apache Kudu, Kudu, Apache, the Apache feather logo, and the Apache Kudu
            project logo are either registered trademarks or trademarks of The
            Apache Software Foundation in the United States and other countries.
            </p>
          </div>
          <div class="col-md-3">
            <a class="pull-right" href="https://www.apache.org/events/current-event.html">
                <img src="https://www.apache.org/events/current-event-234x60.png"/>
            </a>
          </div>
        </div>
      </footer>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>
      // Try to detect touch-screen devices. Note: Many laptops have touch screens.
      $(document).ready(function() {
        if ("ontouchstart" in document.documentElement) {
          $(document.documentElement).addClass("touch");
        } else {
          $(document.documentElement).addClass("no-touch");
        }
      });
    </script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"
            integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS"
            crossorigin="anonymous"></script>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-68448017-1', 'auto');
      ga('send', 'pageview');
    </script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/3.1.0/anchor.js"></script>
    <script>
      anchors.options = {
        placement: 'right',
        visible: 'touch',
      };
      anchors.add();
    </script>
  </body>
</html>

