The ScyllaDB team announces ScyllaDB 2025.1.15, a bug-fix production-ready patch release for ScyllaDB 2025.1 LTS Release.
Note there is a new Long Term Support (LTS) release 2026.1. You are welcome to upgrade to it for the latest and greatest features.
More information on ScyllaDB Version Support Policy is available here.
Related Links
Bug Fixes
The following issues are fixed in this release.
Alternator
- A schema change during
DeleteTablewas previously performed using thestorage_proxyof the shard handling the request rather than shard 0, where some table metadata lives exclusively. This could cause the delete to miss information tracked only on shard 0.executor::delete_tablenow consistently uses the shard-0storage_proxy, avoiding the discrepancy.
scylladb#27224
Compaction
-
The backlog tracker for a
compaction_groupcreated after table start – for example by tablet split, migration, or merge – was never registered with thecompaction_backlog_manager. As a result, its sstables did not contribute to the reported compaction backlog, which could lead the compaction controller to under-provision shares for that group. Backlog trackers created after start are now registered as well, so newly created compaction groups are correctly accounted for.
scylladb#31170 -
DESCRIBEoutput showedNullCompactionStrategyfor a table whose compaction was disabled via'enabled': 'false', because the reported strategy type came from a code path that returnsnullin that case.DESCRIBEnow reports the table’s actual configured compaction strategy, matching what is persisted to disk.
scylladb#29804
Materialized Views (MV)
- When the view update reader was already exhausted,
view_update_builder::on_results()stopped tracking existing range tombstones, so a row covered by such a tombstone could be treated as alive while generating the update and produce a spurious view row. The existing tombstone state is now kept up to date on this code path and applied to clustering rows before the update is generated, preventing the spurious rows.
scylladb#29481
Networking
lz4_dstream, used for RPC message decompression, did not always pass the exact decompressed block size expected by LZ4’s synchronized ring-buffer mode, which could occasionally corrupt decompressed results and surface as RPC compression checksum failures in production clusters. Decompression now uses a ring buffer sized so a block’s decompression cannot overwrite bytes needed for later blocks, removing the dependency on exact sizing.
scylladb#30994
Raft
-
raft::fsm’s internal_messagescontainer usedstd::vector, which could require oversized single allocations as message batches grew. It is now backed byutils::chunked_vector, which stores elements in bounded chunks, avoiding oversized allocations under heavy raft message load.
scylladb#30249 -
raft_group0_client::start_operationdid not correctly handle theuse_pre_raft_proceduresflag once it was set after group 0 startup had already begun, which could route an operation through the wrong procedure. The flag is now checked at the point the operation actually starts, ensuring the right procedure is used.
scylladb#28876 -
During shutdown, raft background fibers could hit expected exceptions (such as
gate_closed_exceptionor write timeouts) from services that were already stopping. These were logged as errors and reported through the generic background-error handler, which could affect otherwise benign teardown. Once the server has started aborting, such fiber failures are now logged at debug level and no longer reported as background errors.
scylladb#30376 -
trigger_stepdown’s targeted-stepdown handling read thegroup_idviaget_path_param, which always returns an empty value since the route defines no path placeholder, even though the presence check usedget_query_param. The handler now readsgroup_idconsistently viaget_query_param, so a targeted stepdown request is correctly recognized.
scylladb#30315
Reliability
- A stall report during a context switch could lead to a crash on aarch64 hosts, addressed upstream in Seastar. The bundled Seastar submodule is updated to include the fix. scylladb#31170
Repair
repair_tabletcould dereference a nullrepair_task_infowhen a tablet’s transition stage wasrepairand the corresponding repair request had been concurrently removed via the delete-repair-tablet-request API, leading to a node restart. A null check consistent with the surrounding validity checks now treats this case as a canceled request instead of dereferencing the null pointer.
scylladb#30416
Storage
-
evictable_reader’s buffer-overfill prevention logic did not correctly account for a new buffer starting with a new partition, which could allow a reader to re-emit already-emitted data. The check is now adjusted to handle the new-partition case, preventing the overfill.
scylladb#30474 -
stream_progress::advance()could trip an assertion (completed <= total) during tablet-aware restore, because per-tablet progress is accumulated from fractional contributions that can drift slightly past 1.0 due to floating-point rounding.completedis now clamped tototalinstead of asserting, absorbing the expected floating-point imprecision while still preventing progress from moving backward.
scylladb#30273
Tablets
-
group0’s command history was retained for up to a week before being garbage collected, which was longer than necessary for normal operation. The retention duration is reduced to one hour, lowering the associated storage overhead.
scylladb#30825 -
Tables participating in schema changes via group 0 were not guaranteed to have the schema commitlog enabled, and updates applied through
ensure_group0_schemawere not verified against this expectation.enable_schema_commitlogis now set for group 0 tables, and each group0 schema command asserts that the schema commitlog is in use, catching the condition early instead of relying on it implicitly.
scylladb#28876