Two general comments not directly related to the code above:
The session::compact document page needs updating.  It currently says:
Compact a live row- or column-store btree (log-structured merge trees cannot be compacted). 

Also, it appears that there are a number of places where it may be interesting to add some stats.  Number of compact calls, number of times compact times out.  Maybe others...