v2.2 Series release notes

Included here are the release notes for all releases in the v2.2 release series.

New release versioning

Starting with v2.2.0, Yugabyte follows a new release versioning convention. Stable release series are denoted by MAJOR.EVEN, introduce new features and changes added since the previous stable release series, and are supported for production deployments. Patch releases, denoted by MAJOR.EVEN.PATCH, include bug fixes and revisions that do not break backwards compatibility.

Upgrading from 1.3

Prior to v2.0, YSQL was still in beta. Upon release of v2.0, a backward-incompatible file format change was made for YSQL. For existing clusters running pre-2.0 release with YSQL enabled, you cannot upgrade to v2.0 or later. Instead, export your data from existing clusters and then import the data into a new cluster (v2.0 or later).

Notable features and enhancements

Here is an overview of all notable features and enhancements added to the v2.2 release series. For features added in specific releases, see Release notes below.

YSQL

Transactional distributed backups

YugabyteDB now supports distributed backup and restore of YSQL databases, including backup of all tables in a database. #1139 and #3849

Online index backfills

  • YugabyteDB can now build indexes on non-empty tables while online, without failing other concurrent writes. When you add a new index to a table that is already populated with data, you can now use the YSQL CREATE INDEX statement to enable building these indexes in an online manner, without requiring downtime. For details how online backfill of indexes works, see the Online Index Backfill design document.
  • Backfilling an index while online is disable by default. To enable online index backfilling, set the yb-tserver --ysql_disable_index_backfill flag to false when starting YB-TServers. Note: Do not use this flag in a production cluster yet. For details on how this works, see Online Index Backfill

Colocated tables

Database-level colocation for YSQL, which started as a beta feature in the 2.1 release, is now generally available in the 2.2 release. Traditional RDBMS modeling of parent-child relationships as foreign key constraints can lead to high-latency JOIN queries in a geo-distributed SQL database. This is because the tablets (or shards) containing the child rows might be hosted in nodes, availability zones, and regions different from the tablets containing the parent rows. By using colocated tables, you can let a single tablet be shared across all tables. Colocation can also be at the overall database level, where all tables of a single database are located in the same tablet and managed by the same Raft group. Note that tables that you do not want to reside in the overall database's tablet because of the expectation of large data volume can override the feature at table creation time and hence get independent tablets for themselves.

Note

Colocated tables are not currently recommended for production, as backup-restore is not yet fully supported for colocated tables.

Backup-restore support for colocated tables is in active development. Refer to issues 7378 and 10100 for details.

What happens when the "colocation" tablet containing all the tables of a database becomes too large and starts impacting performance? Check out automatic tablet splitting [BETA].

Deferred constraints on foreign keys

Foreign keys in YSQL now support the DEFERRABLE INITIALLY IMMEDIATE and DEFERRABLE INITIALLY DEFERRED clauses. Work on deferring additional constraints, including those for primary keys, is in progress.

Application developers often declare constraints that their data must obey, leaving it to relational databases to enforce the rules. The end result is simpler application logic, lower error probability, and higher developer productivity. Automatic constraint enforcement is a powerful feature that should be leveraged whenever possible. There are times, however, when you need to temporarily defer enforcement. An example is during the data load of a relational schema where there are cyclic foreign key dependencies. Data migration tools usually defer the enforcement of foreign key dependencies to the end of a transaction by which data for all foreign keys would ideally be present. This should also allow YSQL to power Django apps.

yugabyted for single-node clusters

The yugabyted server is now out of beta for single-node deployments. New users can start using YugabyteDB without needing to understand the underlying architectures acts as a parent server, reducing the need to understand data management by YB-TServers and metadata management by YB-Masters.

See it in action by following the updated Quick start. For details, see yugabyted in the Reference section.

Automatic tablet splitting [BETA]

TPC-C benchmarking

New results are now available for benchmarking the performance of the YSQL API using the TPC-C suite. For the new TPC-C results and details on performing your own benchmark tests to evaluate YugabyteDB, see TPC-C.

YCQL

Transactional distributed backups

YugabyteDB supports distributed backup and restore of YCQL databases and tables. #1139 and #3849

