summaryrefslogtreecommitdiff
path: root/dist/dist.py
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@mongodb.com>2017-09-01 01:13:49 -0400
committerAlex Gorrod <alexander.gorrod@mongodb.com>2017-10-03 13:38:35 +1100
commit2d781c8cfeb2a1db8bd93e03ba35b302436e4ff3 (patch)
tree825380696aa85a116066eea23a46bb671fbf159b /dist/dist.py
parent0831e04799544167ee88c5b4dbad07d922a47d4d (diff)
downloadmongodb-3.4.10.tar.gz
WT-3533 eviction handle walk can race with handle re-open (#3620)mongodb-3.4.10
* Change btree open to no longer clear WT_BTREE eviction fields, allowing WT_BTREE.evict_disabled to persist across an open. * Change the connection-level open code to disable eviction when opening (or re-opening) an underlying WT_BTREE handle. * Eviction is turned off by btree handle open in some cases, and then turned on when an key/value is inserted. Now that we're not clearing the WT_BTREE eviction fields when re-opening a file, we have to clean up that reference if we close without ever inserting an item. * When flushing pages from the cache as part of discarding a WT_BTREE handle, release our exclusive eviction access to the handle once done. This requires eviction check for a WT_BTREE root page that's not set, because the tree is gone after we release exclusive eviction access. This reverts parts of WT-3193 (3747a26), but we can no longer increment the eviction disabled counter knowing it will be zero'd out when the handle is re-opened. The alternative is to keep another counter here, and I think checking the root page is less fragile/ugly than that would be. Add a new flag WT_BTREE.evict_disabled_open that's set if we disable eviction during open, we have to clean up the eviction disabled counters for special handles during close (for example verify). Don't use WT_BTREE.original as a flag to clean up eviction disabled counters during close, it gets set too early in the process, long before we disable eviction. Use the new WT_BTREE.evict_disabled_open flag in all cases. (cherry picked from commit fe0851d5c2a99c5084314e7b33df4c5d9735c674)
Diffstat (limited to 'dist/dist.py')
0 files changed, 0 insertions, 0 deletions