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

title: What's new in the v2.9 release series headerTitle: What's new in the v2.9 release series linkTitle: v2.9 series description: Enhancements, changes, and resolved issues in the v2.9 release series. menu: preview_releases: parent: end-of-life identifier: v2.9 weight: 2890 aliases: /preview/releases/release-notes/v2.9/ rightNav: hideH4: true type: docs {{< tip title="Kubernetes upgrades">}} To upgrade a pre-version 2.9.0.0 Yugabyte Platform or universe instance deployed on Kubernetes that did not specify a storage class override, you need to override the storage class Helm chart value (which is now "", the empty string) and set it to the previous value, "standard". For Yugabyte Platform, the class is `yugaware.storageClass`. For YugabyteDB, the classes are `storage.master.storageClass` and `storage.tserver.storageClass`. {{< /tip >}} Build: `2.9.1.0-b140` <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.9.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.9.1.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.9.1.0-b140 ``` ] Create REST endpoints to manage async replication relationships ] [Alerts] Implement alert listing [PLAT-1573] Adding 'create new cert' in enable TLS new feature [PLAT-1620] Added secondary subnet for allowing two network interfaces [PLAT-1695] Create new API endpoint to be able to query logs by Universe [PLAT-1753] Enable taking backups using custom ports ] [YSQL] Collation Support (part 2) ] [YSQL] Collation Support (part 3) ] [YSQL] Enable row-locking feature in CURSOR ] [YSQL] create new access method ybgin ] [YSQL] change gin to ybgin for YB indexes [YSQL] Foreign Data Wrapper Support ] [PLAT-59] Allow log levels to be changed through POST /logging_config endpoint ] Splitting up create/provision tasks to delete orphaned resources ] [PLAT-523] Show error summary at the top of the health check email ] Enable/disable YCQL endpoint while universe creation and force password requirement ] [PLAT-386] Implement base YSQL/YCQL alerts ] Add restore_time field for all universes. ] Update UI to accommodate Authentication changes ] Alert configurations implement missing parts and few small changes ] [PLAT-1530] Creates static IP during cluster creation for cloud free tier clusters. Releases IPs on deletion. ] Mask sensitive gflag info ] Platform UI: Change stop backup icon and label to abort icon and label. [CLOUDGA-2345] Implement MDC propagation and add request/universe ID to MDC [PLAT-525] Add IP address to SAN of node certificates [PLAT-541] Allow configuring no destination for alert config + UI improvements [PLAT-1523] Update Alert APIs to be consistent with UI terminology [PLAT-1528] Change YWError handler to default to JSON response on client error. [PLAT-1546] [PLAT-1547] [PLAT-1571] [PLAT-1572] Add API docs for UniverseClustersController, and other misc fixes [PLAT-1549] Add (non-generated client, "simple") Python API examples [PLAT-1549] Cleanup list/create provider API usage examples [PLAT-1555] Add Python API client example for create Universe [PLAT-1555] Add Python API client example for list Universe [PLAT-1556] List Storage Configs Create Scheduled backup examples [PLAT-1582] [Alert] Limit Severity to maximum 2(Severe/warn), now we can add multiple severity's but after edit we are displaying only 2 (1 Severe/1 Warn) [PLAT-1611] Add python depedencies required for executing external scripts [PLAT-1647] Provide more details for default channel on UI [PLAT-1664] Enable new alert UIs and remove deprecated alert UI + configs from Health tab + config from replication tab [PLAT-1691] Set oshi LinuxFileSystem log level to ERROR [PLAT-1691] Task, API and thread pool metrics [PLAT-1705] Add auditing and transaction for /register API action [PLAT-1723] Allow disabling prometheus management + write alerts and metrics effectively [PLAT-1766] [Alerts] UI: Cleanup [PLAT-1774] Add a customer ID field in Customer Profile page [PLAT-1791] Use hibernate validator for all alert related entities [PLAT-1818] Add pagination to Tables tab and add classNames Added new AWS regions to metadata

Hooking GCP Create Method into Create Root Volumes method ] [YSQL] Enabling relation size estimation for temporary tables in optimizer ] yb-admin: Added error message when attempting to create snapshot of YCQL system tables ] [DocDB] Allow TTL-expired SST files that are too large for compaction to be directly expired ] [DocDB] Modified compaction file filter to filter files out of order ] Reduce timeout for ysql backfill. ] [YBase] Remove information about LB skipping deleted tables from the admin UI ] [YSQL] Support single-request optimization for UPDATE with RETURNING clause ] [backup] repartition table if needed on YSQL restore ] Speed up restoring YSQL system catalog ] [DocDB] Add metric to monitor server uptime ] [DocDB] moved GetSplitKey from TabletServerAdminService into TabletServerService ] ] [YSQL] Inherit default PGSQL proxy bind address from rpc bind address ] [YSQL] [backup] Support in backups the same table name across different schemas. ] [YBase] Add a limit on number of metrics for the prometheus metrics endpoint ] [DocDB] Improve master load balancer state presentation ] [YSQL] Enable -Wextra on pgwrapper ] [YSQL] Enable -Wextra on yql folder ] [xCluster] Add cdc_state Schema Caching to Producer Cluster ] [YBase] Allow sst-dump to decode DocDB keys and dump data in human readable format ] [YSQL] Increase scope of cases where transparent retries are performed ] [xCluster] Make deleteuniversereplication fault tolerant ] Added placement info to /api/v1/tablet-servers ] Set WAL footer closetimestampmicros on Bootstrap ] [Part-1] Populate partial index predicate in "options" column of system_schema.indexes ] [YSQL] Import Avoid trying to lock OLD/NEW in a rule with FOR UPDATE. ] [YSQL] Import Fix broken snapshot handling in parallel workers. ] [PITR] Allow consecutive restore ] Allow PITR in conjunction with tablet split ] [YSQL] Import Fix corner-case uninitialized-variable issues in plpgsql. ] [YSQL] Import In pg_dump, avoid doing per-table queries for RLS policies. ] [YSQL] Import Fix float4/float8 hash functions to produce uniform results for NaNs. ] [YSQL] Import Disallow creating an ICU collation if the DB encoding won't support it. ] [YSQL] Import Fix bitmap AND/OR scans on the inside of a nestloop partition-wise join. ] Remove YBClient from Postgres: Introduce PgClient and implement ReserveOids using it; Open table via PgClient; Remove all direct YBClient usage from PgSession ] [YSQL] Import Rearrange pgstat_bestart() to avoid failures within its critical section. ] [YSQL] Import Fix EXIT out of outermost block in plpgsql. ] [YSQL] Import jit: Do not try to shut down LLVM state in case of LLVM triggered errors. ] [YSQL] Preserve operation buffering state in case of transparent retries ] [xCluster] Lag Metric Improvements ] [YSQL] Import Force NO SCROLL for plpgsql's implicit cursors. ] [YSQL] Import Avoid misbehavior when persisting a non-stable cursor. [YSQL] Import Fix performance bug in regexp's citerdissect/creviterdissect. ] New Universe creation gets public IP assigned even with flag = false ] [UI] Suggested Default File Path for CA Signed Certificate and Private Key is Incorrect ] [PLAT-482] Health Checks should run when Backup/Restore Tasks are in progress ] [PLAT-611] Health checks can overlap with universe update operations started after them ] Allow the deletion of Failed Backups ] [PLAT-509] Refresh Pricing data for Azure provider seems to be stuck ] [PLAT-521] BackupsController: small fixes required ] [PLAT-368] Disable Delete Configuration button for backups when in use. ] [YW] Correct the node path (#9864) [CLOUDGA-1893] fix client-to-node cert path in health checks [PLAT-253] Fix the backupTable params while creating Table backups using Apis. [PLAT-253] Fix universe's backupInprogress flag to avoid multiple backup at a time due to low frequency

[PLAT-289] Stopped node should not allow Release action [PLAT-580] Fix create xCluster config API call [PLAT-599] Fix error messages in alert destination and configuration services [PLAT-1520] Stop displaying external script schedule among Backup Schedules. [PLAT-1522] Fix s3 release breakage [PLAT-1549] [PLAT-1697] Fix Stop backup race condition. Add non-schedlued backup examples [PLAT-1559] Stop the external script scheduler if the universe is not present. [PLAT-1563] Fix instance down alerts + make sure instance restart alert is not fired on universe operations [PLAT-1578] Do not specify storage class (use default if provided) [PLAT-1586] [Alert] Able to add multiple alert configuration with same name. Add duplicate check for alert configuration name [PLAT-1599] [UI] Root Certificate and node-node and client-node TLS missing on Edit Universe [PLAT-1603] [Platform]YBFormInput's OnBlur throws error on AddCertificateForm [PLAT-1605] Fix duplicate alert definitions handling + all locks to avoid duplicates creation [PLAT-1606] Disk name too long for Google Cloud clone disk [PLAT-1613] Alerts: Logs filled with NPE related to "Error while sending notification for alert " [PLAT-1617] Added GCP region metadata for missing regions. [PLAT-1617] Fix issue with GCP Subnet CIDR [PLAT-1619] Check for FAILED status in waitforsnapshot method. [PLAT-1621] Health check failed in K8s portal [PLAT-1625] Fix task details NPE [PLAT-1626] Skip preprovision for systemd upgrade. [PLAT-1631] [Alert] Universe filter is not working in Alert Listing [PLAT-1638] Fix naming convention for external script endpoints as per our standards [PLAT-1639] [PLAT-1681] Make proxy requests async to keep them from blocking other requests [PLAT-1639] [PLAT-1681] Reduce log spew from akka-http-core for proxy requests. [PLAT-1644] Fix k8s universe creation failure for platform configured with HA [PLAT-1646] Remove Unsupported Instance types from pull down menu for Azure [PLAT-1650] Added yum locktimeout to prevent yum lockfile errors for usecustomsshport.yml [PLAT-1653] Fix region get/list. [PLAT-1656] [UI] [Alert] Group Type filter is not working in Alert Listing [PLAT-1661] Fix alert messages for notification failures [PLAT-1667] Platform should not scrape all per-table metrics from db hosts (part 2) [PLAT-1668] Yugabundle failing because can't find YWErrorHandler [PLAT-1682] Fix node comparison function from accessing undefined cluster [PLAT-1687] ALERT: Not able to create destination channel using "default recipients + default smtp settings + empty email field" [PLAT-1694] Fix Intermittent failure to back up k8s universe [PLAT-1707] Fix performance issue [PLAT-1715] Check for YB version only for 2.6+ release DB [PLAT-1717] Full move fails midway if system tablet takes more than 2 mins to bootstrap [PLAT-1721] Stop storage type from automatically changing when instance type is changed [PLAT-1726] Allow user to completely remove all gFlags after addtion of several gFlags. [PLAT-1730] Fix resize node logic for RF1 clusters [PLAT-1736] Create default alert configs and destination on DB seed [PLAT-1737] "This field is required" error message is shown on alert configuration creation with default threshold == 0 [PLAT-1746] Delete prometheus_snapshot directory once platform backup package is created [PLAT-1757] Health Check failure message has Actual and expected values interchanged [PLAT-1761] Fix alert message in case of unprovisioned nodes [PLAT-1768] Universe tasks take lot more time because thread pool executors do not reach max_threads [PLAT-1780] Redact YSQL/YCQL passwords from task_info table. [PLAT-1793] DB Error logs alert [PLAT-1796] Edit Universe page has password fields editable [PLAT-1802] Replication graphs stopped showing on replication tab

change) [PLAT-1804] Fix 'Querying for {} metric keys - may affect performance' log [PLAT-1816] Forward port restricted user creation to master [PLAT-1819] [PLAT-1828] Release backup lock when Platform restarts, and update Backup state [PLAT-1829] [ycql/ysql] auth password: wrong error message [PLAT-1833] Fix missing create time on alert configuration creation issue [PLAT-1839] Fix typo in DB migration [PLAT-1892] Make error alert be disabled by default [PLAT-1969] [UI] Universe creation - Create button is disabled when YSQL/YCQL auth is disabled Backup and Restore failing in k8s auth enabled environment Fix NPE in VM image upgrade for TLS enabled universes Use TaskInfo instead of CustomerTask in shouldIncrementVersion check ] Do not link with system libpq ] Fix bootstrapping with preallocated log segment ] [YSQL] Error out when Tablespaces are set for colocated tables ] [DocDB] Prevent tablet splitting when there is post split data ] Fix fatal that occurs when running alteruniversereplication and producer master has ] [DocDB] Master task tracking should point to the table it is operating on ] [YSQL] Fix NULL pointer access in case of failed test ] [YSQL] Statement reads rows it has inserted ] Fetch Universe Key From Masters on TS Init ] Fix master crash when restoring snapshot schedule with deleted namespace ] [xCluster] Label cdc streams with relevant metadata ] Fix universe reset config option (#9863) ] Mark snapshot as deleted if tablet was removed ] [DocDB] Tablet Splitting - Wait for all peers to finish compacting during throttling ] Universe Actions -> Add Read Replica is failing ] [DocDB] Load Balancer should use tablet count while looking tablets to move ] [xCluster] Set proper deadline for YBSession in CDCServiceImpl ] DocDB: fixed Batcher::FlushBuffersIsReady ] [YSQL] Check database is colocated before adding colocated option for Alter Table ] DocDB: Check table pointer is not nullptr before dereferencing ] [DocDB] Set aborted subtransaction data on local apply ] [YSQL] fix limit vars to uint64 ] Fix internal retry of kReadRestart for SELECT func() with a DML in the func ] [YSQL] Fix double type overflow in case of SET ybtransactionprioritylowerbound/ybtransactionpriorityupperrbound command ] [YSQL] Fix not being able to add a range primary key ] [YSQL] further fix backup restore for NULL col attr ] [YSQL] always check schema name on backup import ] YCQL - Handle unset correctly ] [YSQL] Initialize tybctid field in acquiresample_rows() ] [Part-0] Update logic for using num_tablets from internal or user requests. ] [YCQL] [Part-1] DESC TABLE does not directly match the "CREATE TABLE" command for number of tablets. ] [DocDB] Don't update rocksdb_dir on Remote Bootstrap ] Fix ysql_dump in encrypted k8s environment ] Fix ysql_dump in TLS encrypted environment ] DocDB: use correct kvstoreid for post-split tablets ] [YSQL] remove runtime tag for ysqldisableindex_backfill ] backup: fix to reallow YEDIS on restore ] [YSQL] Fix copy/paste error causing incorrect conversion ] Fix transaction coordinator returning wrong status hybrid time ] [backup] allow system table for YEDIS restore ] DocDB: use RETURNNOTOK on an unchecked status ] YSQL fix FATAL caused by wrong sum pushdown ] [YSQL] Fix index creation on temp table via ALTER TABLE ] ybase: Avoid unnecessary table locking in CatalogManager::DeleteYsqlDBTables [ybase] Properly pass number of tables via MetricPrometheusOptions ] Correctly determine isybrelation for row-marked relations when preparing target list Fix for resource leaks Fixed bug in yb-ctl for stopping processes, when os.kill raises an exception Make SSH wait behavior consistent across operations N/A N/A Version 2.9 introduces many new features and refinements. To learn more, check out the blog post. Yugabyte release 2.9 builds on our work in the 2.7 series. Build: `2.9.0.0-b4` <ul class="nav yb-pills"> <li> <a href="https://downloads.yugabyte.com/yugabyte-2.9.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.9.0.0-linux.tar.gz"> <i class="fa-brands fa-linux"></i><span>Linux</span> </a> </li> </ul> ```sh docker pull yugabytedb/yugabyte:2.9.0.0-b4 ``` (Refer to the for new-feature details for this release!) ] [Platform] Allow TLS encryption to be enabled on existing universes ] [Platform] Wrapper API handling both TLS Toggle and Cert Rotation ] [Platform] Ability to stop backups from admin

(#9310) ] [Platform] Update CertsRotate upgrade task to support rootCA rotation ] [Platform] Adding APIs to schedule External user-defined scripts. ] Replace cron jobs with systemd services for yb-master, yb-tserver, cleancores, and zippurgeyblogs. ] Upgrade cron based universes to systemd universes. ] Changed AWS Default storage type from GP2 to GP3 ] Add connection strings for JDBC, YSQL and YCQL in connect Dialog (#9473) ] Adding custom machine image option for GCP ] updated aws pricing data by running aws utils.py script. pricing data now includes t2 data. t2 instances can now be used when launching universes. ] Add Snappy and LZ4 traffic compression algorithms ] Implement network traffic compression ] Add RPC call metrics ] [Platform] Add more regions to GCP metadata [PLAT-1501] [Platform] Support downloading YB tarball directly on the DB nodes [PLAT-1522] [Platform] Support downloading releases directly from GCS AWS disk modification wait method updated to return faster ] [YSQL] Creating system views during YSQL cluster upgrade ] [YSQL] Support INSERT with OID and ON CONFLICT or cluster upgrade ] [DocDB] Drive aware LBing when removing tablets ] [YCQL] Enable LDAP based authentication ] [YSQL] Enable ALTER SCHEMA RENAME ] [YSQL] YSQL support for tablet splits by preparing requests along with tablet boundaries ] [YSQL] Enable concurrent transactions on ALTER TABLE [DROP & ADD COLUMN] DDL Statement ] [DocDB] Improves TTL handling by removing a file completely if all data is expired ] ] [YBase] Implement chunking/throttling in Tablet::BackfillIndexForYSQL ] [YSQL] Set up infrastructure for index backfill pagination ] [YBase] Support for YSQL DDL restores for PITR ] [YSQL] Implement function to compute internal hash code for hash-split tables ] [YSQL] Enable statistic collection by ANALYZE command ] [YSQL] [backup] Support in backups the same table name across different schemas ] [DocDB] [PITR] allow data-only rollback from external backups ] Ability to verify Index entries for a range of rows on an indexed table/tablet ] ] [YSQL] pg_inherits system table must be cached ] [YSQL] Add superficial client-side support for SAVEPOINT and RELEASE commands ] [YBase] Introduce mutex for permissions manager ] [backup] Improve internal PB structure to store backup metadata into SnapshotInfoPB file. ] [YSQL] log failed DocDB requests on client side [YSQL] Merge user provided sharedpreloadlibraries to enable custom PSQL extensions (#9576) [YSQL] Pass Postgres port to yb_servers function ] [Platform] Add Labels to GCP Instances and disks ] [Platform] Enforce configured password policy (#9210) ] Add version numbers to UpgradeUniverse task info ] [Platform] Use matching helm chart version to operate on db k8s pods ] [Platform] Fix sample apps command syntax for k8s universes ] [Platform] [UI] Leading or trailing spaces are not removed from username field on login console ] [Platform] Add empty check before adding tags ] [Platform] Tag AWS Volumes and Network Interfaces ] [Platform] Fix Health Check UI not rendering ] changing kubernetes provider config labels ] [Platform] Allow editing "Configuration Name" for backup storage provider without security credentials ] fixing metric graph line labels ] removing TServer references from graph titles ] [Platform] Optimise CertificateInfo.getAll by populating universe details in batch rather than individually ] Improving system load graph labels ] [UI] Add submit type to submit button in YBModal ] Fix form submission causing refresh for confirmation modal ] ] Set enablelogretentionbyopidx to true by default and bump updatemetricsintervalms to 15000 ] [Platform] Slow Query Calls using custom username/password ] [Platform] Added a restore_time field in backup restore flow for AWS portal only using Feature

] [Platform] Increase wait for yum lockfile to be released during preprovisioning ] [Platform] "None" in zone field observed on tserver status page in platform ] Fix initialization of async cluster form values for existing universes without read-replica ] [Platform] Do not perform version checks if HA is not set ] Disable drive aware LB logic by default [PLAT-1520] [Platform] Stop displaying external script schedule among Backup Schedules [PLAT-1524] [Platform] Fix password policy validation [PLAT-1540] [Platform] Make health check use both possible client to node CA cert location [PLAT-1559] [Platform] Stop the external script scheduler if the universe is not present [Platform] Disable "Pause Universe" operation for Read-Only users (#9308) [Platform] Extends ToggleTLS with ClientRootCA and General Certificates Refactor Delete associated certificates while deleting universe Make backup configuration name unique for each customer ] ] [YSQL] Avoid redundant key locking in case of update operations ] Add application.conf setting to dump output of cluster_health.py ] [DocDB] Add a limit on number of outstanding tablet splits ] [DocDB] fixed tablet split vs table deletion race ] [DocDB] Tablet splitting: Disable automatic splitting for 2DC enabled tables ] Check capability before sending graceful cleanup ] [DocDB] fixed CassandraBatchTimeseries failures loop with tablet splitting ] [YCQL] Honour token() conditions for all partition keys from IN clause ] [DocDB] Ignore intents from aborted subtransactions during reads and writes of the same transaction ] [DocDB] Persist SubTransactionId with intent value ] [DocDB] reworked globalskipbuffer TSAN suppression ] Block PITR when there were DDL changes in restored YSQL database ] [YSQL] Enable -Wextra on pggate ] Default to logging DEBUG logs on stdout ] [PITR] Cleanup sys catalog snapshots ] [DocDB] fixed std::string memory usage tracking for gcc9 ] [YSQL] Import Make indexsetstate_flags() transactional ] [YSQL] address infinite recursion when analyzing system tables ] Fix provider creation in yugabundle by using correct version of python ] Use proper initial time to avoid signed integer overflow ] [DocDB] Added success message for all tablets and single tablet compaction/flushes ] Fixed diskIops and throughput issue. ] Fix access key equals method ] [DocDB] Use EncryptedEnv instead of Env on MiniCluster ] Limit VERIFY_RESULT macro to accept only Result's rvalue reference ] [DocDB] fixed Log::AllocateSegmentAndRollOver ] [YSQL] output NOTICE when CREATE INDEX in txn block ] Update TSAN suppression after RedisInboundCall::Serialize rename ] [YSQL] Import jit: Don't inline functions that access thread-locals. ] [DocDB] Ignore intents from aborted subtransactions during transaction apply ] [DocDB] Move client-side subtransaction state to YBTransaction ] [YSQL] Smart driver: Incorrect host value being return in Kubernetes environment ] Cleanup intents after bootstrap ] [YBase] PITR - Fix auto cleanup of restored hidden tablets ] Fix master crash when restoring snapshot schedule with deleted namespace ] [xCluster] Limit how often ViolatesMaxTimePolicy and ViolatesMinSpacePolicy are logged ] [CQL] Show static column in the output of DESC table ] [YSQL] Import Fix mis-planning of repeated application of a projection. ] [YQL] Use shared lock for GetYsqlTableToTablespaceMap ] Initialise shared memory when running postgres from master ] [DocDB] Fix race between split tablet shutdown and tablet flush ] [YSQL] Import Fix incorrect hash table resizing code in simplehash.h ] [YBase] Use shared lock in GetMemTracker() ] [YSQL] Import Fix checkaggarguments' examination of aggregate FILTER clauses. [YSQL] free string in untransformRelOptions() [YSQL] Import Fix division-by-zero error in to_char() with 'EEEE' format. [YSQL] Import Fix thinkos in LookupFuncName() for function name lookups [YSQL] Import Lock the extension during ALTER EXTENSION ADD/DROP. N/A N/A {{< note title="New release versioning" >}} Starting with v2.2, Yugabyte release versions follow a . The preview release series, denoted by `MAJOR.ODD`, incrementally introduces new features and