@@ -519,20 +519,34 @@ static UInt32 sd_OcCount;
519519static std::set<OperationContext*> sd_OC;
520520static std::map<OperationContext*, phase_number> sd_RunningOC;
521521
522- // Verify that administrative counters agree.
523- void CheckNumberOfRunningOCConsistency ()
522+ SizeT getNumberOfActivatedOrRunningOperations ()
524523{
525- MG_CHECK (!cs_ThreadMessing.try_lock ());
526-
527524 SizeT numberOfRunningOCs = 0 ;
528525 for (const auto & levelNumberPair : s_NrActivatedOrRunningOperations)
529526 numberOfRunningOCs += levelNumberPair.second ;
530527 MG_CHECK (numberOfRunningOCs == sd_RunningOC.size ());
531528
529+ return numberOfRunningOCs;
530+ }
531+
532+ SizeT GetNumberOfActivatedOrRunningOperations ()
533+ {
534+ leveled_critical_section::scoped_lock lockToAvoidHasMainThreadTasksToBeMissed (cs_ThreadMessing);
535+
536+ return getNumberOfActivatedOrRunningOperations ();
537+ }
538+
539+ // Verify that administrative counters agree.
540+ void CheckNumberOfRunningOCConsistency ()
541+ {
542+ MG_CHECK (!cs_ThreadMessing.try_lock ());
543+
544+ SizeT numberOfRunningOCs = getNumberOfActivatedOrRunningOperations ();
545+
532546 std::map<phase_number, RunningOperationsCounter> recount;
533547 for (const auto & runningPair : sd_RunningOC)
534548 {
535- MG_CHECK (runningPair.first ->m_PhaseNumber == runningPair.second );
549+ MG_CHECK (runningPair.first ->m_PhaseNumber == runningPair.second );
536550 ++recount[runningPair.second ];
537551 }
538552 for (const auto & recountPair : recount)
0 commit comments