Skip to content

Commit b260cbb

Browse files
authored
TRD: DCS Chamber Status post production update (#12749)
* TRD: remove run number DPs CCDB upload * TRD: comments clean up * TRD: change Chamber Status start TS * TRD: add option to turn on end of stream CCDB upload * TRD: remove Run DPs from output vector
1 parent 500ed2f commit b260cbb

3 files changed

Lines changed: 31 additions & 127 deletions

File tree

Detectors/TRD/calibration/include/TRDCalibration/DCSProcessor.h

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,11 @@ class DCSProcessor
6363
bool updateVoltagesDPsCCDB();
6464
bool updateCurrentsDPsCCDB();
6565
bool updateEnvDPsCCDB();
66-
bool updateRunDPsCCDB();
67-
// LB: new DPs for Fed
6866
bool updateFedChamberStatusDPsCCDB();
6967
bool updateFedCFGtagDPsCCDB();
7068

7169
// signal that the CCDB object for the voltages should be updated due to change exceeding threshold
7270
bool shouldUpdateVoltages() const { return mShouldUpdateVoltages; }
73-
bool shouldUpdateRun() const { return mShouldUpdateRun; }
7471
// LB: Only update ChamberStatus/CFGtag if both conditions are met (complete DPs and new run)
7572
bool shouldUpdateFedChamberStatus() const { return mFedChamberStatusCompleteDPs && mFirstRunEntryForFedChamberStatusUpdate; }
7673
bool shouldUpdateFedCFGtag() const { return mFedCFGtagCompleteDPs && mFirstRunEntryForFedCFGtagUpdate; }
@@ -91,14 +88,13 @@ class DCSProcessor
9188
CcdbObjectInfo& getccdbVoltagesDPsInfo() { return mCcdbVoltagesDPsInfo; }
9289
CcdbObjectInfo& getccdbCurrentsDPsInfo() { return mCcdbCurrentsDPsInfo; }
9390
CcdbObjectInfo& getccdbEnvDPsInfo() { return mCcdbEnvDPsInfo; }
94-
CcdbObjectInfo& getccdbRunDPsInfo() { return mCcdbRunDPsInfo; }
9591
CcdbObjectInfo& getccdbFedChamberStatusDPsInfo() { return mCcdbFedChamberStatusDPsInfo; }
9692
CcdbObjectInfo& getccdbFedCFGtagDPsInfo() { return mCcdbFedCFGtagDPsInfo; }
93+
9794
const std::unordered_map<DPID, TRDDCSMinMaxMeanInfo>& getTRDGasDPsInfo() const { return mTRDDCSGas; }
9895
const std::unordered_map<DPID, float>& getTRDVoltagesDPsInfo() const { return mTRDDCSVoltages; }
9996
const std::unordered_map<DPID, TRDDCSMinMaxMeanInfo>& getTRDCurrentsDPsInfo() const { return mTRDDCSCurrents; }
10097
const std::unordered_map<DPID, TRDDCSMinMaxMeanInfo>& getTRDEnvDPsInfo() const { return mTRDDCSEnv; }
101-
const std::unordered_map<DPID, int>& getTRDRunDPsInfo() const { return mTRDDCSRun; }
10298
const std::array<int, constants::MAXCHAMBER>& getTRDFedChamberStatusDPsInfo() const { return mTRDDCSFedChamberStatus; }
10399
const std::array<string, constants::MAXCHAMBER>& getTRDFedCFGtagDPsInfo() const { return mTRDDCSFedCFGtag; }
104100

@@ -115,7 +111,6 @@ class DCSProcessor
115111
void clearCurrentsDPsInfo();
116112
void clearEnvDPsInfo();
117113
void clearRunDPsInfo();
118-
// LB: new DPs for Fed
119114
void clearFedChamberStatusDPsInfo();
120115
void clearFedCFGtagDPsInfo();
121116

@@ -128,8 +123,6 @@ class DCSProcessor
128123
std::unordered_map<DPID, TRDDCSMinMaxMeanInfo> mTRDDCSCurrents; ///< anode and drift currents
129124
std::unordered_map<DPID, float> mTRDDCSVoltages; ///< anode and drift voltages
130125
std::unordered_map<DPID, TRDDCSMinMaxMeanInfo> mTRDDCSEnv; ///< environment parameters (temperatures, pressures, humidity)
131-
std::unordered_map<DPID, int> mTRDDCSRun; ///< run number (run type ignored)
132-
// LB: new DPs for Fed
133126
std::array<int, constants::MAXCHAMBER> mTRDDCSFedChamberStatus; ///< fed chamber status
134127
std::array<string, constants::MAXCHAMBER> mTRDDCSFedCFGtag; ///< fed config tag
135128

@@ -140,32 +133,24 @@ class DCSProcessor
140133
CcdbObjectInfo mCcdbVoltagesDPsInfo;
141134
CcdbObjectInfo mCcdbCurrentsDPsInfo;
142135
CcdbObjectInfo mCcdbEnvDPsInfo;
143-
CcdbObjectInfo mCcdbRunDPsInfo;
144-
// LB: new DPs for Fed
145136
CcdbObjectInfo mCcdbFedChamberStatusDPsInfo;
146137
CcdbObjectInfo mCcdbFedCFGtagDPsInfo;
147138

148139
TFType mGasStartTS; ///< the time stamp of the first TF which was processesd for the current GAS CCDB object
149140
TFType mVoltagesStartTS; ///< the time stamp of the first TF which was processesd for the current voltages CCDB object
150141
TFType mCurrentsStartTS; ///< the time stamp of the first TF which was processesd for the current voltages CCDB object
151142
TFType mEnvStartTS;
152-
TFType mRunStartTS;
153-
TFType mRunEndTS;
154-
// LB: new DPs for Fed
155143
TFType mFedChamberStatusStartTS;
156144
TFType mFedCFGtagStartTS;
157145
TFType mCurrentTS{0}; ///< the time stamp of the TF currently being processed
158146
bool mGasStartTSset{false};
159147
bool mVoltagesStartTSSet{false};
160148
bool mCurrentsStartTSSet{false};
161149
bool mEnvStartTSSet{false};
162-
bool mRunStartTSSet{false};
163-
// LB: new DPs for Fed
164150
bool mFedChamberStatusStartTSSet{false};
165151
bool mFedCFGtagStartTSSet{false};
166152
std::bitset<constants::MAXCHAMBER> mVoltageSet{};
167153
bool mShouldUpdateVoltages{false};
168-
bool mShouldUpdateRun{false};
169154
// LB: FedChamberStatus and FedCFGtag logic
170155
bool mFedChamberStatusCompleteDPs{false};
171156
bool mFedCFGtagCompleteDPs{false};
@@ -174,8 +159,6 @@ class DCSProcessor
174159
int mCurrentRunNumber{-1};
175160
int mFedChamberStatusAlarmCounter{0};
176161
int mFedCFGtagAlarmCounter{0};
177-
// LB: for testing runNo object, turned off for now
178-
// int mFinishedRunNumber;
179162

180163
// settings
181164
int mVerbosity{0};

Detectors/TRD/calibration/src/DCSProcessor.cxx

Lines changed: 13 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -197,46 +197,38 @@ int DCSProcessor::processDP(const DPCOM& dpcom)
197197
}
198198

