summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/transaction_coordinator_catalog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s/transaction_coordinator_catalog.cpp')
-rw-r--r--src/mongo/db/s/transaction_coordinator_catalog.cpp16
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