Last week in scylladb.git master (issue #200; 2023-10-08)

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

There were 139 non-merge commits from 14 authors in that period. Some notable commits:

The native implementation of nodetool supports many more commands. Note it’s not yet part of regular nodetool invocation.

Tablets are a new, experimental method of distributing data in a ScyllaDB cluster. With tablets, data movement is decoupled from node bootstrap and decommissioning. When a tablet is migrated, its sstables will now be automatically cleaned up on the source node.

The log-structured allocator (LSA) will evict cache if a query fails because it needs more memory, and retry it. On the other hand, the reader concurrency semaphore will simulate an allocation failure to a query if it detects the system is under severe memory pressure. The two mechanisms work against each other, as we’ll simulate an allocation failure in order to terminate a query, but LSA will respond by retrying it. To avoid this, LSA will now detect the simulated allocation failure and let the query be terminated.

A map<ascii, something> value, when parsed from its JSON representation, did not parse the key correctly. This is now fixed.

If a QUORUM (or higher) read detects a mismatch between data from different replica, it starts a process of reconciliation to bring all replicas to the same state. Previously, this did not work well when at least on replica had a large prefix of tombstones, as we would read all of them into memory. Now, we are able to incrementally process sections of the data, even if they are all tombstones.

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