Project: YugabyteDB (App Definition and Development / Database)
File: v2.1.md

title: v2.1 Series release notes linkTitle: v2.1 series description: v2.1 series release notes menu: preview_releases: identifier: v2.1 parent: end-of-life weight: 2970 aliases: /preview/releases/release-notes/v2.1/ rightNav: hideH4: true type: docs Included here are the release notes for all releases in the v2.1 release series. Released February 25, 2020. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.0.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.0.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.0.0-b18 ``` [YSQL] Fixed test wrong assumption in ybdmlsystable_scan. Set the default history retention duration to 120 seconds. Fix metrics error after resetting percentiles.. Extract classes from transaction_participant.cc to separate files. Recover after write stop. Fix issue with yugabyted process restart loop. Track replicated batches at transaction participant. Backfill Index Table. YB inbound RPCs throttling on soft memory limit. BlockBasedMemory mem-trackers should use the "tablet" MetricsEntity instead of "servers". Mean for metrics histograms should be based on the current values, not historic values. Make yugabyted work with docker volume mounts. Added Graph to track Rocksdb write rejections. Fsync before WAL close. Enable percentiles for redis metrics. BlockBasedMemory mem-trackers may already exist in OpenKeyValueTablet. Call TransactionParticipant shutdown from Tablet shutdown. Point yugabyted to system conf file if present. Backfill Index Table - TServer side implementation for backfilling non-unique indices. colocation: make reads aware of table tombstone Add ability to set hybrid time filter to existing rocksdb files. Server crash on startup after table truncate. Move all yugabyted modified data under central var dir. Add physical time to cdc_state table. docdb: iterate over intents past kTransactionId Prevent callback from detached rocksdb instance; prevent race condition between insert and truncate; disable rocksdb flush on truncate. Persist cdc min replicated index in the superblock. yugabyted does not start with custom config file. Fix key processing on CDCProducer. Make yb-docker-ctl compatible with python3 Backfill index: handle failed master -> TS rpc. Evict log cache at follower after operation was appended to log. Implement transaction sealing w/o abort. Extract HeartbeatDataProvider from Heartbeater. Avoid sending apply intents from the follower. YW Alerting improvements. Add the 'snooze alerts status' of a universe to the health check panel. Added UI support to be able to snooze and enable alerts. Add toggle to take backup button. Redirect yugaware logs from yugabyted into yugabyte-logs dir. Add features for the read only user. Add endpoint to support creation of user roles in YB database(s). Add ability to specify list of tables to backup. Fix metrics url check. Do not merge flags during a gflag update. Add option to add, delete users Add authentication for registering new users. Add support to disable the Enable/Disable Backup button on the Tables tab, and change color of disabled TableActions Handle overall exceptions in a better way. Released March 03, 2020. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.1.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.1.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.1.0-b2 ``` colocation: handle table tombstone compaction Decrease log segment size for transaction status tablet. Fix data race between ~Tablet and yb::tablet::Tablet::RegularDbFilesChanged(). MiniMaster should set master_addresses on restart. Modify ldb Tool to be Encryption Aware. Create database fails inside docker yugabyted. [YW] Change the Disk Usage widget on Universe overview page to show the latest value instead of the average Released March 10, 2020. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.2.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.2.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.2.0-b10 ``` [cdc] Fix DeleteTableWithCDCStream Ensure only Tablet leaders can confirm alter table. Make OpenSSL usage thread-safe. Revert removed timeout from RequestConsensusVote. colocation: fix DFATAL on UI tables

(#3726). Ignore writes from the same transaction while updating CQL indexes. Update setting for default number of compaction threads. Add functionality of resolving intents to transaction participant. Set default manifest preallocation to 64k. A workaround for encryption counter overflow. Fixed SecureStream OOM during network partition. Transactions could hang at transaction participant after write stopped. Show backfill progress at master/tasks. Fix apply of transaction with deleted tablets. Comment out Connection::Shutdown info log. Fix health check failures when YSQL auth is enabled. Adding under-replicated tablet servers to the master health check. Fix Tab problem when going into Tables page on YugabyteDB Managed. Only save usable AWS instance types. Added APIs for querying audit table. Generate Client Certificate for TLS enabled Universes. Onprem - allow specifying homeDir, automatically exclude installing s3cmd and ntp. Add sorting by default to the releases list and also a search bar to allow users to quickly access the desired release by entering part of the string. Correctly disable ntp install for onprem Released April 09, 2020. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.3.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.3.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.3.0-b26 ``` Implement paging for index backfill. Rename indices to indexes in the context of index-backfill. Cleaner error reporting from process main. Fix determining the oldest SST file for intent cleanup. Fix the TS UI transactions link. Fix transaction status resolution with old peer version. Add nodiscard attribute to Status class. First phase of transaction aware snapshot. Initial multi node yugabyted version. Enable checksum verification for meta blocks of encrypted files. Batch copy table operations that happen during create database. yb-admin: flushtablebyid, compacttablebyid Persist backfilling timestamp across master failures. Relax requirement on number of log segments in QLTransactionTest.PreserveLogs. Fix encryption format for newly created files. Move remote bootstrap call to OpenTablet to the threadpool. Support the ability to fetch the oldest timestamp record that is more recent than a specified time. A flag for veryfing meta block checksums. Stop cleaning intents SST files if previous file was not actually deleted. Fix MakeFuture utility. Restore transaction aware snapshot. Fix demo destroy behavior with Python 2.7.5. Adding health check for the Tserver. Don't block remote bootstrap service during session init. YBClient sbould wait for all sync operation to complete upon shutdown. Inherited permissions shouldn't replace granted permissions in the client's cache. Fix race condition on ParseTree::stale_. Handle RPC register failure in TransactionStatusResolver. Handle tablet not running in /transactions page. Propagate history cutoff from leader. Allow yb-admin to work with any non-leader master. Transaction aware snapshot persistence. Optimize returning results from tserver to postgres. Allow tracing recent operations in MvccManager. Persist ALTER ROLE changes to disk. colocation: cache db colocated in postgres Fix edit flow to show encryption at rest flags properly. Add support for disabling readonly users. Add API to get client certificate. Create GCP provider with shared VPC and allow specifying subnets per region. Update AWS price info && stop auto-running update script. Remove devops `subnetId` requirement when specifying a VPC when creating GCP provider. Add node ip to all created universes Omit master servers from being counted toward total node/pod count. Update master selection logic. Prevent data move if there is no data to move. UI to set region-subnet mapping when creating GCP provider for existing VPCs. Released April 15, 2020. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.4.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.4.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.4.0-b5 ``` Fix memory leak on transaction abort. colocation: enforce colocated reloption behavior. Implement backfilling for YCQL Unique Index. yb-admin hangs for full timeout of 60s when no leader master is

