This PR refactors the streaming subsystem to support direct download of fully contained sstables. Instead of streaming these files, they are downloaded and attached directly to their corresponding tables. This approach reduces overhead, simplifies logic, and improves efficiency. Expected node scope restore performance improvement: ~4 times faster in best case scenario when all sstables are fully contained. 1. Add storage options field to sstable Introduce a data member to store storage options, enabling distinction between local and object storage types. 2. Add method to create component source Extend the storage interface with a public method to create a data_source for any sstable component. 3. Inline streamer instance creation Remove make_sstable_streamer and inline its usage to allow different sets of arguments at call sites. 4. Skip streaming empty sstable sets Avoid unnecessary streaming calls when the sstable set is empty. 5. Enable direct download of contained sstables Replace streaming of fully contained sstables with direct download, attaching them to their corresponding table. Fixes: https://scylladb.atlassian.net/browse/SCYLLADB-200 Refs: https://github.com/scylladb/scylladb/issues/23908 No need to backport as this code targets 2026.2 release (for tablet-aware restore) Closes scylladb/scylladb#26834 * github.com:scylladb/scylladb: tests: reuse test_backup_broken_streaming streaming: enable direct download of contained sstables storage: add method to create component source streaming: keep sharded database reference on tablet_sstable_streamer streaming: skip streaming empty sstable sets streaming: inline streamer instance creation tests: fix incorrect backup/restore test flow
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++ cqlpy - 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.