Last week in scylladb.git master (issue #208; 2023-12-10)

This short report brings to light some interesting commits to scylladb.git master from the last week. Commits in the 01e54f5b12…d62a5fc60b range are covered.

There were 146 non-merge commits from 18 authors in that period. Some notable commits:


Commitlog format has changed to individually checksum each disk sector. This allows discrimination between three types of sectors: those containing valid data, those corrupted, and those that contain data from a previous use of the commitlog segment file. This should reduce false-positive warnings about commitlog corruptions during replay. Note the format is not compatible with previous versions, so upgrades should flush memtables first.

Tablets are a new, experimental way of distributing data across the cluster. A table that uses tablets and has a materialized view will now correctly and consistently pair base-table tablets with corresponding view-table tablets, reducing chances for losing consistency compared to vnode-based tables.

When tablets are migrated to a different node, they will not prevent other tablets from initiating migration, increasing concurrency.

It’s now possible to use cmake to build ScyllaDB from the configure.py entry point.

The scylladb-kernel-conf package tunes the Linux kernel scheduler via sysfs to improve latency. These tunings were lost in Linux 5.13+ due to kernel changes. They are now restored.

ScyllaDB can store changes to its own metadata using a separate commitlog, to prevent it waiting for user data to commit. This separate commitlog is now mandatory.

There is now a script to assist in decoding UUID-based sstable generation numbers.

ScyllaDB detects internal stalls using a stall detector. It can do so using a timer, or using a more hardware performance counter, which can also track kernel stalls. It now sets up permissions for itself to use the performance counter.

The native nodetool implementation, scylla nodetool, now supports more commands: decommission, rebuild. removenode, logging level commands, move, and refresh. It is not yet used by default.


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