FASTER
FASTER copied to clipboard
[C++] Guard against empty compaction ranges
Previously, compaction could stall indefinitely if the provided until_address was equal to hlog.begin_address. This could occur, if called from an existing test when auto_compaction is false. In this case, pages_available remained permanently true, causing compaction threads to spin and preventing LightEpoch from draining pending GC callbacks (as reported in #944).
The changes in this PR ensure we validate the compaction range upfront (until_address > hlog.begin_address). If the range is invalid, we now skip compaction. When the call originates from the F2Kv class, a warning is logged before skipping.