mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-30 11:36:54 +00:00
When out-of-space prevention is activated, the compaction manager is drained and disabled. This caused resharding to silently succeed without actually processing any SSTables, because: 1. run_custom_job() calls start_compaction() which returns nullopt when is_disabled() is true, and run_custom_job() would just return immediately — appearing as a successful no-op. 2. reshard() used throw_if_stopping::no, so even within the compaction task executor, stopping would be silently swallowed rather than propagated as an exception. The SSTable loader interprets a successful return from resharding as "all SSTables processed", so it proceeds without error, leaving the unprocessed SSTables orphaned and their data missing from the table. Fix this with two changes: - run_custom_job(): when start_compaction() returns nullopt, check is_disabled() and throw via make_disabled_exception() rather than returning silently. This ensures callers are always informed when a job was skipped because compaction is disabled (e.g. due to disk space pressure), as opposed to a benign skip (e.g. table removed). - reshard(): change throw_if_stopping::no to throw_if_stopping::yes. Resharding is mandatory for correct SSTable loading — unlike reshape which is optional and can be safely skipped, resharding failure must be propagated to the caller so the loader does not proceed with incomplete data. Fixes https://scylladb.atlassian.net/browse/SCYLLADB-2085. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes scylladb/scylladb#30041