[RELEASE] ScyllaDB 2025.1.4

The ScyllaDB team announces ScyllaDB 2025.1.4, a bug-fix production-ready patch release for ScyllaDB 2025.1 LTS Release.

Note there is a new Short Term Support (STS) Feature release 2025.2. You are welcome to upgrade to it for the latest and greatest features, or stay on the 2025.1 track for long term support.

Related Links

The following issues are fixed in this release:

Alternator

  • Alternator should hide or protect system tags it uses for TTL and provisioned throughput #24098
  • Alternator now automatically retries schema changes that can fail due to contention. #13152

Correctness

  • LWT: possible stale data read #24630. The issue is limited to rare cases where Replication Factor >= 4 , the most recent commit is stored (“learned”) only on one replica, other replicas must have failed to receive an update last time LWT was executed for this partition key.
  • A bug which could cause data resurrection in materialized views (but not in the base tables) due to mixing up purge times for regular tombstones and shadowable tombstones was fixed. #23272

Performance

  • chunked_managed_vector violates the preferred max contiguous allocation size #23854
  • Large allocation when converting a batch statement to a mutation for batchlog #24809
  • ScyllaDB now manages temporary memory for zstd inter-node compression, in order to reduce allocation stalls. #24160 #24183

Tablets

  • 2025.2] crash: “Compaction group of id 2 that belongs to keyspace_fill_db_data.only_pk_test2 was not disabled.” during handle_tablet_merge_completion() #23481. The root cause is deallocation of storage state in stage cleanup instead of end_migration
  • The process for merging tablets (which happens when a table’s size decreases) did not update the row cache about the merged sstables, causing some data to be missed during full scans. This is now fixed. #23313

Stability

  • Encryption at Rest: KMIP LOCATE operation request has incorrect attribute names #23970
    As a result the KMIP server rejected the request, leading ScyllaDB to assume that a key with these specifications doesn’t exist, and creates a new key in the KMIP server.

  • A race condition between the cleanup operation and snapshot operation was fixed. #23049

  • non-full row keys cause mis-parsing of sstables #24489

  • Avoid killing a node when reading from sstables #20845

  • Assertion `_mt._flushed_memory <= _mt.occupancy().total_space()’ failed during bulk ingestion #21413

  • Backport seastar fix for nested stack unwind crash #24464 seasstar fix: stall_detector: no backtrace if exception #2714

  • Core dump during node bootstrap accessing the mapping before it is initialized #24479

  • Potential data race in utils::alien_worker #24751

  • Don’t start maintenance auth service if not enabled #24528

  • Empty clustering keys generated and spread freely in the system #24506

  • A possible use-after-free during schema changes related to the sstable_set type was fixed #22040

  • Materialized views are now more robust during schema changes. The change removes the possibility of accessing an outdated schema that no longer exists or is incompatible with the view schema.
    #9059 #21292 #22194 #22410

  • Joining node enters synchronize state after joining group0, which races with streaming and causes join to fail #23536

  • paxos_response_handler timeout logging #24591

  • A bug which prevented column renames from being propagated to materialized views was fixed. #22194

  • repair: to_repair_rows_on_wire stalls destroying input list #24725

  • SSTable compaction fails due to Chunk count mismatch between CRC and Data.db #23728

  • user_functions_test.TestUserFunctions.test_restart AssertionError: Expected [[‘aaaaaaaaa’]] from … but got [[‘aaaa’]] #20662 root cause is race condition in the mapreduce_service