From 9814fd6145134b5c72e6881e355b8c28775afb0b Mon Sep 17 00:00:00 2001 From: AlexPeshkoff Date: Tue, 1 Mar 2022 18:14:13 +0300 Subject: [PATCH] Fixed #7139: With multiple trace sessions user may receive trace events related to engine's requests --- src/jrd/trace/TraceManager.cpp | 8 +++++++- src/jrd/trace/TraceManager.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/jrd/trace/TraceManager.cpp b/src/jrd/trace/TraceManager.cpp index 9d8e6a5e9e..58afdfe193 100644 --- a/src/jrd/trace/TraceManager.cpp +++ b/src/jrd/trace/TraceManager.cpp @@ -222,6 +222,8 @@ void TraceManager::update_sessions() } // add new sessions + new_needs = trace_needs; + trace_needs = 0; while (newSessions.hasData()) { TraceSession* s = newSessions.pop(); @@ -234,6 +236,10 @@ void TraceManager::update_sessions() { trace_needs = 0; } + else + { + trace_needs = new_needs; + } } void TraceManager::update_session(const TraceSession& session) @@ -344,7 +350,7 @@ void TraceManager::update_session(const TraceSession& session) sesInfo.ses_id = session.ses_id; trace_sessions.add(sesInfo); - trace_needs |= info->factory->trace_needs(); + new_needs |= info->factory->trace_needs(); } else if (status->getState() & IStatus::STATE_ERRORS) { diff --git a/src/jrd/trace/TraceManager.h b/src/jrd/trace/TraceManager.h index 0c581caa19..924ed7f18b 100644 --- a/src/jrd/trace/TraceManager.h +++ b/src/jrd/trace/TraceManager.h @@ -163,7 +163,7 @@ private: Attachment* attachment; Service* service; const char* filename; - NotificationNeeds trace_needs; + NotificationNeeds trace_needs, new_needs; // This structure should be POD-like to be stored in Array struct FactoryInfo