From 46e1b21c109338fcfd1f0418dfa30db4d02bfb67 Mon Sep 17 00:00:00 2001 From: lietava Date: Thu, 7 Mar 2024 15:41:00 +0100 Subject: [PATCH 1/2] dev: output size protection in ctp reco --- .../CTP/workflow/include/CTPWorkflow/RawDecoderSpec.h | 1 + Detectors/CTP/workflow/src/RawDecoderSpec.cxx | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Detectors/CTP/workflow/include/CTPWorkflow/RawDecoderSpec.h b/Detectors/CTP/workflow/include/CTPWorkflow/RawDecoderSpec.h index d583b68f80dd8..4933477467ba7 100644 --- a/Detectors/CTP/workflow/include/CTPWorkflow/RawDecoderSpec.h +++ b/Detectors/CTP/workflow/include/CTPWorkflow/RawDecoderSpec.h @@ -56,6 +56,7 @@ class RawDecoderSpec : public framework::Task // for digits bool mDoDigits = true; o2::pmr::vector mOutputDigits; + int mMaxOutputSize = 0; // for lumi bool mDoLumi = true; // diff --git a/Detectors/CTP/workflow/src/RawDecoderSpec.cxx b/Detectors/CTP/workflow/src/RawDecoderSpec.cxx index 5f0cb3b759c48..0ab789fc392d6 100644 --- a/Detectors/CTP/workflow/src/RawDecoderSpec.cxx +++ b/Detectors/CTP/workflow/src/RawDecoderSpec.cxx @@ -40,7 +40,8 @@ void RawDecoderSpec::init(framework::InitContext& ctx) int inp2 = mDecoder.setLumiInp(2, lumiinp2); mOutputLumiInfo.inp1 = inp1; mOutputLumiInfo.inp2 = inp2; - LOG(info) << "CTP reco init done. Inputs decoding here:" << decodeinps << " DoLumi:" << mDoLumi << " DoDigits:" << mDoDigits << " NTF:" << mNTFToIntegrate << " Lumi inputs:" << lumiinp1 << ":" << inp1 << " " << lumiinp2 << ":" << inp2 << " Max errors:" << maxerrors; + mMaxOutputSize = ctx.options().get("max-output-size"); + LOG(info) << "CTP reco init done. Inputs decoding here:" << decodeinps << " DoLumi:" << mDoLumi << " DoDigits:" << mDoDigits << " NTF:" << mNTFToIntegrate << " Lumi inputs:" << lumiinp1 << ":" << inp1 << " " << lumiinp2 << ":" << inp2 << " Max errors:" << maxerrors << " Max output size:" << mMaxOutputSize; // mOutputLumiInfo.printInputs(); } void RawDecoderSpec::endOfStream(framework::EndOfStreamContext& ec) @@ -117,6 +118,10 @@ void RawDecoderSpec::run(framework::ProcessingContext& ctx) } if (mDoDigits) { LOG(info) << "[CTPRawToDigitConverter - run] Writing " << mOutputDigits.size() << " digits. IR rejected:" << mDecoder.getIRRejected() << " TCR rejected:" << mDecoder.getTCRRejected(); + if( (mMaxOutputSize > 0) && (mOutputDigits.size() > mMaxOutputSize)) { + LOG(error) << "CTP raw output size: " << mOutputDigits.size(); + mOutputDigits.clear(); + } ctx.outputs().snapshot(o2::framework::Output{"CTP", "DIGITS", 0}, mOutputDigits); } if (mDoLumi) { @@ -189,5 +194,6 @@ o2::framework::DataProcessorSpec o2::ctp::reco_workflow::getRawDecoderSpec(bool {"lumi-inp1", o2::framework::VariantType::String, "TVX", {"The first input used for online lumi. Name in capital."}}, {"lumi-inp2", o2::framework::VariantType::String, "VBA", {"The second input used for online lumi. Name in capital."}}, {"use-verbose-mode", o2::framework::VariantType::Bool, false, {"Verbose logging"}}, + {"max-output-size", o2::framework::VariantType::Int,0,{"Do not send output if bigger than max size, 0 - do not check"}}, {"ctpinputs-decoding", o2::framework::VariantType::Bool, false, {"Inputs alignment: true - raw decoder - has to be compatible with CTF decoder: allowed options: 10,01,00"}}}}; } From 4104bd7c611f86f3e54427da8626868f7b7e840f Mon Sep 17 00:00:00 2001 From: lietava Date: Thu, 7 Mar 2024 15:42:31 +0100 Subject: [PATCH 2/2] clang --- Detectors/CTP/workflow/src/RawDecoderSpec.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Detectors/CTP/workflow/src/RawDecoderSpec.cxx b/Detectors/CTP/workflow/src/RawDecoderSpec.cxx index 0ab789fc392d6..4bba1d7991321 100644 --- a/Detectors/CTP/workflow/src/RawDecoderSpec.cxx +++ b/Detectors/CTP/workflow/src/RawDecoderSpec.cxx @@ -118,7 +118,7 @@ void RawDecoderSpec::run(framework::ProcessingContext& ctx) } if (mDoDigits) { LOG(info) << "[CTPRawToDigitConverter - run] Writing " << mOutputDigits.size() << " digits. IR rejected:" << mDecoder.getIRRejected() << " TCR rejected:" << mDecoder.getTCRRejected(); - if( (mMaxOutputSize > 0) && (mOutputDigits.size() > mMaxOutputSize)) { + if ((mMaxOutputSize > 0) && (mOutputDigits.size() > mMaxOutputSize)) { LOG(error) << "CTP raw output size: " << mOutputDigits.size(); mOutputDigits.clear(); } @@ -194,6 +194,6 @@ o2::framework::DataProcessorSpec o2::ctp::reco_workflow::getRawDecoderSpec(bool {"lumi-inp1", o2::framework::VariantType::String, "TVX", {"The first input used for online lumi. Name in capital."}}, {"lumi-inp2", o2::framework::VariantType::String, "VBA", {"The second input used for online lumi. Name in capital."}}, {"use-verbose-mode", o2::framework::VariantType::Bool, false, {"Verbose logging"}}, - {"max-output-size", o2::framework::VariantType::Int,0,{"Do not send output if bigger than max size, 0 - do not check"}}, + {"max-output-size", o2::framework::VariantType::Int, 0, {"Do not send output if bigger than max size, 0 - do not check"}}, {"ctpinputs-decoding", o2::framework::VariantType::Bool, false, {"Inputs alignment: true - raw decoder - has to be compatible with CTF decoder: allowed options: 10,01,00"}}}}; }