From d95480255dfcf05b452192e09d5f7dd28e1e6712 Mon Sep 17 00:00:00 2001 From: Autumn McKee Date: Tue, 4 Aug 2026 09:10:12 +0200 Subject: [PATCH] Add MessageContext message discarding Allow exception teardown paths to discard pending output messages without asserting that they were sent. --- Framework/Core/include/Framework/MessageContext.h | 5 +++++ Framework/Core/src/MessageContext.cxx | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/Framework/Core/include/Framework/MessageContext.h b/Framework/Core/include/Framework/MessageContext.h index 407bac0ceb00a..fce4b109a465e 100644 --- a/Framework/Core/include/Framework/MessageContext.h +++ b/Framework/Core/include/Framework/MessageContext.h @@ -466,6 +466,11 @@ class MessageContext /// discarded. void clear(); + /// Discard pending output messages without asserting that they were sent. This + /// is intended for exception teardown paths where normal post-processing will + /// not run. + void discard(); + FairMQDeviceProxy& proxy() { return mProxy; diff --git a/Framework/Core/src/MessageContext.cxx b/Framework/Core/src/MessageContext.cxx index 59dfc15837210..81bb3c7bb95c4 100644 --- a/Framework/Core/src/MessageContext.cxx +++ b/Framework/Core/src/MessageContext.cxx @@ -107,6 +107,13 @@ void MessageContext::clear() mMessages.clear(); } +void MessageContext::discard() +{ + mDidDispatch = false; + mScheduledMessages.clear(); + mMessages.clear(); +} + int64_t MessageContext::addToCache(std::unique_ptr& toCache) { auto&& cached = toCache->GetTransport()->CreateMessage();