mirror of
https://github.com/scylladb/scylladb.git
synced 2026-04-26 19:35:12 +00:00
Dtest triggers the problem by: 1) creating table with LCS 2) disabling regular compaction 3) writing a few sstables 4) running maintenance compaction, e.g. cleanup Once the maintenance compaction completes, disengaged optional _last_compacted_keys triggers an exception in notify_completion(). _last_compacted_keys is used by regular for its round-robin file picking policy. It stores the last compacted key for each level. Meaning it's irrelevant for any other compaction type. Regular compaction is responsible for initializing it when it runs for the first time to pick files. But with it disabled, notify_completion() will find it uninitialized, therefore resulting in bad_optional_access. To fix this, the procedure is skipped if _last_compacted_keys is disengaged. Regular compaction, once re-enabled, will be able to fill _last_compacted_keys by looking at metadata of the files. compaction_test.py::TestCompaction::test_disable_autocompaction_doesnt_ block_user_initiated_compactions[CLEANUP-LeveledCompactionStrategy] now passes. Fixes #10378. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes #10508