Skip to content

Commit fa1c93b

Browse files
authored
parameter to explicitly allow parent access (#9954)
1 parent 74a5553 commit fa1c93b

6 files changed

Lines changed: 28 additions & 14 deletions

File tree

Framework/AnalysisSupport/src/AODJAlienReaderHelpers.cxx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,13 @@ AlgorithmSpec AODJAlienReaderHelpers::rootFileReaderCallback()
142142
parentFileReplacement = options.get<std::string>("aod-parent-base-path-replacement");
143143
}
144144

145+
int parentAccessLevel = 0;
146+
if (options.isSet("aod-parent-access-level")) {
147+
parentAccessLevel = options.get<int>("aod-parent-access-level");
148+
}
149+
145150
// create a DataInputDirector
146-
auto didir = std::make_shared<DataInputDirector>(filename, &monitoring, parentFileReplacement);
151+
auto didir = std::make_shared<DataInputDirector>(filename, &monitoring, parentAccessLevel, parentFileReplacement);
147152
if (options.isSet("aod-reader-json")) {
148153
auto jsonFile = options.get<std::string>("aod-reader-json");
149154
if (!didir->readJson(jsonFile)) {

Framework/AnalysisSupport/src/DataInputDirector.cxx

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,11 @@ FileNameHolder* makeFileNameHolder(std::string fileName)
5454
return fileNameHolder;
5555
}
5656

57-
DataInputDescriptor::DataInputDescriptor(bool alienSupport, int level, o2::monitoring::Monitoring* monitoring, std::string parentFileReplacement) : mAlienSupport(alienSupport),
58-
mMonitoring(monitoring),
59-
mParentFileReplacement(parentFileReplacement),
60-
mLevel(level)
57+
DataInputDescriptor::DataInputDescriptor(bool alienSupport, int level, o2::monitoring::Monitoring* monitoring, int allowedParentLevel, std::string parentFileReplacement) : mAlienSupport(alienSupport),
58+
mMonitoring(monitoring),
59+
mAllowedParentLevel(allowedParentLevel),
60+
mParentFileReplacement(parentFileReplacement),
61+
mLevel(level)
6162
{
6263
}
6364

@@ -245,8 +246,12 @@ DataInputDescriptor* DataInputDescriptor::getParentFile(int counter, int numTF)
245246
}
246247
}
247248

249+
if (mLevel == mAllowedParentLevel) {
250+
throw std::runtime_error(fmt::format(R"(parent file requested but we are already at level {} of maximal allowed level {} for DF "{}" in file "{}")", mLevel, mAllowedParentLevel, folderName.c_str(), mcurrentFile->GetName()));
251+
}
252+
248253
LOGP(info, "Opening parent file {} for DF {}", parentFileName->GetString().Data(), folderName.c_str());
249-
mParentFile = new DataInputDescriptor(mAlienSupport, mLevel + 1, mMonitoring, mParentFileReplacement);
254+
mParentFile = new DataInputDescriptor(mAlienSupport, mLevel + 1, mMonitoring, mAllowedParentLevel, mParentFileReplacement);
250255
mParentFile->mdefaultFilenamesPtr = new std::vector<FileNameHolder*>;
251256
mParentFile->mdefaultFilenamesPtr->emplace_back(makeFileNameHolder(parentFileName->GetString().Data()));
252257
mParentFile->fillInputfiles();
@@ -414,7 +419,7 @@ DataInputDirector::DataInputDirector()
414419
createDefaultDataInputDescriptor();
415420
}
416421

