-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
-
None
@michaelcahill, this change builds on the page-leaf-cell branch. I believe that now that reconciliation does page locking so compaction doesn't race when looking at page modification structures, it's possible to do compaction in a single-pass: set the compaction-in-progress flag and make sure we don't race with eviction or checkpoints. Obviously, that has a couple of advantages, it's going to be faster for big cache data sets, and we don't have to turn off eviction of the file while we're reviewing the in-memory pages.
I've put it on a separate branch because I'm not 100% sure that what I'm doing with eviction is OK – it looks right to me, but I'm prepared to find out I've forgotten about something and this can't work.