DAQInterface should decouple the routingmaster from fragment generators which send no fragments
Currently on the develop branch of DAQInterface, even if a fragment generator by design doesn't send any fragments, its boardreader's rank is still registered in the routingmaster's sender_ranks list. This is unnecessary and provides an additional "moving part" where things can go wrong, as recently seen at the protoDUNE cluster when a crashing WIBReader brought down the system on start despite its not sending any fragments. Already addressed at the protoDUNE cluster by the release of DAQInterface v3_00_06j, this feature should be made generally available to all experiments. A good approach would be to ensure that if a boardreader FHiCL either has
sends_no_fragments: true or
generated_fragments_per_event: 0, DAQInterface leaves its rank out of the routingmaster logic.
JCF: Addressing Issue #21234: in bookkeeping, don't include boardreaders which don't send in the routingmaster's sender_ranks
This was influenced by our experience with WIB boardreaders on
ProtoDUNE: if DAQInterface determines that a boardreader doesn't send
fragments, either because it has "sends_no_fragments: true" or
"generated_fragments_per_event: 0", then it will leave that
boardreader's rank out of the routingmaster's sender_ranks list.
To test this (see, e.g., mu2edaq01:/home/jcfree/run_records/1782),
I've added component1000 and component1001, ToySimulators which don't
#1 Updated by John Freeman 9 months ago
- Category set to artdaq-daqinterface
- Status changed from New to Resolved
- % Done changed from 0 to 100
With commit 992794646b06ac1704040cae30e520de230fda22 on DAQInterface's develop branch, I've satisfied this requirement. If DAQInterface knows that a fragment generator doesn't send fragments (either because the boardreader FHiCL contains "sends_no_fragments: true" or "generated_fragments_per_event: 0") then it will leave the rank of the fragment generator's boardreader out of the routingmaster's sender_ranks list.
To test this, I've added component1000 and component1001 to DAQInterface's subconfigurations. The bookkeeping works correctly, as can be seen in, e.g., run 1785 on mu2edaq01 (see in particular /home/jcfree/run_records/1785/RoutingMaster1.fcl and /home/jcfree/run_records/1785/ranks.txt).