docs/content/stable/releases/ybdb-releases/v2024.1.md
What follows are the release notes for the YugabyteDB 2024.1 release series. Content will be added as new notable features and changes are available in the patch releases of the YugabyteDB 2024.1 release series.
For an RSS feed of all release series, point your feed reader to the RSS feed for releases.
{{<warning title="Changes to supported operating systems">}} YugabyteDB 2024.1.0.0 and newer releases do not support v7 Linux versions (CentOS7, Red Hat Enterprise Linux 7, Oracle Enterprise Linux 7.x), Amazon Linux 2, and Ubuntu 18. If you're currently using one of these Linux versions, upgrade to a supported OS version before installing YugabyteDB v2024.1.0. Refer to Operating system support for the complete list of supported operating systems. {{</warning>}}
{{< tip title="New memory division settings available" >}}
YugabyteDB uses memory division flags to specify how memory should be divided between different processes (for example, YB-TServer versus YB-Master) on a YugabyteDB node as well as within processes. Using these flags, you can better allocate memory for PostgreSQL, making it more suitable for a wider range of use cases.
For new v2024.1.x universes, if you are expecting to use any nontrivial amount of YSQL, it is strongly recommended to set ‑‑use_memory_defaults_optimized_for_ysql. This changes the memory division defaults to better values for YSQL usage, and optimizes memory for the node size.
If you are upgrading a universe, you may want to instead review your memory division settings and adjust them if desired; see best practices.
In future releases, the memory division settings will be used to determine how many tablet replicas a YB-TServer can safely support; this information will power new alerts warning you about overloading nodes with too many tablet replicas and allow blocking operations that would create too many tablet replicas.
{{< /tip >}}
Build: 2024.1.6.1-b2
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.6.1-b2
Build: 2024.1.6.0-b53
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.6.0-b53
yb_servers function to include universe_uuid for better cluster identification. {{<issue 25818>}}REFRESH MATERIALIZED VIEW CONCURRENTLY operation. {{<issue 26205>}}double for estimates. {{<issue 25862>}}ysql_dumpall. {{<issue 25701>}}\d command for indexes with spaces in their names. {{<issue 25711>}}ysql_dumpall to combine CREATE ROLE and ALTER ROLE for effective role management. {{<issue 25608>}}yb_get_ybctid_width. {{<issue 24819>}}yb_index_check to verify materialized view indexes' consistency. {{<issue 26639>}}WaitForReplicationDrain behavior by not mislabeling tablets as drained. {{<issue 25457>}}Build: 2024.1.5.0-b26
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.5.0-b26
cdc_use_byte_threshold_for_vwal_changes. {{<issue 25572>}}pg_authid table pre-fetching during login to reduce RPC calls and prevent errors. {{<issue 25776>}}ALTER DATABASE impact to only the targeted database. {{<issue 25392>}}ALTER DATABASE RENAME and ALTER DATABASE OWNER to global impact. {{<issue 25742>}}cluster_config_. {{<issue 21775>}}Build: 2024.1.4.0-b108
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.4.0-b108
enable_tablet_split_of_cdcsdk_streamed_tables. {{<issue 24190>}}not yet implemented. {{<issue 23881>}}yb_enable_fkey_catcache. {{<issue 23686>}}ALTER ROLE commands, saving system resources. {{<issue 24390>}}cql_revert_to_partial_microsecond_support=false. {{<issue 11052>}},{{<issue 23476>}}cql_microseconds_timestamps_used. This tracking occurs if the cql_revert_to_partial_microsecond_support flag is true. {{<issue 24776>}}load_balancer_max_inbound_remote_bootstraps_per_tserver flag. {{<issue 2426>}}prev_ticks_ each iteration. {{<issue 22910>}}SIGQUIT for immediate shutdowns to reduce hang-ups, and monitoring for stuck processes on macOS {{<issue 24396>}}ysql_dump process by eliminating faulty statements for colocated table unique constraint, enhancing database reliability. {{<issue 24057>}}UTF8 use instead of SQL_ASCII and adds pg_collation to preloaded tables to prevent specific errors. {{<issue 24149>}}REINDEX and TRUNCATE on system tables using table rewrite. {{<issue 24356>}}yb_enable_base_scans_cost_model configuration {{<issue 24246>}}PlaceHolderVar in parameterized conditions. {{<issue 24186>}}RelationBuildTriggers. {{<issue 24951>}}GROUP BY in YCQL using ycql_ignore_group_by_error flag. {{<issue 25030>}}alter table add column commands with a default value. {{<issue 24050>}}ListMasterServers RPC on a master by returning an error. {{<issue 20372>}}ysql_enable_packed_row is off and existing packed rows are present. {{<issue 24545>}}Slice::Less and Slice::compare methods. {{<issue 25319>}}Build: 2024.1.3.1-b8
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.3.1-b8
SIGQUIT for immediate shutdowns {{<issue 24396>}}Build: 2024.1.3.0-b105
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.3.0-b105
Bitmap scan support. Combine multiple indexes for more efficient scans. {{<tags/feature/ea>}}
Voyager assessment visualisation in yugabyted UI. Updates to the migrations screens - "Schema Migrate page" to better capture the schema issues, and "Data Migrations UX" to readily provide voyager commands to users.
Disk full scenarios. Fail writes on nodes, if the free disk space on the nodes becomes low.
yb_make_next_ddl_statement_nonincrementing configuration parameter to reduce catalog version increments during many consecutive DDLs, lowering memory and latency spikes. {{<issue 23786>}}system_schema.functions and system_schema.aggregates to align with Cassandra, aiding Cortex migration. {{<issue 3893>}}GetFlagInfos relocation. {{<issue 23632>}}emergency_repair_mode flag and yb-admin commands dump_sys_catalog_entries and write_sys_catalog_entry to address CatalogEntity data corruption issues. {{<issue 23098>}}max_disk_throughput_mbps for automated control of write rejections when disk is full, replacing reject_writes_min_disk_space_aggressive_check_mb. {{<issue 23373>}}gflag_allowlist.txt for secure call home data collection, plus version_info in TServer data. {{<issue 24103>}}RemoveUserTableFromCDCSDKStream and RemoveTablesFromCDCSDKStream RPCs respectively. This change utilizes a background thread to enhance user table deletion while preserving data consistency. {{<issue 23700>}}wal_level checks for logical replication in YSQL as PG WAL is not used. {{<issue 23661>}}wal_level to logical to ensure compatibility with logical replication clients. {{<issue 23661>}}yugabyted configure_read_replica commands with checks to gracefully handle failures when data_placement_constraint lacks :<num_of_replicas>. {{<issue 23273>}}DeleteTableInternal, preventing YbAdminSnapshotScheduleTest.SysCatalogRetention failure on asan builds. {{<issue 23459>}}statementType enum on the YSQL Metrics endpoint. {{<issue 23557>}}Storage Read Requests metric now better reflects true RPC count in PrecastRequestSender usage. {{<issue 23396>}},{{<issue 18785>}}relkind column. {{<issue 23708>}}shared_ptr::unique to resolve compilation errors on macOS. {{<issue 24012>}}ALTER TABLE commands to avoid schema version mismatch errors in the same session. {{<issue 23882>}}TEST_check_catalog_version_overflow that can detect and prevent catalog version overflow issues. {{<issue 24021>}}ysql_enable_db_catalog_version_mode flag functionality. {{<issue 23462>}}join flag by implementing a retry mechanism. {{<issue 23898>}}narrow_cast. {{<issue 22301>}}CoarseMonoClock to MonoClock for precise nanosecond granularity. {{<issue 20335>}}close_timestamp_micros field for partially copied log segments to prevent time-based policy violation. {{<issue 23335>}}secure enabled by introducing a timeout framework. {{<issue 23447>}}validate_and_set_configs step. {{<issue 23629>}}SchemaDetailsMap during concurrent GetChanges calls. {{<issue 23394>}},{{<issue 22962>}}UpdateCheckpointForTabletEntriesInCDCState method. {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}calculate_table_size, now matching YBCGetDatabaseOid(rel) for improved reliability. {{<issue 20030>}}Build: 2024.1.2.0-b77
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.2.0-b77
Semi-automatic transactional xCluster setup. Provides operationally simpler setup and management of YSQL transactional xCluster replication, as well as simpler steps for performing DDL changes. {{<tags/feature/ea idea="1186">}}
Kubernetes readiness probe. Added readiness probes for TServer and Master pods in YugabyteDB, supporting custom or default configurations, thereby enhancing stability by ensuring YSQL/YCQL and YB-Master pods are ready before traffic is routed. {{<tags/feature/ea>}}
yugabyted
Voyager assessment visualisation in yugabyted UI. Yugabyted UI provides a dashboard to allow the users to effectively plan the migrations based on the complexity and also be able to monitor the progress of each migration <!-- IDEA-1075 -->
Backup/restore support with TLS enabled. In secure mode, yugabyted cluster supports taking full backup/restores. {{<tags/feature/ea>}}
xCluster support. yugabyted enables native support for setting up xCluster between two yugabyted deployed clusters. {{<tags/feature/ea>}}
ConsistentReadPoint using a new Momento class. {{<issue 22597>}}enable_rwc_lock_debugging to control slow lock debugging and fixes a bug in rwc_lock.cc. {{<issue 22807>}}collect_logs command failures by removing the yugabyted running check even when the yugabyted process is not running. {{<issue 23210>}}upgrade_finalize command for easy YugabyteDB version upgrades using yugabyted CLI and includes an upgrade_ysql_timeout flag. {{<issue 21888>}}yugabyted configure_read_replica commands with checks to gracefully handle failures when data_placement_constraint lacks :<num_of_replicas>. {{<issue 23273>}}reltuples, pg_statistic rows, and pg_statistic_ext values. {{<issue 22028>}}ysql_yb_enable_replication_commands flag is false. {{<issue 23096>}}secure mode enabled by adding a timeout framework. {{<issue 23447>}}DeleteSnapshot and RestoreSnapshot to prevent deletion or use of snapshots involved in ongoing processes. {{<issue 23055>}}unexpected leader fatal errors by updating cached leader terms immediately after a leader change. {{<issue 21808>}}INSERT INTO ...RETURNS STATUS AS ROW for CQL tables with a specific primary key, improving system load and efficiency. {{<issue 23330>}}cdcsdk_enable_identification_of_non_eligible_tables and three yb-admin commands to manage tables in CDC stream, enhancing control and reducing unnecessary resource usage. {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}0 or a random time as the server's system clock in XLogData from the logical replication stream. {{<issue 22929>}}Build: 2024.1.1.0-b137
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.1.0-b137
PostgreSQL Logical Replication Protocol Support {{<tags/feature/ea idea="805">}}
We're excited to announce in the 2024.1.1.0 release support for the PostgreSQL Logical Replication Protocol for Change Data Capture (CDC), in addition to the existing native gRPC Replication protocol. This feature allows you to manage CDC streams using Publications and Replication Slots, similar to native PostgreSQL. Additionally, a new connector is introduced that utilizes the logical replication protocol to consume the CDC streams via Replication slots.
For more information, refer to logical replication protocol. <!-- IDEA-805 -->
Automated SQL/CQL Shell binary. Along with full binary, added separate downloadable SQL/CQL Shell binary. <!-- IDEA-1526 -->
Voyager assessment visualisation in yugabyted UI. Yugabyted UI provides a dashboard to allow the users to effectively plan the migrations based on the complexity and also be able to monitor the progress of each migration <!-- IDEA-1075 --> {{<tags/feature/tp idea="IDEA-1075">}}
keep_order field from YbctidGenerator for cleaner results processing. {{<issue 21944>}}track_stack_traces flag. {{<issue 17993>}}SCHECK_PB_FIELDS_NOT_EMPTY macro for validating non-empty fields, with individual checks on list elements. {{<issue 22182>}}SOURCE_UNREACHABLE and SYSTEM_ERROR enums to enable more detailed error reporting from the Poller. {{<issue 22996>}}SOURCE_UNREACHABLE and SYSTEM_ERROR enums to enable more detailed error reporting from the Poller. {{<issue 22996>}}Hidden state in Master/Tserver Tables UI by shifting its position more prominently to the State column. {{<issue 22521>}}yb_enable_cdc_consistent_snapshot_streams from a preview into a default true auto flag. {{<issue 22984>}}ysql_yb_default_replica_identity, for customizing default replica identity at table creation. {{<issue 22326>}}cdcsdk_enable_dynamic_table_addition flag to manage dynamic table additions in replication slot consumption model. {{<issue 22406>}}additional_data_dir configuration. {{<issue 22126>}}hash_destroy call in YbCleanupTupleCache. {{<issue 22262>}}yb_get_range_split_clause robust using PG TRY CATCH block, ensuring YB backup doesn't fail. {{<issue 22356>}}PgCatalogVersionTest.SqlCrossDBLoadWithDDL in tsan/asan build to prevent timeouts. {{<issue 22475>}}TRUNCATE with DELETE FROM in TestPgTransparentRestarts, enhancing its stability and reducing flakiness. {{<issue 22522>}}CreateNamespaceIfNotExists function to retry on "already exists" error, preventing race conditions. {{<issue 22512>}}Catalocustomeranager::WaitForDdlVerificationToFinish for clarity. {{<issue 22649>}}system_postgres by excluding reserved OID 65535 in allocation. {{<issue 22598>}}IN expressions on single column from wrongly taking the tuple path, ensuring correct data processing. {{<issue 22704>}}ALTER TABLE ...ATTACH PARTITION. {{<issue 22562>}}kGroupEnd marker that was leading to inaccurate seek results. {{<issue 22615>}}YsqlDdlTxnCompleteCallback if all table 'pb_txn_id's in the DDL transaction verifier state are already cleared, avoiding potential deadlock situations in DDL atomicity. {{<issue 22882>}}tserver_heartbeat_metrics_interval_ms runtime updatable. {{<issue 22624>}}ysql_skip_row_lock_for_update to an auto-flag to resolve compatibility issues during upgrade, preventing incorrect DB record creations that can affect row visibility and integrity. {{<issue 22057>}}pg_locks query failure due to missing host node UUID in distributed transactions. {{<issue 22181>}}ACTIVE does not occur. {{<issue 22601>}}enable_cleanup_of_non_eligible_tables_from_cdcsdk_stream and limits processing to two non-eligible tables per namespace per run with cdcsdk_table_processing_limit_per_run. Introduces three yb-admin commands for managing CDC streams. {{<issue 22876>}},{{<issue 22835>}},{{<issue 22773>}}0 or a random time as the server's system clock in XLogData from the logical replication stream. {{<issue 22929>}}BEGIN record when no DML records are added, preventing potential virtual WAL crashes. {{<issue 21646>}}Build: 2024.1.0.0-b129
Third-party licenses: YugabyteDB, YugabyteDB Anywhere
Docker:
docker pull yugabytedb/yugabyte:2024.1.0.0-b129
Enhanced Postgres Compatibility Mode {{<tags/feature/ea>}}
We're pleased to announce the early access of the new Enhanced Postgres Compatibility Mode in the 2024.1.0.0 release. This mode enables you to take advantage of many new improvements in both PostgreSQL compatibility and performance parity, making it even easier to lift and shift your applications from PostgreSQL to YugabyteDB. When this mode is turned on, YugabyteDB uses the Read-Committed isolation mode, the Wait-on-Conflict concurrency mode for predictable P99 latencies, and the new Cost Based Optimizer {{<tags/feature/ea>}} that takes advantage of the distributed storage layer architecture and includes query pushdowns, LSM indexes, and batched nested loop joins to offer PostgreSQL-like performance.
Rollback after upgrade
Rolling back to the pre-upgrade version if you're not satisfied with the upgraded version is now {{<tags/feature/ga>}}. Refer to the Rollback phase for more information.
DocDB Availability
Batched nested loop joins. A join execution strategy that is an improvement on Nested Loop joins that sends one request to the inner table per batch of outer table tuples instead of once per individual outer table tuple.
Tablet splitting on range-sharded tables. Optimized the tablet split thresholds to speed up data ingestion.
Catalog Caching. Reduce master requests during PostgreSQL system catalog refresh by populating YB-TServer catalog cache. {{<tags/feature/ea>}}
Catalog Caching. Use TOAST compression to reduce PG catalog cache memory. Compressed catalog tuples when storing in the PG catalog cache to reduce the memory consumption. {{<tags/feature/ea>}}
Index backfill stability improvements. Ensure timely notification to all nodes and PostgreSQL backends before initiating index backfill to prevent missing entries during index creation.
Support for CDC with atomic DDL. In case of DDL being rolled back, CDC will not send records with rolled back schema.
Wait-On Conflict Concurrency Control. Cross-tablet fairness in resuming "waiters". Resume waiters in a consistent order across tablets, when a set of transactions simultaneously wait on more than one intent/lock on various tablets.
YSQL
Tablet limits. Depending on the available nodes and resources such as memory and CPU, YugabyteDB can automatically limit the total number of tables that can be created to ensure that the system can be stable and performant.
Truncate support with PITR. The TRUNCATE command is now allowed for databases with PITR enabled.
DocDB memory tracking enhancements. Memory tracking in DocDB to account for 90% of memory used.
Enhanced Explain Analyze output. Explain Analyze when used with DIST option will also show the rows read from the storage layer, which can help diagnosing the query performance.
Upgrade OpenSSL to 3.0.8 from 1.1.1. OpenSSL 1.1.1 is out of support. This feature upgrades YugabyteDB to FIPS compliant OpenSSL version 3.0.8.
log_ysql_catalog_versions flag. {{<issue 20084>}}ysql_yb_enable_ddl_atomicity_infra to control DDL atomicity feature during the upgrade phase. {{<issue 21535>}}yb_active_universe_history table. {{<issue 20616>}}yb_enable_parallel_append to disable the unannounced feature parallel append. {{<issue 21934>}}ysql_yb_ddl_rollback_enabled, report_ysql_ddl_txn_status_to_master, and ysql_ddl_transaction_wait_for_ddl_verification flags' defaults. {{<issue 22097>}}ycql_suppress_group_by_error available for compatibility issues. {{<issue 13956>}}allowed_preview_flags_csv. {{<issue 21484>}}Catalocustomeranager to XClusterSourceManager for easier management. {{<issue 21325>}}AreNodesSafeToTakeDown to return earlier and deliver a readable error message when hitting a timeout, using a control flag, are_nodes_safe_to_take_down_timeout_buffer_ms with a default setting of 2 seconds. {{<issue 21855>}}skip_producer_stream_deletion is set on DeleteUniverseReplicationRequestPB. Safe for upgrades and rollbacks. {{<issue 22050>}}FLAGS_tablet_split_min_size_ratio to control tablet splitting based on SST file sizes, ensuring better control over tablet size imbalance. {{<issue 21458>}}cdcsdk_publication_list_refresh_interval_secs flag. {{<issue 21796>}}yb_enable_read_committed_isolation and ysql_enable_read_request_caching on yb-master and yb-tserver processes. {{<issue 22061>}}catalog_version_table_in_perdb_mode is set to true. {{<issue 21481>}}ddl_rollback_enabled to yb_ddl_rollback_enabled for specificity. {{<issue 21480>}}defGetBoolean function to parse string values "0" and "1" as false and true respectively, and shifts a verification step to a earlier spot in the CREATE TABLE execution path, ensuring successful table partition creation. {{<issue 20302>}},{{<issue 20914>}}yb_enable_optimizer_statistics as a flag ysql_yb_enable_optimizer_statistics. {{<issue 21650>}}enable_pg_savepoints flag to prevent irregular system behaviour. {{<issue 20918>}}YbGetOrdinaryColumnsNeedingPgRecheck condition to align with the ybIsTupMismatch implementation, ensuring Postgres rechecks index conditions when the "preliminary check" is skipped due to an invalid target key attnum. {{<issue 21451>}}schema version mismatch errors during consecutive DDL operations by ensuring the up-to-date schema is fetched. {{<issue 21706>}}YsqlDdlRollbackEnabled in pggate C++ code by correctly passing the result of YbDdlRollbackEnabled, reducing DDL atomicity g-flag issues in RF 1 clusters. {{<issue 21706>}}RowCompareExpressions correctly enforce non-null column references, rectifying previous behavior and enhancing data accuracy. {{<issue 21847>}}yb_enable_ddl_atomicity_infra description. {{<issue 21947>}}ysql_min_new_version_ignored_count to prevent a TServer crash caused by the downward shift in yb-master's catalog version, often surfacing post a PITR restore operation. {{<issue 21776>}}YB_AT_REWRITE_ALTER_PRIMARY_KEY to prevent flag clashes and accommodate future upstream PG flags. {{<issue 22086>}}pg_locks with the correct table OID after a table rewrite. {{<issue 22081>}}pg_yb_catalog_version when enable_ysql=false. {{<issue 22213>}}Create Table operation fails if Alter Replication encounters an error, enhancing the reliability of replication setup. {{<issue 21732>}}ysql_skip_row_lock_for_update to an auto-flag to resolve compatibility issues during upgrade, preventing incorrect DB record creations that can affect row visibility and integrity. {{<issue 22057>}}min_secustomerent_size_to_rollover_at_flush for clarity. {{<issue 21691>}}enable_automatic_tablet_splitting flag from kLocalPersisted (class 2) to kExternal (class 4) to eliminate setup issues with xCluster configurations. {{<issue 22088>}}2.23.0.0-b37-arm. {{<issue 21648>}}TserverXClusterContext. {{<issue 21245>}}boost::regex_match. {{<issue 21585>}}PollTransactionStatusBase during shutdown to prevent unexpected process termination. {{<issue 21773>}}tablet_peer objects using the = operator, preventing unintentional destruction of underlying objects. {{<issue 22007>}}skip_table_tombstone_check for colocated tables to prevent errors. {{<issue 22115>}}prev_op to UNKNOWN to prevent AlmaLinux 8 fastdebug gcc11 compilation failures. {{<issue 21811>}}min_running_ht initialization until after the successful completion of tablet bootstrap to prevent unexpected behaviors. {{<issue 22099>}}pg_locks query failure due to missing host node UUID in distributed transactions. {{<issue 22181>}}ProbeTransactionDeadlock RPCs. {{<issue 22426>}}RollbackToSubTransaction RPC to local TServer if not needed, and enhances debugging of the ListReplicationSlots function. {{<issue 21780>}},{{<issue 21519>}},{{<issue 21652>}}ysql_TEST_enable_replication_slot_consumption. {{<issue 20725>}}cached_schema_details when executing a new GetChanges request if the client indicates a necessity for the schema. {{<issue 20698>}}