[RELEASE] ScyllaDB 2026.3.1

The ScyllaDB team is pleased to announce the release of ScyllaDB 2026.3.1, a production-ready patch release for ScyllaDB 2026.3 Short Term Support (STS) Minor Feature Release.

More information on ScyllaDB Version Support Policy is available here.

Related Links

Bug Fixes

The following issues are fixed in this release.

Compaction

  • During a paged read of a partition that spans multiple pages, the per-page compaction statistics could miscount, causing the dead-partition count in page-statistics trace output to be reported as an incorrectly large number. This only affected the accuracy of trace statistics, not query results. Partitions continued from a previous page are now counted correctly, so page statistics are accurate.
    scylladb#31415

Logging

  • Session-closing was logged at a high verbosity level left over from an earlier investigation, adding noise to normal operation. The routine session-closing message has now been lowered to a less verbose level, while a warning is still emitted for sessions that stay open for more than 5 minutes.
    scylladb#31361

Repair

  • A user-requested repair over a token range that spanned several vnode ranges with different replica sets was only repaired against the replicas of the range’s last part, so replicas owning earlier parts of the range were left out. The repair was still recorded as complete in system.repair_history, which could allow repair-based tombstone garbage collection (tombstone_gc = {'mode': 'repair'}) to proceed on nodes that had not actually been repaired, risking data resurrection. Repair now splits the requested range along replica-set boundaries and records history only for sub-ranges that were fully repaired, so tombstone GC is gated on accurate information.
    scylladb#31395

Service Levels

  • When using LDAPRoleManager, ATTACH SERVICE LEVEL could report success even though the attachment was not actually applied, so the service level had no effect and could not be found afterward. Service level attachments under LDAPRoleManager are now stored and retrieved correctly.
    scylladb#31398

Stability

  • A rare internal race in the task-management code could, in unlucky timing, cause a node to use memory that had already been freed, potentially crashing the node. The affected object is now kept alive for the duration of the operation, preventing this.
    scylladb#31374

Storage

  • If an object storage endpoint was configured without a resolvable AWS region (no aws_region and no AWS_DEFAULT_REGION), the node could silently disable all of its object storage endpoints instead of only the misconfigured one. Each endpoint is now parsed independently: a misconfigured endpoint is rejected with a clear error naming the missing setting, while all valid endpoints keep working.
    scylladb#31412

  • The first write to a table backed by Google Cloud Storage (GCS) could fail because of an invalid request sent when finalizing an empty upload, which GCS rejects. Because every object-storage SStable begins with an empty marker object, this made GCS-backed keyspaces effectively unusable. Empty uploads are now finalized correctly, so GCS-backed tables work as expected.
    scylladb#31253

  • nodetool restore --sstables-file-list rejected an otherwise valid file list if it ended with a trailing newline, because the resulting empty line was treated as a file name. Empty lines are now ignored, so a trailing newline no longer prevents a restore from proceeding.
    scylladb#31407

  • After an SStable component was rewritten, the reported on-disk size of the SStable (sstable::bytes_on_disk()) could be inaccurate because it did not account for the original SStable’s size. On-disk size is now tracked correctly across component rewrites.
    scylladb#31454

Tablets

  • Restoring a table could leave a fixed (pinned) tablet count in place even when the table had no such setting before the restore, which prevented the table from splitting or merging tablets until the setting was changed manually. A restore now clears the tablet-count setting when the table did not have one, so a restored table’s tablet split/merge behavior matches its original state.
    scylladb#31434