Summary
Update the WiredTiger programming guide (and possibly relevant locations in API guide) to document the fact that WiredTiger expects that applications will not pause active transactions.
Motivation
WiredTiger's programming model, and in particular its cache management, assumes that when an application starts a transaction it will not pause arbitrarily in the middle of the transaction. Instead the preferred application behavior is for an application performing a transaction to make steady progress. I.e., the application should keep calling into WT to either add to or finish the transaction.
Application writes who don't realize that Wiredtiger works this way can write applications that suffer from long stalls that are hard to reason about. A common scenario is for the thread that owns the oldest transaction to not call into WiredTiger while other threads in WiredTiger block in eviction waiting for the oldest transaction to be rolled back.
We should provide some high-level guidance about this in the documentation.