417-
DataInputDirector::DataInputDirector(std::string inputFile, o2::monitoring::Monitoring* monitoring, std::string parentFileReplacement) : mMonitoring(monitoring), mParentFileReplacement(parentFileReplacement)
422+
DataInputDirector::DataInputDirector(std::string inputFile, o2::monitoring::Monitoring* monitoring, int allowedParentLevel, std::string parentFileReplacement) : mMonitoring(monitoring), mAllowedParentLevel(allowedParentLevel), mParentFileReplacement(parentFileReplacement)
418423
{
419424
if (inputFile.size() && inputFile[0] == '@') {
420425
inputFile.erase(0, 1);
@@ -426,7 +431,7 @@ DataInputDirector::DataInputDirector(std::string inputFile, o2::monitoring::Moni
426431
createDefaultDataInputDescriptor();
427432
}
428433

429-
DataInputDirector::DataInputDirector(std::vector<std::string> inputFiles, o2::monitoring::Monitoring* monitoring, std::string parentFileReplacement) : mMonitoring(monitoring), mParentFileReplacement(parentFileReplacement)
434+
DataInputDirector::DataInputDirector(std::vector<std::string> inputFiles, o2::monitoring::Monitoring* monitoring, int allowedParentLevel, std::string parentFileReplacement) : mMonitoring(monitoring), mAllowedParentLevel(allowedParentLevel), mParentFileReplacement(parentFileReplacement)
430435
{
431436
for (auto inputFile : inputFiles) {
432437
mdefaultInputFiles.emplace_back(makeFileNameHolder(inputFile));
@@ -461,7 +466,7 @@ void DataInputDirector::createDefaultDataInputDescriptor()
461466
if (mdefaultDataInputDescriptor) {
462467
delete mdefaultDataInputDescriptor;
463468
}
464-
mdefaultDataInputDescriptor = new DataInputDescriptor(mAlienSupport, 0, mMonitoring, mParentFileReplacement);
469+
mdefaultDataInputDescriptor = new DataInputDescriptor(mAlienSupport, 0, mMonitoring, mAllowedParentLevel, mParentFileReplacement);
465470

466471
mdefaultDataInputDescriptor->setInputfilesFile(minputfilesFile);
467472
mdefaultDataInputDescriptor->setFilenamesRegex(mFilenameRegex);
@@ -586,7 +591,7 @@ bool DataInputDirector::readJsonDocument(Document* jsonDoc)
586591
return false;
587592
}
588593
// create a new dataInputDescriptor
589-
auto didesc = new DataInputDescriptor(mAlienSupport, 0, mMonitoring, mParentFileReplacement);
594+
auto didesc = new DataInputDescriptor(mAlienSupport, 0, mMonitoring, mAllowedParentLevel, mParentFileReplacement);
590595
didesc->setDefaultInputfiles(&mdefaultInputFiles);
591596

592597
itemName = "table";

Framework/AnalysisSupport/src/DataInputDirector.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class DataInputDescriptor
5050
std::unique_ptr<data_matcher::DataDescriptorMatcher> matcher;
5151

5252
DataInputDescriptor() = default;
53-
DataInputDescriptor(bool alienSupport, int level, o2::monitoring::Monitoring* monitoring = nullptr, std::string parentFileReplacement = "");
53+
DataInputDescriptor(bool alienSupport, int level, o2::monitoring::Monitoring* monitoring = nullptr, int allowedParentLevel = 0, std::string parentFileReplacement = "");
5454

5555
void printOut();
5656

@@ -91,6 +91,7 @@ class DataInputDescriptor
9191
std::string* minputfilesFilePtr = nullptr;
9292
std::string mFilenameRegex = "";
9393
std::string* mFilenameRegexPtr = nullptr;
94+
int mAllowedParentLevel = 0;
9495
std::string mParentFileReplacement;
9596
std::vector<FileNameHolder*> mfilenames;
9697
std::vector<FileNameHolder*>* mdefaultFilenamesPtr = nullptr;
@@ -118,8 +119,8 @@ class DataInputDirector
118119

119120
public:
120121
DataInputDirector();
121-
DataInputDirector(std::string inputFile, o2::monitoring::Monitoring* monitoring = nullptr, std::string parentFileReplacement = "");
122-
DataInputDirector(std::vector<std::string> inputFiles, o2::monitoring::Monitoring* monitoring = nullptr, std::string parentFileReplacement = "");
122+
DataInputDirector(std::string inputFile, o2::monitoring::Monitoring* monitoring = nullptr, int allowedParentLevel = 0, std::string parentFileReplacement = "");
123+
DataInputDirector(std::vector<std::string> inputFiles, o2::monitoring::Monitoring* monitoring = nullptr, int allowedParentLevel = 0, std::string parentFileReplacement = "");
123124
~DataInputDirector();
124125

125126
void reset();
@@ -150,6 +151,7 @@ class DataInputDirector
150151
std::string minputfilesFile;
151152
std::string* const minputfilesFilePtr = &minputfilesFile;
152153
std::string mFilenameRegex;
154+
int mAllowedParentLevel = 0;
153155
std::string mParentFileReplacement;
154156
std::string* const mFilenameRegexPtr = &mFilenameRegex;
155157
DataInputDescriptor* mdefaultDataInputDescriptor = nullptr;

Framework/Core/include/Framework/AnalysisDataModel.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,7 @@ DECLARE_SOA_COLUMN(NpartProj, npartProj, int);
10721072
DECLARE_SOA_COLUMN(NpartTarg, npartTarg, int); //! Number of target participants
10731073
DECLARE_SOA_COLUMN(Ncoll, ncoll, int); //! Number of NN (nucleon-nucleon) collisions
10741074
DECLARE_SOA_COLUMN(NNwoundedCollisions, nNwoundedCollisions, int); //! Number of N-Nwounded collisions
1075-
DECLARE_SOA_COLUMN(NwoundedNCollisions, nwoundedNCollisions, int); //! Number of Nwounded-N collisons
1075+
DECLARE_SOA_COLUMN(NwoundedNCollisions, nwoundedNCollisions, int); //! Number of Nwounded-N collisions
10761076
DECLARE_SOA_COLUMN(NwoundedNwoundedCollisions, nwoundedNwoundedCollisions, int); //! Number of Nwounded-Nwounded collisions
10771077
DECLARE_SOA_COLUMN(SpectatorNeutrons, spectatorNeutrons, int); //! Number of spectator neutrons
10781078
DECLARE_SOA_COLUMN(SpectatorProtons, spectatorProtons, int); //! Number of spectator protons

Framework/Core/src/WorkflowHelpers.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ void WorkflowHelpers::injectServiceDevices(WorkflowSpec& workflow, ConfigContext
289289
AlgorithmSpec::dummyAlgorithm(),
290290
{ConfigParamSpec{"aod-file", VariantType::String, {"Input AOD file"}},
291291
ConfigParamSpec{"aod-reader-json", VariantType::String, {"json configuration file"}},
292+
ConfigParamSpec{"aod-parent-access-level", VariantType::String, {"Allow parent file access up to specified level. Default: no (0)"}},
292293
ConfigParamSpec{"aod-parent-base-path-replacement", VariantType::String, {R"(Replace base path of parent files. Syntax: FROM;TO. E.g. "alien:///path/in/alien;/local/path". Enclose in "" on the command line.)"}},
293294
ConfigParamSpec{"time-limit", VariantType::Int64, 0ll, {"Maximum run time limit in seconds"}},
294295
ConfigParamSpec{"orbit-offset-enumeration", VariantType::Int64, 0ll, {"initial value for the orbit"}},

Framework/Core/src/runDataProcessing.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,6 +1791,7 @@ int runStateMachine(DataProcessorSpecs const& workflow,
17911791
"--aod-writer-resfile",
17921792
"--aod-writer-resmode",
17931793
"--aod-writer-keep",
1794+
"--aod-parent-access-level",
17941795
"--aod-parent-base-path-replacement",
17951796
"--driver-client-backend",
17961797
"--fairmq-ipc-prefix",

0 commit comments

Comments
 (0)