[RELEASE] ScyllaDB 2026.1.10

[RELEASE] ScyllaDB 2026.1.10

The ScyllaDB team is pleased to announce the release of ScyllaDB 2026.1.10, a production-ready patch release for ScyllaDB 2026.1 Long Term Support (LTS) Release.

More information on ScyllaDB Version Support Policy is available here.

Related Links

Bug Fixes

The following issues are fixed in this release.

Core

  • The bytes_ostream move constructor now updates the first chunk’s back-reference pointer after moving the buffer, restoring the back-reference invariant that multi_chunk_blob_storage relies on. Previously, a moved-from bytes_ostream left a dangling pointer to the original object, which would corrupt the heap if the stale back-reference were ever dereferenced. There is no known production impact, since bytes_ostream operates exclusively in the standard allocator context and its back-reference is never dereferenced through the bytes_ostream API, but the invariant violation is now fixed. scylladb#30734

Docker

  • The Docker image build now passes --nobest to microdnf update for the ubi9-minimal base image. Previously, when the UBI9 base image carried a glibc/glibc-common/glibc-minimal-langpack set that lagged behind the live ubi-9-baseos-rpms mirror, the package solver could not reconcile the atomic three-package glibc swap and aborted the transaction, deterministically breaking the release container build. Relaxing best-candidate selection lets the solver route around the conflict. scylladb#30853

Lightweight Transactions (LWT)

  • Column mappings are now migrated together with a tablet. After streaming completes, the destination node requests the scylla_table_schema_history partition from each source replica and applies it locally. Previously, the destination node could lack column mappings for schema versions referenced in the transferred Paxos state, resulting in Failed to look up column mapping errors on subsequent LWT operations against the migrated tablet. The sync is skipped for intranode migrations, where the history is already local, and is gated behind a cluster feature for rolling-upgrade safety. scylladb#30839

  • The Paxos response handler now holds a plain effective replication map (ERM) for the duration of a request, instead of a token metadata guard that can automatically switch to a newer ERM. Previously, on tablet-based tables, an unrelated tablet change could refresh the ERM mid-request; because Paxos sends topology-version-fenced RPCs across multiple phases, the fencing token could change and delayed RPCs were then rejected as stale. The topology version now stays stable for the whole request. scylladb#30889

Materialized Views (MV)

  • The view building worker now records the list of views for which the flushed SSTables contain all required data before performing the base table flush, and updates the flushed-views list with that recorded set afterwards. Previously, the list was recorded after the flush, so a view created immediately after a flush could be marked as covered by SSTables that do not contain a write performed in between. That write generated no view update for the new view — it was neither in the SSTables used for view building nor covered at write time, because the view did not yet exist — leaving the view missing data. scylladb#30773

Raft

  • The group 0 history GC duration is reduced from one week to one hour, and the classification of inconclusive add_entry() outcomes is tightened accordingly. system.group0_history grows with every group 0 command, including topology commands, so clusters that scale in and out frequently could accumulate hundreds of megabytes of history. That later broke snapshot transfer to a joining node, as the read exceeded max_memory_for_unlimited_query_hard_limit or the write exceeded half of schema_commitlog_segment_size_in_mb. At peak churn, the retained history drops from roughly 6 million rows to roughly 36 thousand. The one-hour window still covers 60× the group0_raft_op_timeout_in_ms round trip bounding any valid in-flight add_entry call. scylladb#30806, scylladb#28082

Service Levels

  • Service level self-healing now waits for all replicas to become alive before migrating service level state to v2. Previously, the migration read system_distributed at CL=ALL and could fail during startup when a replica was unavailable. scylladb#30869

SSTables

  • The trie writer now handles a failed aligned allocation gracefully instead of writing through the returned null pointer. Previously, an unchecked allocation failure caused the writer to segfault. This can only occur when the shard is already out of memory. scylladb#30884

Tablets

  • Removing the last node in a DC or rack that is still referenced by a tablet-replicated keyspace is now rejected with a clear error. The RF-rack keyspace validation throws std::invalid_argument when the operation would eliminate a DC or rack still used by the replication strategy. Previously, decommission or removenode in this situation triggered an internal error assertion instead of a comprehensible rejection. Adjusting the keyspace replication with ALTER KEYSPACE and retrying now works as expected. scylladb#30733

Vector Search

  • ANN requests now distinguish between the two cases behind an HTTP 503 response from a vector store node. A 503 carrying {"reason":"INDEX_BUILDING"} is still forwarded to the client, as the node is serving and only the index is being built, while {"reason":"NODE_BOOTSTRAPPING"} is treated as a failure and the request is retried on another node. Previously, every 503 was forwarded to the client as a regular response, so requests could be sent indefinitely to a bootstrapping node that was not yet ready to serve them. For backward compatibility, a 503 body that is not a valid JSON object is still forwarded to the client. scylladb#30906

ScyllaDB Machine Image

  • Network bandwidth estimation is corrected for OCI flex instances. Previously, the OCPU-based computation used for flex shapes was overwritten, producing a streaming limit that was far too low and slowing down backup and restore operations. scylla-machine-image#989