summaryrefslogtreecommitdiff
path: root/src/include/txn.i
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2014-05-01 10:33:07 +1000
committerMichael Cahill <michael.cahill@wiredtiger.com>2014-05-01 10:33:07 +1000
commit1f41315000899b1b7a61b2b643d0ca6d598bef6a (patch)
treec91ecfcd8cf06a8ecbf896993c08c41d7be32eb7 /src/include/txn.i
parent8acad988f613f73019d65e8fd688312bee82eadb (diff)
downloadmongo-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.i19
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);
}