Online index backfills

  • YugabyteDB can now build indexes on non-empty tables while online, without failing other concurrent writes. When you add a new index to a table that is already populated with data, you can now use the YCQL CREATE INDEX statement to enable building these indexes in an online manner, without requiring downtime. For details how online backfill of indexes works, see the Online Index Backfill design document.
  • In YCQL, backfilling an index while online is enabled by default. To disable, set the yb-tserver --ycql_disable_index_backfill flag to false when starting YB-TServers. For details on how online index backfill works, see Online Index Backfill. #2301 and #4708

Online schema changes for YCQL [BETA]

Most applications have a need to frequently evolve the database schema, while simultaneously ensuring zero downtime during those schema change operations. Therefore, there is a need for schema migrations (which involve DDL operations) to be safely run in a concurrent and online manner alongside foreground client operations. In case of a failure, the schema change should be rolled back and not leave the database in a partially modified state. With the 2.2 release, not only the overall DocDB framework for supporting such schema changes in an online and safe manner has been introduced but also this feature is now available in beta in the context of YCQL using the ALTER TABLE statement.

Automatic tablet splitting [BETA]


Release notes

v2.2.7 - Feb 19, 2021

Downloads

Docker

docker pull yugabytedb/yugabyte:2.2.7.0-b5

Bug Fixes

Yugabyte Platform
  • Backup-related tasks (schedules, restores, deletes) failed when the storage configuration was deleted 6680, 6882
  • Fixed incorrect selection of the preferred leader zones 6743
  • Removed the "Transactions" plot line from YSQL Ops and Latency graphs 6839
  • Added ability to specify allowed (and disallowed) SSL protocols 6865
Core Database
  • Fixed build issues on 2.2 due to Clang version 5458, 5812
  • Avoid running out of threads due to FailureDetector 5752
  • Fix backup-restore issues when source table was altered before 5958
  • ybase: a blacklisted TS' initial load was not replicated during master failover 6397
  • YCQL: Fixed range deletes to start and end at specified primary key bounds 6649
  • YCQL: Fixed a bug with an index update on a list after an overwrite 6735
  • YCQL: Fixed JSONB operator execution when applying to NULL objects 6766
  • YCQL: Fixed parser typo when scanning binary values 6827
  • YCQL: Fix case-insensitive pattern matching for audit logging 6836

v2.2.6 - Dec 28, 2020

Bug Fixes

Yugabyte Platform
  • Creating a TLS enabled universe with a custom home dir setting in on-prem provider fails (6602)
Core Database
  • [docdb]: Speedup system.partitions queries (6394 and 6434)
  • [docdb]: fixed bloom filter index generation for range-partitioned tablets (6435)
  • [docdb]: fixed handling of empty bloom filter key in the write path (6435)
  • [YSQL]: Refresh YBCache in case Postgres clears its internal cache (6430)

Known Issues

Yugabyte Platform
  • Tasks page reports an incorrect status of failed backup (6210)

v2.2.5 - Dec 2, 2020

Bug Fixes

Yugabyte Platform
  • Fix for updating user profile when SMTP username or password is empty (6257)
  • Fix for editing YugabyteDB Universe placement info logic (6250)
  • Fixes to delete unnecessary Prometheus snapshot when backing up YB Platform data (6175)
  • Fix for an issue where Client Certificates are not valid on download due to incorrect validity time (6118)
  • Safeguard extra migration for pre-provisioning (6181)
Core Database
  • Fix handling SSL write errors and Replace retry counter with a check that data is ready (6266)
  • Fix TServer crash with YEDIS workloads and snapshot restore (6338)
  • Disable Rocksdb flush on all DeleteTablet calls (6353)
  • Shutdown status resolver before destroying it in ResolveIntents (6170)

Known Issues

Yugabyte Platform
  • Tasks page reports incorrect status of failed backup (6210)

Platform Support Package Improvements

(Only applicable to Non-Replicated installations)

Yugabyte Platform

v2.2.4 - October 30, 2020

New features

Yugabyte Platform
  • Yugabyte Platform operations now allow promoting a Yugabyte TServer only node to run Yugabyte Master and TServer process (5831)

Improvements

