If a compaction thread is removing the table with the smallest key,
meanwhile the other compaction threads are going to write some keys
that are supposed to go to the smallest table, there is a race
condition which results in writing data to incorrect table. This
happens only when there are more than 3 levels and there are more than
2 compaction threads.
All compaction threads who want to write data in the same level should
hold a lock when they get the list of table for the given range.
It does not affect user threads, no performance impact.
If a compaction thread is removing the table with the smallest key, meanwhile the other compaction threads are going to write some keys that are supposed to go to the smallest table, there is a race condition which results in writing data to incorrect table. This happens only when there are more than 3 levels and there are more than 2 compaction threads.
All compaction threads who want to write data in the same level should hold a lock when they get the list of table for the given range.
It does not affect user threads, no performance impact.