Skip to content

Commit 1e34936

Browse files
authored
Use queries for describing desired data (#182)
* Use queries for describing desired data * unnecessary namespace name * update to latest changes on the upstream * fix run-qc-advanced * New query format for EMCal * wildcards for readout data * trigger the build * Add query format description in the first docu occurence
1 parent 1ec92e4 commit 1e34936

18 files changed

Lines changed: 35 additions & 139 deletions

Framework/advanced.json

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,7 @@
5656
"id": "tst1",
5757
"active": "true",
5858
"machines": [],
59-
"dataHeaders": [
60-
{
61-
"binding": "sum",
62-
"dataOrigin": "TST",
63-
"dataDescription": "SUM"
64-
},
65-
{
66-
"binding": "param",
67-
"dataOrigin": "TST",
68-
"dataDescription": "PARAM"
69-
}
70-
],
71-
"subSpec": "2",
59+
"query" : "sum:TST/SUM/2;param:TST/PARAM/2",
7260
"samplingConditions": [
7361
{
7462
"condition": "random",
@@ -82,14 +70,7 @@
8270
"id": "tst2",
8371
"active": "true",
8472
"machines": [],
85-
"dataHeaders": [
86-
{
87-
"binding": "data",
88-
"dataOrigin": "TST",
89-
"dataDescription": "DATA"
90-
}
91-
],
92-
"subSpec": "*",
73+
"query" : "data:TST/RAWDATA",
9374
"samplingConditions": [
9475
{
9576
"condition": "payloadSize",

Framework/basic-no-sampling.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
"maxNumberCycles": "-1",
2929
"dataSource": {
3030
"type": "direct",
31-
"binding": "its-rawdata",
32-
"dataOrigin": "ITS",
33-
"dataDescription": "RAWDATA",
34-
"subSpec": "0"
31+
"query" : "its-rawdata:ITS/RAWDATA/0"
3532
},
3633
"taskParameters": {
3734
"nothing": "rien"

Framework/basic.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,7 @@
4343
"id": "its-raw",
4444
"active": "true",
4545
"machines": [],
46-
"dataHeaders": [
47-
{
48-
"binding": "random",
49-
"dataOrigin": "ITS",
50-
"dataDescription": "RAWDATA"
51-
}
52-
],
53-
"subSpec": "0",
46+
"query" : "random:ITS/RAWDATA/0",
5447
"samplingConditions": [
5548
{
5649
"condition": "random",

Framework/example-default.json

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,8 @@
6565
{
6666
"id": "ex1",
6767
"active": "true",
68-
"dataHeaders": [
69-
{
70-
"binding": "data",
71-
"dataOrigin": "TST",
72-
"dataDescription": "DATA"
73-
}
74-
],
75-
"subSpec": "0",
68+
"query_comment" : "query is in the format of binding1:origin1/description1/subSpec1;binding2:origin2/description2/subSpec2;...",
69+
"query" : "data:TST/DATA/0",
7670
"samplingConditions": [
7771
{
7872
"condition": "custom",
@@ -85,14 +79,7 @@
8579
{
8680
"id": "mftclusters",
8781
"active": "true",
88-
"dataHeaders": [
89-
{
90-
"binding": "mft-clusters",
91-
"dataOrigin": "MFT",
92-
"dataDescription": "CLUSTERS"
93-
}
94-
],
95-
"subSpec": "0",
82+
"query" : "mft-clusters:MFT/CLUSTERS/0",
9683
"samplingConditions": [
9784
{
9885
"condition": "payloadSize",

Framework/readout-no-sampling.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,7 @@
2828
"maxNumberCycles": "-1",
2929
"dataSource": {
3030
"type": "direct",
31-
"binding": "readout",
32-
"dataOrigin": "ITS",
33-
"dataDescription": "RAWDATA",
34-
"subSpec": "0"
31+
"query" : "readout:ROUT/RAWDATA"
3532
},
3633
"location": "remote"
3734
}

Framework/readout.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,7 @@
3939
"id": "readout",
4040
"active": "true",
4141
"machines": [],
42-
"dataHeaders": [
43-
{
44-
"binding": "readout",
45-
"dataOrigin": "ITS",
46-
"dataDescription": "RAWDATA"
47-
}
48-
],
49-
"subSpec": "0",
42+
"query" : "readout:ROUT/RAWDATA",
5043
"samplingConditions": [
5144
{
5245
"condition": "random",

Framework/readoutForDataDump.json

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,7 @@
44
"id": "readout",
55
"active": "true",
66
"machines": [],
7-
"dataHeaders": [
8-
{
9-
"binding": "readout",
10-
"dataOrigin": "R/O",
11-
"dataDescription": "RAWDATA"
12-
}
13-
],
14-
"subSpec": "0",
7+
"query" : "readout:RO/RAWDATA/0",
158
"samplingConditions": [],
169
"blocking": "false",
1710
"fairMQOutput": "name=fairReadoutRawOut,type=pub,method=bind,address=tcp://127.0.0.1:26525,rateLogging=1"

Framework/src/TaskRunner.cxx

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <Framework/CallbackService.h>
2828
#include <Framework/TimesliceIndex.h>
2929
#include <Framework/DataSpecUtils.h>
30+
#include <Framework/DataDescriptorQueryBuilder.h>
3031
#include <Headers/DataHeader.h>
3132
#include <Monitoring/MonitoringFactory.h>
3233
#include "QualityControl/QcInfoLogger.h"
@@ -274,22 +275,8 @@ void TaskRunner::populateConfig(std::string taskName)
274275
LOG(INFO) << "policyName : " << policyName;
275276
mInputSpecs = DataSampling::InputSpecsForPolicy(config, policyName);
276277
} else if (type == "direct") {
277-
278-
auto subSpecString = dataSourceTree.get<std::string>("subSpec");
279-
auto subSpec = std::strtoull(subSpecString.c_str(), nullptr, 10);
280-
281-
header::DataOrigin origin;
282-
header::DataDescription description;
283-
origin.runtimeInit(dataSourceTree.get<std::string>("dataOrigin").c_str());
284-
description.runtimeInit(dataSourceTree.get<std::string>("dataDescription").c_str());
285-
286-
mInputSpecs.push_back(
287-
InputSpec{
288-
dataSourceTree.get<std::string>("binding"),
289-
origin,
290-
description,
291-
static_cast<framework::DataAllocator::SubSpecificationType>(subSpec) });
292-
278+
auto inputsQuery = dataSourceTree.get<std::string>("query");
279+
mInputSpecs = DataDescriptorQueryBuilder::parse(inputsQuery.c_str());
293280
} else {
294281
std::string message = std::string("Configuration error : dataSource type unknown : ") + type; // TODO pass this message to the exception
295282
BOOST_THROW_EXCEPTION(AliceO2::Common::FatalException() << AliceO2::Common::errinfo_details(message));

Framework/src/runAdvanced.cxx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,17 @@ WorkflowSpec defineDataProcessing(ConfigContext const&)
136136
DataSampling::GenerateInfrastructure(localTopology, qcConfigurationSource);
137137
// a fix to make the topologies work when merged together
138138
localTopology.back().name += std::to_string(i);
139+
if (i != 2) {
140+
localTopology.back().inputs = { localTopology.back().inputs.back() };
141+
localTopology.back().outputs = { localTopology.back().outputs.back() };
142+
}
143+
DataSpecUtils::updateMatchingSubspec(localTopology.back().inputs.back(), i);
144+
DataSpecUtils::updateMatchingSubspec(localTopology.back().outputs.back(), i);
139145

140146
std::string host = "o2flptst" + std::to_string(i);
141147
quality_control::generateLocalInfrastructure(localTopology, qcConfigurationSource, host);
142148
// a fix to make the topologies work when merged together
143149
localTopology.back().name += std::to_string(i);
144-
// temporary fix, which shouldn't be necessary when data sampling uses matchers
145150
DataSpecUtils::updateMatchingSubspec(localTopology.back().inputs[0], i);
146151
DataSpecUtils::updateMatchingSubspec(localTopology.back().inputs[1], i);
147152

Framework/src/runReadout.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ WorkflowSpec defineDataProcessing(ConfigContext const& config)
7878
WorkflowSpec specs{
7979
specifyExternalFairMQDeviceProxy(
8080
"readout-proxy",
81-
Outputs{{"ITS", "RAWDATA"}},
81+
Outputs{ { { "readout" }, { "ROUT", "RAWDATA" } } },
8282
"type=sub,method=connect,address=ipc:///tmp/readout-pipe-1,rateLogging=1",
83-
dataSamplingReadoutAdapter({"ITS", "RAWDATA"}))
83+
dataSamplingReadoutAdapter({ { "readout" }, { "ROUT", "RAWDATA" } }))
8484
};
8585

8686
// Path to the config file

0 commit comments

Comments
 (0)