Added FIXME regarding snapshots during compaction.
Use fair lock for checkpoints. Starvation was observed when another thread was attempting to run a checkpoint before a capturing a snapshot. The main checkpoint thread was under load and running continuously, and it acquired the lock immediately after releasing it.