The lookaside table cursors are not operating at isolation level WT_ISO_READ_UNCOMMITTED as intended.
Ticket WT-3891 in February of 2018 included [commit f74fd95|https://github.com/wiredtiger/wiredtiger/pull/3920/commits/f74fd951dac3efcd8b866314d734196a07c77f6f].
That commit changed the previous code:
WT_RET(__wt_txn_begin(las_session, NULL)); las_session->txn.isolation = WT_ISO_READ_UNCOMMITTED;
to:
static void__las_set_read_uncommitted(
WT_SESSION_IMPL *session, WT_TXN_ISOLATION *saved_isolationp)
{
*saved_isolationp = session->txn.isolation;
session->txn.isolation = WT_ISO_READ_UNCOMMITTED;
}
...
__las_set_read_uncommitted(las_session, &saved_isolation); WT_ERR(__wt_txn_begin(las_session, NULL));
However, the __wt_txn_begin() function blindly sets the isolation level:
static inline int __wt_txn_begin(WT_SESSION_IMPL *session, const char *cfg[]) { WT_TXN *txn; txn = &session->txn; txn->isolation = session->isolation; ...
so the change had the effect of changing all LAS operations to operate at the isolation of the underlying WT_SESSION handle, not WT_ISO_READ_UNCOMMITTED as intended.
Summary:
Fix a bug where lookaside table cursors were not operating at isolation level WT_ISO_READ_UNCOMMITTED as intended.