Use QLExprResult during expression evaluation to avoid unneccesary memory allocations and copies. Fix LB interaction with Preferred Regions. Delete a transaction aware snapshot. Prevent read-write data race on field in DBImpl. TServer-side tablet splitting. Better descripton for BackfillTableJob. Bump max threads in the RPC thread pool to 1024. Avoid extra fsyncs of tombstoned tablets during startup. Fixed tablet log prefix. Remove peers when its tablet is in the FAILED state so that they can be remote bootstrapped. Index deletion upon backfill failure. More resilient multi node yugabyted. Added split-tablet RPC support into yb-admin and yb-master. Fix master bootstrap after snapshot operations. TabletIterator Hangs during Shutdown. Enable Move From Leader LB. Retain delete markers on index tables only during backfill. Ability to attach multiple security groups to yugabyte nodes. Remove psql from bin and fix get_clients.sh. Set replication_factor gflag on master when creating universe. Support for GCS backups. Show node name in alert emails. Disable standalone backups for YCQL indexes. Released: April 27, 2020 (2.1.5.0-b17). New to YugabyteDB? Follow to get started and running in less than five minutes. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.5.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.5.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.5.0-b17 ``` . Read restart for `EXECUTE` statement if the prepared statement is `SELECT`. Find and list YSQL tables in `yb-admin` commands now use table ID instead of table names. The `DROP INDEX` statement now ignores index backfill. The `DROP INDEX` statement now ignores DocDB `NotFound` errors when it doesn't have table metadata, but postgres does. Force single row update prepare statements to use a custom plan that requires `boundParams` to be sent for creation and execution. Improve performance of multi-column primary keys by generating `scanspec` for range partitioned tables using condition expression. Improve tablet splitting , including: Add support for transaction-enabled tables. Add WAL index flush before copying WAL during table splitting. On starting a new `yb-master` (in edit and add node), update master addresses correctly in `yb-master` and `yb-tserver` configuration files. , , and Add backup-related code changes for snapshots , including: Change `yb-admin import_snapshot` to return an error if there are less new table names than backed up tables. For example, if you rename only two of three tables, an error will be generated. Change and `yb-admin list_snapshot` to output `restoration-id` (useful for verifying completed restorations). Support renaming only a few tables (but not all), but keeping the specified table name the same as the old table name. Deprecate `tableflushtimeout` in the `yb-admin create_snapshot` command. Do not return error in output of `yb-admin getisloadbalanceridle` if load balancer is busy. [#3949] Change `yb-tserver` `/utilz` endpoint page to display "Live Ops" instead of "RPCs" and add YSQL statements link Fix access to reset tablet peer during shutdown. GetSafeTime should wait instead of adding to safe time. Add retry logic to snapshot operations. Add TLS encryption support to `yb-ts-cli` (adds `--certsdirname` flag) for sending secure RPC requests to the servers. Fix `yb-ctl` failing when passing `vmodule` in `--master_flags` . The `yugabyte-client` package now includes a `share` folder (containing `.sql` files) for use by YugabyteDB Managed and other remote client users. When shrinking a universe, remove nodes in descending index order. Add back up and restore of Yugabyte Platform using `ybplatformbackup.sh` script. Change `yb_backup.py` to use the `yb-admin` changes for backup-related changes for snapshot (see above). Fix expected restoration state in the `yb_backup.py` script. Allow users to select multiple single tables to backup in addition to specifying a full universe

Customize the SMTP server for sending alert messages using configuration entries for `smtpData` (`smtpServer`, `smtpPort`, `emailFrom`, `smtpUsername`, `smtpPassword`, `useSSL`, and `useTLS`). For Azure Storage blob backups, use SAS tokens instead of Service Principal client secrets. Add create and restore backup support for Azure Blob Storage with SAS tokens. Use Raft configuration as a source for master addresses in `server.conf` for master. Released: May 8, 2020 (2.1.6.0-b17). New to YugabyteDB? Follow to get started and running in less than five minutes. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.6.0-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.6.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.6.0-b17 ``` Wait for `tserver` to finish creating the `transaction` table during the initial cluster startup (when the transaction table is first created) before issuing requests that require it to exist. This was more likely an issue for CI/CD, where requests can be issued immediately. Most users would not encounter this issue. Avoid redundant read for non-unique index inserts. For non-unique indexes, the primary key of the main table is implicitly added to the DocDB key, guaranteeing uniqueness of the full DocDB key (indexed columns plus encoded base table primary key). This fix executes such inserts as upserts and avoid the read and uniqueness check. Enhance automatic query read restart to avoid recreating portal. Instead of recreating a portal, reset an existing one to the state which allows it to be re-executed. Eliminate memory overhead for storing potential big bind variable values (for example, long strings). For `CREATE DATABASE` statements, improves fault tolerance by making CREATE API requests asynchronously and adds a state machine on namespaces to be the authority for processing these modifications. Display current query runtime (`processrunningforms`), in milliseconds (ms), on `<tserverip>:13000/rpcz` endpoint. Allow `system.peers_v2` table to be readable for `cassandra-driver-core:3.8.0-yb-2-RC1` so that expected errors are returned to the driver. When performing a full move or add node on a universe that has a yb-master, the `server.conf` file is now being updated with the new `master_addresses`. In the Backups* tab, individual YSQL tables can no longer be selected. Previously, attempting to back up a YSQL table would create a failed task. In the Metrics* view, transactions have been added to the YSQL and YCQL operations charts. Create Read Replica and Edit Read Replica* pages are no longer in beta. In the Certificates* page, you can now download certificates. In the Universes* overview page, add a button to toggle on metrics graph widgets to auto-refresh or to set refresh interval. Released: June 19, 2020 (2.1.8.2-b1). New to YugabyteDB? Follow to get started and running in less than five minutes. <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.8.2-darwin.tar.gz"> <i class="fa-brands fa-apple"></i><span>macOS</span> </a> </li> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.1.8.2-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.1.8.2-b1 ``` Add support for statement. Fix aggregate functions pushdown for columns with default values added after table creation. Resolve timeout frequently encountered when batch-loading data in YSQL by using client-specified timeouts for RPC requests instead of hardcoded values. Fix incorrect cross-component dependency in DocDB found in builds using `ninja`. Fix operation buffering in stored procedures to handle transactions correctly. Correctly push down `IS NULL` condition to DocDB. Avoid ASAN failures after a large data set is uploaded by rearranging files and test functionalities. Fix memory leaks by using memory context to manage object alloc and free. Fix multi-touch cache and improve caching logic for read and write operations. Improve index cost estimates by considering index uniqueness, included columns (index scan vs. index only scan), scan direction, and partial indexes. Also, disable merge joins for unsupported cases. and Add support for deferrable foreign key constraints. Prevent dropping primary key constraint. Push down SELECT <aggregate>(<const>), for example, SELECT COUNT(1) , to

