Support for splitting tablet storage is added. Until now, tablet storage was composed of a single compaction group, i.e. a group of sstables eligible to be compacted together. For splitting, tablet storage can now be composed of multiple compaction groups, main, left and right. Main group stores sstables that require splitting, whereas left and right groups store sstables that were already split according to the tablet's token range. After table storage is put in splitting mode, new writes will only go to either left or right group, depending on the token. When all main groups completed splitting their sstables, then coordinator can proceed with tablet metadata changes. The coordination part is not implemented yet. Only the storage part. The former will come next and will be wired into the latter. Missing: - splitting monitor (verify whether coordinator asked for splitting and acts accordingly) (will come next) Closes scylladb/scylladb#16158 * github.com:scylladb/scylladb: replica: Introduce storage group splitting replica: Add storage_group::memtable_count() replica: Add compaction_group::empty() replica: Rename compaction_group_manager to storage_group_manager replica: Introduce concept of storage group compaction: Add splitting compaction task to manager compaction: Prepare rewrite_sstables_compaction_task_executor to be reused for splitting compaction: remove scrub-specific code from rewrite_sstables_compaction_task_executor replica: Allow uncompacted SSTables to be moved into a new set compaction: Add splitting compaction flat_mutation_reader: Allow interposer consumers to be stacked mutation_writer: Introduce token-group-based mutation segregator locator: Introduce tablet_map::get_tablet_id_and_range_side(token)
Scylla in-source tests.
For details on how to run the tests, see docs/dev/testing.md
Shared C++ utils, libraries are in lib/, for Python - pylib/
alternator - Python tests which connect to a single server and use the DynamoDB API unit, boost, raft - unit tests in C++ cql-pytest - Python tests which connect to a single server and use CQL topology* - tests that set up clusters and add/remove nodes cql - approval tests that use CQL and pre-recorded output rest_api - tests for Scylla REST API Port 9000 scylla-gdb - tests for scylla-gdb.py helper script nodetool - tests for C++ implementation of nodetool
If you can use an existing folder, consider adding your test to it. New folders should be used for new large categories/subsystems, or when the test environment is significantly different from some existing suite, e.g. you plan to start scylladb with different configuration, and you intend to add many tests and would like them to reuse an existing Scylla cluster (clusters can be reused for tests within the same folder).
To add a new folder, create a new directory, and then
copy & edit its suite.ini.