diff options
Diffstat (limited to 'src/mongo/db/s/transaction_coordinator_catalog.cpp')
-rw-r--r-- | src/mongo/db/s/transaction_coordinator_catalog.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/db/s/transaction_coordinator_catalog.cpp b/src/mongo/db/s/transaction_coordinator_catalog.cpp index 3cb7308a8bc..5a5c029833b 100644 --- a/src/mongo/db/s/transaction_coordinator_catalog.cpp +++ b/src/mongo/db/s/transaction_coordinator_catalog.cpp @@ -218,4 +218,20 @@ std::string TransactionCoordinatorCatalog::_toString(WithLock wl) const { return ss.str(); } +void TransactionCoordinatorCatalog::filter(FilterPredicate predicate, FilterVisitor visitor) { + stdx::lock_guard<stdx::mutex> lk(_mutex); + for (auto sessionIt = _coordinatorsBySession.begin(); sessionIt != _coordinatorsBySession.end(); + ++sessionIt) { + auto& lsid = sessionIt->first; + auto& coordinatorsByTxnNumber = sessionIt->second; + for (auto txnIt = coordinatorsByTxnNumber.begin(); txnIt != coordinatorsByTxnNumber.end(); + ++txnIt) { + auto txnNumber = txnIt->first; + auto& transactionCoordinator = txnIt->second; + if (predicate(lsid, txnNumber, transactionCoordinator)) { + visitor(lsid, txnNumber, transactionCoordinator); + } + } + } +} } // namespace mongo |