Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Compaction also needs to use allocate_non_transactional()
If we relocate the region tracker page during compaction and then the transaction aborts, the allocation of the new tracker page gets rolled back, but the free of the old tracker page doesn't! This leaves us in an inconsistent state with no tracker page allocated. So we need to use allocate_non_transactional() here, which guarantees the page will remain allocated even if the rest of the transaction rolls back.
- Loading branch information