[RELEASE] ScyllaDB 2026.1.12

The ScyllaDB team is pleased to announce the release of ScyllaDB 2026.1.12, 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.

Alternator

  • A use-after-free could occur in the batch_write_item operation. The handler spawned a set of background fibers, each holding a reference to the request’s client_state object, and returned as soon as the first error was detected without waiting for the remaining fibers to complete. If the request’s client_state was destroyed before a still-running fiber resumed, that fiber could access already-freed memory. batch_write_item now waits for all spawned fibers to complete before returning, ensuring client_state remains valid for their entire lifetime.
    scylladb#31155

Compaction

  • Compaction backlog was under-reported for compaction groups created after a table started, for example due to tablet split, migration, or merge. This caused the compaction controller to under-provision resources for those groups, potentially delaying compaction work. Compaction groups now register their backlog tracker immediately upon creation, so their workload is correctly accounted for.
    scylladb#31187

CQL

  • Empty values of fixed-size CQL types (such as int, bigint, or timeuuid) are now correctly handled when used as clustering key components or nested inside frozen collections, tuples, or UDTs. Previously, such values could cause incorrect ordering, an internal error, or a garbage result. The fix aligns the encoding behavior with Cassandra.
    scylladb#31104

  • CQL bind variables used with the IN operator can now be given lowercase names, matching the naming rules used elsewhere in CQL.
    scylladb#31153

Networking

  • In rare cases, RPC stream decompression could produce corrupted data, surfacing as checksum failures on production clusters. The decompressor now uses a correctly sized buffer, eliminating the corruption.
    scylladb#31067

Encryption

  • When rewriting a single SSTable component (for example, when updating repaired_at in Statistics.db), the encryption layer now preserves the original encryption parameters from the SSTable’s metadata rather than deriving them from the current schema or node configuration. Previously, if the encryption settings had changed since the SSTable was originally written, the rewritten component could end up with different encryption parameters from the other components, rendering the SSTable unreadable.
    scylladb#31004

Storage

  • Object storage uploads and downloads did not correctly handle empty (zero-length) components. On writes, an empty upload sink produced no object at all, which could cause subsequent upload steps to fail. On reads, an empty object could not be read back due to an unsatisfiable byte-range request. Both cases are now handled correctly, so empty SStable components round-trip through object storage correctly.
    scylladb#31069

  • A race condition in S3 credential refresh could allow a request to be signed with stale or empty credentials while a credential reset was in progress. The server rejects such requests with a non-retryable error, causing the operation to fail rather than be retried. The credential refresh logic is now properly serialized, preventing this race..
    scylladb#31148