199199
if (type == DPVAL_INT) {
200-
if (std::strstr(dpid.get_alias(), "trd_fed_runNo") != nullptr) { // DP is trd_fed_runNo
201-
if (!mRunStartTSSet) {
202-
mRunStartTS = mCurrentTS;
203-
mRunStartTSSet = true;
204-
}
205-
206-
auto& runNumber = mTRDDCSRun[dpid];
207200

208-
// LB: Check if new value is a valid run number (0 = cleared variable)
201+
// check if DP is run number, only used for Chamber Status/CFGtag metadata
202+
if (std::strstr(dpid.get_alias(), "trd_fed_runNo") != nullptr) { // DP is trd_fed_runNo
203+
// LB: Check if new value is a valid run number (0 = cleared variable, -1 = start variable)
209204
if (o2::dcs::getValue<int32_t>(dpcom) > 0) {
210205
// If value has changed from previous one, new run has begun and update
211206
if (o2::dcs::getValue<int32_t>(dpcom) != mCurrentRunNumber) {
212207
LOG(info) << "New run number " << o2::dcs::getValue<int32_t>(dpcom) << " differs from the old one " << mCurrentRunNumber;
213-
mShouldUpdateRun = true;
214208
// LB: two different flags as they reset separately, after upload of CCDB, for each object
215209
mFirstRunEntryForFedChamberStatusUpdate = true;
216210
mFirstRunEntryForFedCFGtagUpdate = true;
217211
// LB: reset alarm counters
218212
mFedChamberStatusAlarmCounter = 0;
219213
mFedCFGtagAlarmCounter = 0;
220-
mRunEndTS = mCurrentTS;
221214
}
222215

223216
// LB: Save current run number
224217
mCurrentRunNumber = o2::dcs::getValue<int32_t>(dpcom);
225-
// Save to mTRDDCSRun
226-
runNumber = mCurrentRunNumber;
227218
}
228219

229220
if (mVerbosity > 2) {
230221
LOG(info) << "Current Run Number: " << mCurrentRunNumber;
231222
}
232223

233-
} else if (std::strstr(dpid.get_alias(), "trd_chamberStatus") != nullptr) { // DP is trd_chamberStatus
224+
// check if DP is Chamber Status
225+
} else if (std::strstr(dpid.get_alias(), "trd_chamberStatus") != nullptr) {
234226
if (!mFedChamberStatusStartTSSet) {
235227
mFedChamberStatusStartTS = mCurrentTS;
236228
mFedChamberStatusStartTSSet = true;
237229
}
238230

239-
// LB: for ChamberStatus, grab the chamber number from alias
231+
// LB: grab the chamber number from alias
240232
int chamberId = getChamberIdFromAlias(dpid.get_alias());
241233
auto& dpInfoFedChamberStatus = mTRDDCSFedChamberStatus[chamberId];
242234
if (etime != mLastDPTimeStamps[dpid]) {
@@ -261,7 +253,9 @@ int DCSProcessor::processDP(const DPCOM& dpcom)
261253
}
262254

263255
if (type == DPVAL_STRING) {
264-
if (std::strstr(dpid.get_alias(), "trd_CFGtag") != nullptr) { // DP is trd_CFGtag
256+
257+
// check if DP is chamber configuration tag
258+
if (std::strstr(dpid.get_alias(), "trd_CFGtag") != nullptr) {
265259
if (!mFedCFGtagStartTSSet) {
266260
mFedCFGtagStartTS = mCurrentTS;
267261
mFedCFGtagStartTSSet = true;
@@ -476,38 +470,6 @@ bool DCSProcessor::updateEnvDPsCCDB()
476470
return retVal;
477471
}
478472

479-
bool DCSProcessor::updateRunDPsCCDB()
480-
{
481-
// here we create the object containing the run data points to then be sent to CCDB
482-
LOG(info) << "Preparing CCDB object for TRD run DPs";
483-
484-
bool retVal = false; // set to 'true' in case at least one DP for run has been processed
485-
486-
for (const auto& it : mPids) {
487-
const auto& type = it.first.get_type();
488-
if (type == o2::dcs::DPVAL_INT) {
489-
if (std::strstr(it.first.get_alias(), "trd_fed_run") != nullptr) {
490-
if (it.second == true) { // we processed the DP at least 1x
491-
retVal = true;
492-
}
493-
if (mVerbosity > 0) {
494-
LOG(info) << "PID = " << it.first.get_alias() << ". Value = " << mTRDDCSRun[it.first];
495-
}
496-
}
497-
}
498-
}
499-
std::map<std::string, std::string> md;
500-
md["responsible"] = "Leonardo Barreto";
501-
// Redundancy for testing, this object is updated after run ended, so need to write old run number, not current
502-
// md["runNumber"] = std::to_string(mFinishedRunNumber);
503-
o2::calibration::Utils::prepareCCDBobjectInfo(mTRDDCSRun, mCcdbRunDPsInfo, "TRD/Calib/DCSDPsRun", md, mRunStartTS, mRunEndTS);
504-
505-
// LB: Deactivated upload of Run DPs to CCDB even if processed
506-
// To turn it back on just comment the next line
507-
retVal = false;
508-
return retVal;
509-
}
510-
511473
bool DCSProcessor::updateFedChamberStatusDPsCCDB()
512474
{
513475
// here we create the object containing the fedChamberStatus data points to then be sent to CCDB
@@ -533,9 +495,9 @@ bool DCSProcessor::updateFedChamberStatusDPsCCDB()
533495
std::map<std::string, std::string> md;
534496
md["responsible"] = "Leonardo Barreto";
535497
md["runNumber"] = std::to_string(mCurrentRunNumber);
536-
// LB: set start timestamp 30 seconds before DPs are received
498+
// LB: set start timestamp 30000 miliseconds before DPs are received
537499
o2::calibration::Utils::prepareCCDBobjectInfo(mTRDDCSFedChamberStatus, mCcdbFedChamberStatusDPsInfo,
538-
"TRD/Calib/DCSDPsFedChamberStatus", md, mFedChamberStatusStartTS - 30,
500+
"TRD/Calib/DCSDPsFedChamberStatus", md, mFedChamberStatusStartTS - 30000,
539501
mFedChamberStatusStartTS + 3 * o2::ccdb::CcdbObjectInfo::DAY);
540502

541503
return retVal;
@@ -566,9 +528,9 @@ bool DCSProcessor::updateFedCFGtagDPsCCDB()
566528
std::map<std::string, std::string> md;
567529
md["responsible"] = "Leonardo Barreto";
568530
md["runNumber"] = std::to_string(mCurrentRunNumber);
569-
// LB: set start timestamp 30 seconds before DPs are received
531+
// LB: set start timestamp 30000 seconds before DPs are received
570532
o2::calibration::Utils::prepareCCDBobjectInfo(mTRDDCSFedCFGtag, mCcdbFedCFGtagDPsInfo,
571-
"TRD/Calib/DCSDPsFedCFGtag", md, mFedCFGtagStartTS - 30,
533+
"TRD/Calib/DCSDPsFedCFGtag", md, mFedCFGtagStartTS - 30000,
572534
mFedCFGtagStartTS + 3 * o2::ccdb::CcdbObjectInfo::DAY);
573535

574536
return retVal;
@@ -637,22 +599,6 @@ void DCSProcessor::clearEnvDPsInfo()
637599
}
638600
}
639601

640-
void DCSProcessor::clearRunDPsInfo()
641-
{
642-
mTRDDCSRun.clear();
643-
mRunStartTSSet = false;
644-
mShouldUpdateRun = false;
645-
// reset the 'processed' flags for the run DPs
646-
for (auto& it : mPids) {
647-
const auto& type = it.first.get_type();
648-
if (type == o2::dcs::DPVAL_INT) {
649-
if (std::strstr(it.first.get_alias(), "trd_fed_run") != nullptr) {
650-
it.second = false;
651-
}
652-
}
653-
}
654-
}
655-
656602
void DCSProcessor::clearFedChamberStatusDPsInfo()
657603
{
658604
// mTRDDCSFedChamberStatus should not be cleared after upload giving alarm/warn logic

Detectors/TRD/calibration/workflow/TRDDCSDataProcessorSpec.h

Lines changed: 17 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,14 @@ class TRDDCSDataProcessor : public o2::framework::Task
150150
LOG(info) << "Invalid voltage variation trigger of DPs to update Anode/DriftUMon to " << utrigger << ", using default value of 1 V";
151151
}
152152

153+
mUploadAtEoS = ic.options().get<bool>("enable-uploadAtEoS");
154+
LOG(info) << "Setting upload of CCDB objects at end of stream to " << mUploadAtEoS;
155+
153156
mProcessor->init(vect);
154157
mTimerGas = std::chrono::high_resolution_clock::now();
155158
mTimerVoltages = mTimerGas;
156159
mTimerCurrents = mTimerGas;
157160
mTimerEnv = mTimerGas;
158-
// LB: new DPs for Fed
159161
mTimerFedChamberStatus = mTimerGas;
160162
mTimerFedCFGtag = mTimerGas;
161163

@@ -201,7 +203,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
201203
mTimerEnv = timeNow;
202204
}
203205

204-
// LB: processing logic for FedChamberStatus and FedCFGtag
205206
if (mProcessor->shouldUpdateFedChamberStatus()) {
206207
sendDPsoutputFedChamberStatus(pc.outputs());
207208
}
@@ -210,35 +211,35 @@ class TRDDCSDataProcessor : public o2::framework::Task
210211
sendDPsoutputFedCFGtag(pc.outputs());
211212
}
212213

213-
if (mProcessor->shouldUpdateRun()) {
214-
sendDPsoutputRun(pc.outputs());
215-
}
216214
sw.Stop();
215+
217216
if (mReportTiming) {
218217
LOGP(info, "Timing CPU:{:.3e} Real:{:.3e} at slice {}", sw.CpuTime(), sw.RealTime(), pc.services().get<o2::framework::TimingInfo>().timeslice);
219218
}
220219
}
221220

222221
void endOfStream(o2::framework::EndOfStreamContext& ec) final
223222
{
224-
sendDPsoutputGas(ec.outputs());
225-
sendDPsoutputVoltages(ec.outputs());
226-
sendDPsoutputCurrents(ec.outputs());
227-
sendDPsoutputEnv(ec.outputs());
228-
sendDPsoutputRun(ec.outputs());
229-
// LB: new DPs for Fed
230-
sendDPsoutputFedChamberStatus(ec.outputs());
231-
sendDPsoutputFedCFGtag(ec.outputs());
223+
// LB: no objects should be uploaded at end of stream, unless stated otherwise
224+
if (mUploadAtEoS) {
225+
LOG(info) << "End of stream upload of CCDB objects";
226+
sendDPsoutputGas(ec.outputs());
227+
sendDPsoutputVoltages(ec.outputs());
228+
sendDPsoutputCurrents(ec.outputs());
229+
sendDPsoutputEnv(ec.outputs());
230+
} else {
231+
LOG(info) << "No CCDB object upload done at the end of stream";
232+
}
232233
}
233234

234235
private:
236+
bool mUploadAtEoS = false;
235237
bool mReportTiming = false;
236238
std::unique_ptr<DCSProcessor> mProcessor;
237239
std::chrono::high_resolution_clock::time_point mTimerGas;
238240
std::chrono::high_resolution_clock::time_point mTimerVoltages;
239241
std::chrono::high_resolution_clock::time_point mTimerCurrents;
240242
std::chrono::high_resolution_clock::time_point mTimerEnv;
241-
// LB: new DPs for Fed
242243
std::chrono::high_resolution_clock::time_point mTimerFedChamberStatus;
243244
std::chrono::high_resolution_clock::time_point mTimerFedCFGtag;
244245

@@ -247,7 +248,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
247248
int64_t mCurrentsDPsUpdateInterval;
248249
int64_t mMinUpdateIntervalU;
249250
int64_t mEnvDPsUpdateInterval;
250-
// LB: new DPs for Fed
251251
int64_t mFedChamberStatusDPsUpdateInterval;
252252
int64_t mFedCFGtagDPsUpdateInterval;
253253

@@ -325,27 +325,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
325325
}
326326
}
327327

