Last week in scylladb.git master (issue #179; 2023-05-14)

This short report brings to light some interesting commits to scylladb.git master from the last week. Commits in the aba31ad06c…31e820e5a1 range are covered.

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

The object storage driver now supports object timestamps, needed for tombstone garbage collection compaction.

The build system now automatically compiles Rust and C++ user-defined functions into WebAssembly. Previously, the compiled wasm text was inlined into individual tests.

The installer now wipes filesystem signatures from the individual disks making up a RAID array, preventing problems with reuse of disks.

A corner case in replica-side concurrency control related to failed requests was fixed.

The sstable validation facility now validates the sstable index file (-Index.db).

The sstable validator now properly terminates its internal read-ahead, preventing a crash.

Raft remote procedure call (RPC) verbs now check that the call arrived at its intended recipient and not somewhere else.

During topology changes (adding and removing nodes), the system first reads from the old replica set while writing to both old and new replica sets, then switches to reading and writing from the new replica set. We are now prepared for an intermediate step (not yet used), where we write to both old and new replica set, while reading from the new replica set, to make the transition more robust.

User defined function permissions are now dropped when the keyspace containing them is dropped.

Permissions are now checked for a user-defined aggregate (UDA) that uses user-defined functions (UDFs).

The selector path (expressions in the SELECT clause) now use non-contiguous memory. This reduces latency when selecting large blobs, as non-contiguous memory doesn’t suffer from fragmentation.

Immediate mode tombstone garbage collection is a schema feature that requests tombstones to be garbage-collected immediately (without waiting for gc_grace_seconds), but it it ended up expiring TTLed data too early. This is now fixed.

When a node synchronizes the schema from another node, if Raft is in use, it will issue a read barrier first to make sure it’s not missing any keyspaces.

It’s now possible to disable and enable tombstone compaction on a per-node basis using a REST API endpoint. This is useful if the user knows that all DELETEs were performed with CL=ALL and so there is no risk of data resurrection.

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