What is the intended lifetime of the tree handle now? It looks like it will get created on remove key, remove tree, store key, and accumulator delta inside of a transaction. It looks like _ignoreTransactions hould always mirror isTemporary but it is up to the caller. Maybe an assert inside of JournalManager#handleForTree() would be nice.
A couple of the checks for handle != 0 are also slightly confusing. We shouldn't have MVVs in a temporary tree (txns being ignored) so if we are pruning, we should always have a handle. Similarly, how could we get an index hole if they can't be shared across threads and aren't recovered?
The new test with the "upper bound" to avoid a checkpoint race. We already have a couple intermittent test failures, it would be nice to structure this so it is always deterministic.
What is the intended lifetime of the tree handle now? It looks like it will get created on remove key, remove tree, store key, and accumulator delta inside of a transaction. It looks like _ignoreTransactions hould always mirror isTemporary but it is up to the caller. Maybe an assert inside of JournalManager# handleForTree( ) would be nice.
A couple of the checks for handle != 0 are also slightly confusing. We shouldn't have MVVs in a temporary tree (txns being ignored) so if we are pruning, we should always have a handle. Similarly, how could we get an index hole if they can't be shared across threads and aren't recovered?
The new test with the "upper bound" to avoid a checkpoint race. We already have a couple intermittent test failures, it would be nice to structure this so it is always deterministic.