328-
//________________________________________________________________
329-
void sendDPsoutputRun(DataAllocator& output)
330-
{
331-
// extract CCDB infos and calibration object for DPs
332-
if (mProcessor->updateRunDPsCCDB()) {
333-
const auto& payload = mProcessor->getTRDRunDPsInfo();
334-
auto& info = mProcessor->getccdbRunDPsInfo();
335-
auto image = o2::ccdb::CcdbApi::createObjectImage(&payload, &info);
336-
LOG(info) << "Sending object " << info.getPath() << "/" << info.getFileName() << " of size " << image->size()
337-
<< " bytes, valid for " << info.getStartValidityTimestamp() << " : " << info.getEndValidityTimestamp();
338-
output.snapshot(Output{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSRunDPs", 0}, *image.get());
339-
output.snapshot(Output{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSRunDPs", 0}, info);
340-
mProcessor->clearRunDPsInfo();
341-
} else {
342-
auto& info = mProcessor->getccdbRunDPsInfo();
343-
// LOG(info) << "Not sending object " << info.getPath() << "/" << info.getFileName() << " since no DPs were processed for it";
344-
LOG(info) << "Not sending object " << info.getPath() << "/" << info.getFileName() << " as upload of Run DPs was deactivated";
345-
}
346-
}
347-
348-
// LB: new DP for FedChamberStatus
349328
//________________________________________________________________
350329
void sendDPsoutputFedChamberStatus(DataAllocator& output)
351330
{
@@ -365,7 +344,6 @@ class TRDDCSDataProcessor : public o2::framework::Task
365344
}
366345
}
367346

368-
// LB: new DP for FedCFGtag
369347
//________________________________________________________________
370348
void sendDPsoutputFedCFGtag(DataAllocator& output)
371349
{
@@ -395,18 +373,14 @@ DataProcessorSpec getTRDDCSDataProcessorSpec()
395373
{
396374

397375
std::vector<OutputSpec> outputs;
398-
399376
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSGasDPs"}, Lifetime::Sporadic);
400377
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSGasDPs"}, Lifetime::Sporadic);
401378
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSUDPs"}, Lifetime::Sporadic);
402379
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSUDPs"}, Lifetime::Sporadic);
403380
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSIDPs"}, Lifetime::Sporadic);
404381
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSIDPs"}, Lifetime::Sporadic);
405-
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSRunDPs"}, Lifetime::Sporadic);
406-
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSRunDPs"}, Lifetime::Sporadic);
407382
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_DCSEnvDPs"}, Lifetime::Sporadic);
408383
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_DCSEnvDPs"}, Lifetime::Sporadic);
409-
// LB: new DPs for Fed
410384
// Must use reduced names due to initializer string cannot exceed descriptor size in Data Format
411385
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBPayload, "TRD_ChamberStat"}, Lifetime::Sporadic);
412386
outputs.emplace_back(ConcreteDataTypeMatcher{o2::calibration::Utils::gDataOriginCDBWrapper, "TRD_ChamberStat"}, Lifetime::Sporadic);
@@ -429,7 +403,8 @@ DataProcessorSpec getTRDDCSDataProcessorSpec()
429403
{"DPs-voltage-variation-trigger", VariantType::Int64, 1ll, {"Voltage variation trigger for upload of CCDB object"}},
430404
{"DPs-update-interval-gas", VariantType::Int64, 900ll, {"Interval (in s) after which to update the DPs CCDB entry for gas parameters"}},
431405
{"DPs-max-counter-alarm-fed", VariantType::Int, 1, {"Maximum number of alarms after FedChamberStatus and FedCFGtag changes, following changes are logged as warnings"}},
432-
{"DPs-min-counter-update-fed", VariantType::Int, 522, {"Minimum number of DPs to update FedChamberStatus and FedCFGtag objects"}}}};
406+
{"DPs-min-counter-update-fed", VariantType::Int, 522, {"Minimum number of DPs to update FedChamberStatus and FedCFGtag objects"}},
407+
{"enable-uploadAtEoS", VariantType::Bool, false, {"Upload CCDB objects at end of stream"}}}};
433408
}
434409

435410
} // namespace framework

0 commit comments

Comments
 (0)