@michaelcahill, @agorrod:
I took a look at WT-1128, and I'd suggest using Alex's WT_SESSION_NO_CACHE_CHECK flag instead of the WT_READ_NO_GEN flag, that allows us to be more specific as to which threads should and should not be pulled into forced eviction. (For example, threads walking for compaction set WT_READ_NO_GEN in their tree-walk, but it seems to me they should be tasked with forced eviction.)
I check for threads we don't want to highjack for eviction (either the no-eviction flag is set on the session, or the thread is holding the schema lock) in two new places:
- the page release function (which was the focus of
WT-1128), and - the page acquire function (there's no point in releasing our reference just to find out we're not going to be able to forcibly evict the page anyway).
Are there any other places we should check?
@michaelcahill, I think this change is ready for merge if you approve of the approach.