diff options
author | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-05-01 10:33:07 +1000 |
---|---|---|
committer | Michael Cahill <michael.cahill@wiredtiger.com> | 2014-05-01 10:33:07 +1000 |
commit | 1f41315000899b1b7a61b2b643d0ca6d598bef6a (patch) | |
tree | c91ecfcd8cf06a8ecbf896993c08c41d7be32eb7 /src/include/txn.i | |
parent | 8acad988f613f73019d65e8fd688312bee82eadb (diff) | |
download | mongo-1f41315000899b1b7a61b2b643d0ca6d598bef6a.tar.gz |
Don't cache the TXN_OLDEST flag: we don't check repeatedly.
Diffstat (limited to 'src/include/txn.i')
-rw-r--r-- | src/include/txn.i | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/include/txn.i b/src/include/txn.i index 5eeb6fbddeb..6450bb04051 100644 --- a/src/include/txn.i +++ b/src/include/txn.i @@ -369,32 +369,23 @@ __wt_txn_am_oldest(WT_SESSION_IMPL *session) WT_TXN *txn; WT_TXN_GLOBAL *txn_global; WT_TXN_STATE *s; - uint64_t id, my_id; + uint64_t id; uint32_t i, session_cnt; - /* Cache the result: if we're the oldest, don't keep checking. */ - txn = &session->txn; - if (F_ISSET(txn, TXN_OLDEST)) - return (1); - conn = S2C(session); + txn = &session->txn; txn_global = &conn->txn_global; - /* - * Use this slightly convoluted way to get our ID, in case session->txn - * has been hijacked for eviction. - */ - s = &txn_global->states[session->id]; - if ((my_id = s->id) == WT_TXN_NONE) + if (txn->id == WT_TXN_NONE) return (0); WT_ORDERED_READ(session_cnt, conn->session_cnt); for (i = 0, s = txn_global->states; i < session_cnt; i++, s++) - if ((id = s->id) != WT_TXN_NONE && TXNID_LT(id, my_id)) + if ((id = s->id) != WT_TXN_NONE && + TXNID_LT(id, txn->id)) return (0); - F_SET(txn, TXN_OLDEST); return (1); } |