@michaelcahill, I had a question I didn't want forget, so I'm opening an issue:
In __split_multi_inmem, we assign the first dirty transaction this way:
/* * We modified the page above, which will have set the first dirty * transaction to the last transaction current running. However, the * updates we installed may be older than that. Take the oldest active * transaction ID to make sure these updates are not skipped by a * checkpoint. */ page->modify->first_dirty_txn = S2C(session)->txn_global.oldest_id;
But in __wt_split_insert we do it this way:
/* * We modified the page above, which will have set the first dirty * transaction to the last transaction current running. However, the * updates we are moving may be older than that: inherit the original * page's transaction ID. */ right->modify->first_dirty_txn = page->modify->first_dirty_txn;
We have the original page in __split_multi_inmem, should it be:
page->modify->first_dirty_txn = orig->modify->first_dirty_txn;