Last week in scylladb.git master (issue #198; 2023-09-24)

This short report brings to light some interesting commits to scylladb.git master from the last week. Commits in the 4eb4ac4634…99d83808cc range are covered.

There were 124 non-merge commits from 16 authors in that period. Some notable commits:

A security vulnerability that allowed table permissions to be taken over by an unauthorized user has been fixed.

Without Raft-managed consistent schema, each node evolves its own schema and the cluster attempts to merge each node’s schema to produce a consistent outcome. To see if a consistent outcome was achieved, each node calculates a hash of its schema and then these hashes are compared. This is a fragile computation and sometimes leads to schema disagreement even though there is no real difference between nodes. This was carried over to raft-managed consistent schema, but now when Raft is enabled the leader will decree a schema version and other nodes will learn it from the leader. This should eliminate schema disagreement problems when Raft consistent schema is enabled.

Change Data Capture (CDC) funnels change information to a number of streams, which are dependent on current topology. As topology changes the streams change, and their identity is maintained in the CDC generations table. The table is now garbage-collected to remove old streams.

A reactor stall when creating CDC streams for large clusters has been fixed.

On startup, partially created sstables stored on object storage (e.g. S3) are now removed.

The S3 driver can now use temporary credentials.

The S3 driver now tracks its memory usage to avoid running out of memory.

We now abort running repairs on nodetool drain commands.

In consistent topology mode, the leader now prevents the previous leader from affecting the cluster before starting its own changes.

Off-strategy compaction is used to reshape sstables that weren’t created from memtable flushes or regular compaction, for example repair or bootstrap. It now uses incremental compaction for run-based compaction strategies (Leveled or Incremental compaction strategies), reducing temporary storage requirements.

A bug in the fromJson() CQL function when operating on NULL operands has been fixed.

Compaction strategy options are now validated earlier.

See you in the next issue of last week in scylladb.git master!