Last week in scylladb.git master (issue #177; 2023-04-30)

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

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

ScyllaDB currently decides on replica sets for each partition using vnodes. Vnodes can be agreed on by the cluster using eventual consistency, but the trade-off is that the replication decisions are very simple. We now have initial support for a new replication algorithm, tablets. Tablets allow each table to make different choices about how it is replicated and for those choices to change dynamically as the table grows and shrinks. Tablets require strong consistency from the control plane; this is provided by Raft. Tablets are experimental and currently lack many basic features.

ScyllaDB avoids allocating large contiguous memory buffers, as these stress the memory allocator. Instead, ScyllaDB uses fragmented buffers which are easier to allocate. However, most compression libraries do not work with fragmented buffers, so large linear buffers are sometimes necessary. ScyllaDB had a mechanism in place to reuse such buffers in order to avoid allocating them for every request, and here it is tightened so that reallocations are even less common. In addition its usage is corrected in sstables.

After a replacenode operation, if the new node had the same IP address as the node it was replacing, the IP address was not moved from pending state to normal state. This is now fixed.

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