Fix rare core dumps due to concurrency issues in metrics webserver during shutdown. Rename `cqlsh` to `ycqlsh`. Update Cassandra Java driver version to `3.8.0-yb-4` and adds support for 26 or later. The latest release of the driver is available in the . YB-TServers should not crash when attempting to log in using YCQL authentication without a password. Performance degradation in `CassandraSecondaryIndex` workload resolved. Add support for renaming a few tables (not all), but the specified name is equal to the old table name: `yb-admin importsnapshot <meta-file> ks oldtable_name`. For DDL creation with Spring Data Cassandra, change the `Enum` value from `JSON` to `JSONB` to allow schema creation to succeed programmatically involving JSON column types and update the `cassandra-java-driver` to `3.8.0-yb-5`. Use the same timestamp for current time to compute multiple runtimes in output of `<tserver-ip>:13000/rpcz`. Correctly push down `= NULL` condition to DocDB. Reduce YCQL unprepared statement execution time by up to 98% (example: reduced time to insert a 5 MB string from 18 seconds to 0.25 seconds). and Special thanks to for your contribution! For `yugabyted`, do not start `redis` server by default. Resolves port conflict during startup. New `yb-admin` command to get the cluster load balancer state. Avoid creating intent iterator when no transactions are running. Increase default memory limit for `yb-master` for running in low-memory setups (`<=4 GB`). Improve RocksDB checkpoint directory cleanup if a tserver crashes or is restarted while performing a snapshot operation. command. and , to flush tablets. When used with rolling restarts, less time is spent applying WAL records to rocksdb. Special thanks to for your contribution. Introduced load balancing throttle on the total number of tablets being remote bootstrapped, across the cluster. and [Colocation] During load balancing operations, load balance each colocated tablet once. This fix removes unnecessary load balancing for every user table sharing that table and the parent table. Fix YB-Master hangs due to transaction status resolution. Redirect the master UI to the master leader UI without failing when one master is down. and Avoid race in `change_metadata_operation`. Use atomic<P> to avoid race between `Finish()` and `ToString` from updating or accessing request. Refactor `RaftGroupMetadata` to avoid keeping unnecessary `TableInfo` objects in memory. Fix missing rows in unidirectional replication and fix race conditions with CDC and TransactionManager. Change intent iterator creation logic. Upgrade all Python scripts used to build and package the code to Python 3. Fix failure when adding a node on a TLS-enabled universe. Improve latency tracking by splitting overall operation metrics into individual rows for each API. YCQL and YEDIS metrics include `ops`, `avg latency`, and `P99 latency`. YSQL metrics include only `ops` and `avg latency`. Add metrics for RPC queue sizes of services, including YB-Master, YB-TServer, YCQL, and YEDIS. Add option to edit configuration flags without requiring server restart. When configuration flags are deleted in the YugabyteDB Admin Console, remove the flags from `server.conf` file. When creating GCP instances, only use host project when specifying network. When creating a cloud provider configuration, display provider-level (non-k8s) settings for SSH ports and enabling airgapped installations. , , and . After removing a node and then adding a node, check for certificate and key files and create the files if needed. Update to support Helm 3 deployments. Note: Helm 2 is no longer supported. Change `QLTableRow` representation. Fix CDC-related race conditions using `CDCServiceTxnTest.TestGetChangesForPendingTransaction`. Revert validation on alerting email field to allow comma-separated emails in the form. Add Custom SMTP Configuration section to Health & Alerting* tab on customer profile page. Fix Kubernetes pod container metrics not displaying in Metrics* panel. Fix Backups* tab not rendering when there are no backups.