Yugabyte Platform
  • Enhancements to on-prem Cloud Provider configuration
    • When creating onprem universes, YW will automatically run provisioning if airgap is enabled now, instead of asking the users to run the pre-provision script. Users will need to run the script only when creating universes without passwordless sudo access.

    • Do not fail universe creation if cronjobs can't be created for on-prem (5939)

    • Remove pre-provision script requirement for air-gapped installations (5929)

    • "Sudo passwordless" in on-prem cloud provider configuration toggle is renamed to "Manually Provision Node"

    • Added a new "Advanced" section in on-prem cloud provider configuration which includes

      • Use hostnames
      • Desired home directory
      • Node exporter settings
    • Pre-provisioning of yugabyte user is supported for on-prem Cloud Provider. (YB devops script won't run create_user if yugabyte user already exists) (#6086)

    • Improvements to installation of Prometheus Node Exporter utility workflow (5926)

      • Prometheus Node exporter option is now available in the cloud configuration under advanced settings
      • Supports bringing your own node exporter user
  • UI/UX improvements for YB Platform
    • Add visual feedback when backup or restore is initiated from modal (5908)
    • Add new button for downloading root cert in Certificates page (#5521)
  • Use the correct disk mount while calculating the disk usage of logs (#5983)
Core Database
  • YSQL Support ROWS_PER_TRANSACTION option for COPY FROM stdin (6069)

Bug Fixes

Yugabyte Platform
  • [Replicated] Fixed an issue that would leave Replicated in a bad state if the network connection drops while uploading an airgap bundle, preventing the installation from proceeding. (https://release-notes.replicated.com/release-notes/2.49.0/)
  • Fix for the check if changing node count by AZ affects master node placement and requires a full move (#5335)
  • Fix delete backup failure for TLS enabled universes (#5980)
  • Universe disk usage shows up empty on the universe page (#5548)
  • Fix for starting a YB TServer Node when another YB Master is down causes issues (#5739)
  • Fix platform backup script for replicated installations (#6130)
Core Database

Known Issues

Yugabyte Platform
  • Client Certificates are not valid on download due to incorrect validity time (6118)
  • Tasks page reports incorrect status of failed backup (6210)

Platform Support Package Improvements

(Only applicable to Non-Replicated installations)

Yugabyte Platform
  • Fix for On-prem YB Platform backup fails due to file owned by root (6062)

v2.2.3 – September 30, 2020

Build: 2.2.3.0-b35

Downloads

Docker

docker pull yugabytedb/yugabyte:2.2.3.0-b35

New features

Yugabyte Platform
  • Enhancements to RBAC with a new "Backup Admin" role which allows all read-only permissions plus back up operations #5311
  • Display table sizes in the Tables page #3581
  • On-prem Cloud provider instances table list can be sorted and filtered #4757
  • API for disabling auto-generation of database nodes certificate #5545
  • Backup retention policy for auto-deletion of older backups #4493
Core database
  • [YCQL] Introducing Audit Logging feature for YCQL operations #5887
  • [YSQL] Support for ALTER COLUMN type that does not require on-disk changes #4424
  • [YSQL] Support for Transactional batch size in COPY FROM command syntax #2855, #5453
  • [YCQL] Finer grained permission control for TRUNCATE #5443
  • [YSQL] Enable 2DC replication bootstrap for YSQL Tables #5601

Improvements

Yugabyte Platform
  • Backup improvements
    • YCQL, YSQL, and YEDIS backups are split into different tabs on backup UI screen
    • Back up operation creates a single restore object regardless of "transactional" field selection
    • Added a new field parallel thread for multi-threading backups
    • YSQL backups only support namespace level backup
    • Backup table list has been revamped with the new UX and shows more details - expiration time, duration, backup ty
    • Universe can be restored with a single action
    • Backup objects can be manually deleted
    • Scheduled backups cron expression shows the next run time in local browser time and the label displays that cron supports UTC only #4709
  • Improve the Replication graph for xDC replication set up to display the graph and metric names cleanly #5429
  • UI improvements for displaying On-prem instances
    • Instance ID is now optional and also shown in the nodes page #4760
    • "In Use" column has been renamed to "Universe Name"
    • Supports adding multiple instances in different rows instead of comma-separated entries
  • Supports generating API tokens for SSO-enabled users
  • Yugabyte Platform restart cancels any tasks that were in progress
  • Remove sudo requirement in DB backup script #5440
Core database
  • [DocDB] Removal of unreachable (dead) nodes from YugabyteDB UI #4759
  • [DocDB] Improvements with selecting better default flags for Index backfill #5494
  • [DocDB] Lower the leader load balancer parallelism for performance improvements #5461

Bug fixes

Yugabyte Platform
  • [Platform] Security hardening: Added CSRF token support
  • [Platform] Support for PingFederate OIDC SSO login for Non Replicated deployments
  • [Platform] Allow on-prem nodes to be reused after releasing them from a universe #5703
Core Database
  • [YCQL] Fix for CQL Index scans when ORDER BY columns exist in table but not in chosen index #5690
  • [YSQL] Avoids Pushdown down of UPDATE with RETURNING clause #5366
  • [YSQL] Fix for UPDATE operation with partial and expression Indexes #4939
  • [YSQL] OOM issue fix in COPY FROM query #2855
  • [YSQL] OOM issue fix in COPY TO query #5205
  • [DocDB] Crash fix for DNS-enabled Yugabyte Universes #5561
  • [DocDB] Fix for in-memory state not getting updated correctly when using read-from-follower query semantics #1052
  • [DocDB] For Yugabyte Universes using cross-cluster async replication (2DC), added RPC throttling on idle CDC tables to avoid wasting CPU #5472
  • [DocDB] Fix for rare deadlock scenario when the node switches from Leader to Follower state of the tablet and there are pending operations on Leader side #5741
  • [DocDB] Fix to ensure all Yugabyte Tablet Servers are accounted for when Master fails over #5501

Known Issues

Yugabyte Platform
  • Universe disk usage shows up empty on the universe page #5548

Platform Support Package Improvements (Only applicable to Non-Replicated installations)

Yugabyte Platform
  • Platform backup script needs to preserve attributes on copy from Prometheus snapshot #5612
  • Platform backup fails if /opt/yugabyte/release directory does not exist #5615
  • Platform backup script needs to stop Prometheus service during the restore of Prometheus data #5685

v2.2.2 - August 19, 2020

Build: 2.2.2.0-b15

Downloads

Docker

docker pull yugabytedb/yugabyte:2.2.2.0-b15

YSQL

  • Fix failed backup if restored table was deleted before restoration. #5274
  • Newly elected YB-Master leader should pause before initiating load balancing. #5221
  • Fix backfilling to better handle large indexed table tablets. #5031
  • Fix DROP DATABASE statement should work with databases deleted on YB-Master. #4710
  • For non-prepared statements, optimize pg_statistic system table lookups. #5051
  • [CDC] Avoid periodic querying of the cdc_state table for xDC metrics if there are no replication streams enabled. #5173

YCQL

  • Implement DNS cache to significantly reduce CPU loads due to a large number of DNS resolution requests (especially for YCQL connections). Adds dns_cache_expiration_ms flag (default is 1 minute). #5201
  • Fixed incorrect names de-mangling in index creation from CatalogManager::ImportSnapshot(). #5157
  • Fixed crashes when inserting literals containing newline characters. #5270
  • Reuse CQL parser between processors to improve memory usage. Add new cql_processors_limit flag to control processor allocation. #5057

Core database

  • Fix yugabyted fails to start UI due to class binding failure. #5069
  • Show hostnames in YB-Master and YB-TServer Admin UI when hostnames are specified in --webserver_interface, rpc_bind_addresses, and server_broadcast_addresses flags. #5002
  • Skip tablets without intents during commits, for example, the case of an update of a non-existing row. #5321
  • Fix log spew when applying unknown transaction and release a mutex as soon as possible when transaction is not found. #5315
  • Fix snapshots cleanup when snapshots removed before restart. #5337
  • Replace SCHECK with LOG(DFATAL) when checking for restart-safe timestamps in WAL entries. #5314
  • Replace all CHECK in the load balancer code with SCHECK or RETURN_NOT_OK. #5182
  • Implement DNS cache to significantly reduce CPU loads due to a large number of DNS resolution requests (especially for YCQL connections). Adds YB-Master dns_cache_expiration_ms flag (default is 1 minute). #5201
  • Avoid duplicate DNS requests when handling system.partitions table requests. #5225
  • Fix leader load balancing can cause CHECK failures if stepdown task is pending on next run. Sets global leader balance threshold while allowing progress to be made across tables. Adds new YB-Master load_balancer_max_concurrent_moves_per_table flag to limit number of leader moves per table. #5181 and #5021
  • Set the async YBClient initialization future in TabletPeer constructor to ensure tablet bootstrap logic can resolve transaction statuses. #5215
  • Handle write operation failures during tablet bootstrap. #5224
  • Drop index upon failed backfill. #5144 #5161
  • Fix WAL overwriting by new leader and replay of incorrect entries on tablet bootstrap. #5003 #3759 #4983
  • Avoid taking unique lock when starting lookup request. #5059
  • Set 2DC lag metrics to 0 if not the leader and if the replication is deleted. #5113
  • Set the table to ALTERING state when fully_* is populated. #5139
  • Not the leader errors should not cause a replica to be marked as failed. #5072
  • Use difference between follower's hybrid time and its safe time as a measure of staleness. #4868

Yugabyte Platform

  • Add Master section below Tablet Server section in Metrics page. #5233
  • Add rpc_connections_alive metrics for YSQL and YCQL APIs. #5223
  • Fix restore payload when renaming table to include keyspace. Disable keyspace field when restoring universe backup. #5178
  • Pass in ssh_user to air-gap provision script and add to on-premise template. #5132
  • Add the --recursive flag to AZCopy for multi-table restore. #5163
  • Fix transactional backup with specified tables list by including keyspace in payload. #5149
  • Fix undefine object property error when Prometheus is unavailable and navigating to the Replication tab. #5146
  • Backups should take provider-level environment variables, including home directory. #5064
  • Add hostname and display in the Nodes page along with node name and IP address. #4760
  • Support option of DNS names instead of IP addresses for nodes. Add option in Admin UI to choose between using hostnames or IP addresses for on-premises provider. #4951 #4950
  • Disable glob before running cleanup of old log files using zip_purge_yb_logs.sh. Fixes issue on Red Hat. #5169
  • Fix Replication graph units and missing graph in Replication tab when metrics exist. #5423

v2.2.0 - July 15, 2020

Build: 2.2.0.0-b80

Downloads

     

Docker

docker pull yugabytedb/yugabyte:2.2.0.0-b80

YSQL

  • Support presplitting using CREATE INDEX...SPLIT INTO for range-partitioned table indexes. For details, see Presplitting. #4235
  • Fix crash for nested SELECT statements that involve null pushdown on system tables. #4685
  • Fix wrong sorting order in presplit tables. #4651
  • To help track down unoptimized (or "slow") queries, use the new yb-tserver --ysql_log_min_duration_statement. #4817
  • Enhance the yb-admin list_tables command with optional flags for listing tables with database type (include_db_type), table ID (include_table_id), and table type (include_table_type). This command replaces the deprecated yb-admin list_tables_with_db_types command. #4546
  • Add support for ALTER TABLE on colocated tables. #4293
  • Improve logic for index delete permissions. #4980
  • Add fast path option for index backfill when certain statements can create indexes without unnecessary overhead from online schema migration (for example, CREATE TABLE with unique column constraint). Skip index backfill for unsupported statements, including DROP INDEX, "CREATE UNIQUE INDEX ON`, and index create in postgres nested DDL). [#4918]
  • Suppress incomplete startup packet messages in YSQL logs. #4813
  • Improve YSQL create namespace failure handling. #3979
  • Add error messages to table schema version mismatch errors so they are more understandable. [#4810]
  • Increase the default DDL operations timeout to 120 seconds to allow for multi-region deployments, where a CREATE DATABASE statement can take longer than one minute. #4762

YCQL

  • Throttle YCQL calls when soft memory limit is reached. Two new flags, throttle_cql_calls_on_soft_memory_limit and throttle_cql_calls_policy can be used to control it. #4973
  • Implements a password cache to allow connections to be created more quickly from recently used accounts. Helps reduce high CPU usage when using YCQL authorization. #4596
  • Fix column doesn't exist error when an index is created on a column which is a prefix of another column. #4881
  • Fix crashes when using ORDER BY for non-existent column with index scan. #4908

Core database

  • Add HTTP endpoints for determining master leadership and returning information on masters. #2606
    • <web>/api/v1/masters: Returns all master statuses.
    • <web>/api/v1/is-leader: Returns 200 OK response status code when the master is a leader and 503 Service Unavailable when the master is not a leader.
  • Add HTTP endpoint /api/v1/cluster-config for YB-Master to return the current cluster configuration in JSON format. #4748
  • Output of yb-admin get_universe_config command is now in JSON format for easier parsing. [#4589]#1462
  • Add yugabyted destroy command. [#3872]#3849
  • Change logic used to determine if the load balancer is idle. #4707
  • Default to IPv4 addresses for DNS resolution and local addresses. #4851
  • Add a Grafana dashboard for YugabyteDB. #4725
  • [CDC] Check for table properties equivalence when comparing schemas in 2DC setups and ignore properties that don't need to be the same. #4233
  • [DocDB] Allow multiple indexes to backfill or delete simultaneously. #2784
  • [DocDB] Transition to new leader gracefully during a leader stepdown. When a leader stepdown happens with no new leader candidate specified in the stepdown request, the peer simply steps down leaving the group with no leader until regular heartbeat timeouts are triggered. This change makes it so that the leader attempts to transition to the most up-to-date peer, if possible. #4298
  • Update yb-admin list_snapshots command to use not_show_restored option to exclude fully RESTORED entries. #4351
  • [DocDB] Clean up leftover snapshot files from failed snapshots that resulted in remote bootstrap getting stuck in a failure loop. #4745
  • [DocDB] Clean up metadata in memory after deleting snapshots. #4887
  • [DocDB] Fix snapshots getting stuck in retry loop with deleted table. #4610 and #4302
  • [DocDB] When using yb-admin master_leader_stepdown, specifying a new leader is now optional. #4722
  • [DocDB] Add breakdown of disk space on TServer dashboard. #4767
  • [DocDB] Suppress yb-admin from logging harmless "Failed to schedule invoking callback on response" warning. #4131
  • [DocDB] Allow specifying IPv6 addresses in bind addresses. #3644
  • [DocDB] Fix TS Heartbeater can get stuck if master network connectivity breaks. #4838
  • [DocDB] Improve protection against hitting hard memory limit when follower tablet peers are lagging behind leaders on a node. (for example, node downtime because of yb-tserver restart). #2563
  • yugabyted --bind_ip flag renamed to --listen. #4960
  • Fix malformed URL for ycql rpcz when clicking YCQL Live Ops link in the YB-TServer utilities page. #4886
  • Fix export name for YCQL metrics. #4955
  • Fix YB-Master UI to show correct number of tablets for colocated tables. #4699

Yugabyte Platform

  • Add option to back up and restore YSQL databases and universe-level transactional backups. #3849
  • On the Universes page, the Replication tab displays by default and adds default state when replication lag metric query returns no data.
  • Add Replication tab to Universe overview tab list if enabled and query for replication lag metrics. [#]
  • Add replication lag metrics async_replication_sent_lag_micros (last applied time on producer - last polled for record) and async_replication_committed_lag_micros (last applied time on producer * last applied time on consumer) for 2DC replication and export to Prometheus. #2154
  • Retrieve IAM Instance Profile Credentials for backups. This retrieves the AccessKeyId and SecretAccessKey and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. #3451 and #4900
  • Add option to create a backup of multiple YCQL transactional tables. #4540
  • Add support for c5d instance types. #4914
  • Add support for installing epel-release in Amazon Linux. #4561
  • Fixed requested TLS client certificate generated with expired date and ysqlsh fails to connect. #4732
  • Fixed universe fails to create if user-supplied certificate is selected. #4733
  • Implement OAuth2/SSO authentication for Yugabyte Platform sign-in. #4633 and #4420
  • Add backup and restore options for YSQL tables and universe-level transactional backups. #3849
  • Retrieve IAM Instance Profile Credentials for backups. This retrieves the AccessKeyId and SecretAccessKey and set these in the configuration so that data nodes inherit the required IAM permissions to access S3. #4900
  • In the Health and Alerting tab of the Admin Console, the Username and Password fields in Custom SMTP Configuration are now optional. #4952
  • Fix password reset in customer profile page. #4666 and #3909
  • Fix Backups page not loading when there is a pending task. #4754
  • Change UI text displaying "GFlag" to "Flag" in the Admin Console. #4659