diff options
author | Alex Gorrod <alexg@wiredtiger.com> | 2014-10-27 11:04:17 +1100 |
---|---|---|
committer | Alex Gorrod <alexg@wiredtiger.com> | 2014-10-27 11:04:17 +1100 |
commit | ad7743846f5e9216400bef74a58c6d0cc1dd4570 (patch) | |
tree | 64cb4f31d1a390329f6410e32243ef4226c61173 /src/session/session_api.c | |
parent | 8d810882480c8f50d342a5aa9ada8693d32d7d43 (diff) | |
download | mongo-ad7743846f5e9216400bef74a58c6d0cc1dd4570.tar.gz |
Add a new WT_SESSION::transaction_range_pin method.
Can be used by applications to identify sessions that are keeping
transaction IDs pinned.
Diffstat (limited to 'src/session/session_api.c')
-rw-r--r-- | src/session/session_api.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/src/session/session_api.c b/src/session/session_api.c index 092bcad3f73..3fb1d444d9d 100644 --- a/src/session/session_api.c +++ b/src/session/session_api.c @@ -772,6 +772,30 @@ err: API_END_RET(session, ret); } /* + * __session_transaction_range_pin -- + * WT_SESSION->transaction_range_pin method. + */ +static int +__session_transaction_range_pin(WT_SESSION *wt_session, uint64_t *prange) +{ + WT_SESSION_IMPL *session; + WT_TXN_STATE *txn_state; + + session = (WT_SESSION_IMPL *)wt_session; + + *prange = 0; + txn_state = WT_SESSION_TXN_STATE(session); + if (txn_state->snap_min == 0 && txn_state->id == 0) + return (0); + + *prange = S2C(session)->txn_global.current - + WT_MIN(txn_state->snap_min, txn_state->id); + + return (0); + +} + +/* * __session_checkpoint -- * WT_SESSION->checkpoint method. */ @@ -916,7 +940,8 @@ __wt_open_session(WT_CONNECTION_IMPL *conn, __session_begin_transaction, __session_commit_transaction, __session_rollback_transaction, - __session_checkpoint + __session_checkpoint, + __session_transaction_range_pin }; WT_DECL_RET; WT_SESSION_IMPL *session, *session_ret; |