Error when setting "taskName"different from task ID in QC configuration file


I am testing the option of setting the task name separately from the task ID, as suggested here, but I am getting an error from the QC configuration parser.

Here is a minimal example of task configuration with an explicit taskName parameter:

    "tasks": {
      "TMCHDigits": {
        "active": "true",
        "taskName": "MCHDigits",
        "className": "o2::quality_control_modules::muonchambers::DigitsTask",
        "moduleName": "QcMuonChambers",
        "detectorName": "MCH",
        "cycleDurationSeconds": "30",
        "maxNumberCycles": "-1",
        "dataSource": {
          "type": "direct",
          "query": "digits:MCH/DIGITS"
        "taskParameters" : {
          "Diagnostic" : "false"
        "location": "remote"

It produces the following error:

[ERROR] 2022-11-22 13:31:20.986878     IL: Facility set to runQC
[ERROR] 2022-11-22 13:31:20.986927     Using config file 'json://home/flp/Workflows/qc.json'
[ERROR] 2022-11-22 13:31:20.986981     Creating a standalone QC workflow.
[ERROR] 2022-11-22 13:31:20.986999     Generating Data Sampling
[ERROR] 2022-11-22 13:31:20.987070     QC version 1.80.0
2022-11-22 13:31:20.987543 !!! Fatal - Failed to build the workflow: No such node (qc.tasks.MCHDigits.detectorName)
terminate called after throwing an instance of '[ERROR] error while setting up workflow in o2-qc: /home/flp/alibuild-test/alice/sw/slc7_x86-64/boost/v1.75.0-86/include/boost/property_tree/detail/ptree_implementation.hpp(576): Throw in function boost::property_tree::basic_ptree<K, D, C>& boost::property_tree::basic_ptree<Key, Data, KeyCompare>::get_child(const path_type&) [with Key = std::__cxx11::basic_string<char>; Data = std::__cxx11::basic_string<char>; KeyCompare = std::less<std::__cxx11::basic_string<char> >; boost::property_tree::basic_ptree<Key, Data, KeyCompare>::path_type = boost::property_tree::string_path<std::__cxx11::basic_string<char>, boost::property_tree::id_translator<std::__cxx11::basic_string<char> > >]
[ERROR] Dynamic exception type: boost::wrapexcept<boost::property_tree::ptree_bad_path>
  what():  No such node (qc.tasks.MCHDigits.detectorName)[ERROR] std::exception::what: No such node (qc.tasks.MCHDigits.detectorName)

Is this the expected behavior, or a bug?

Thanks a lot in advance!


Yes, that is expected. For some technical reasons, checks have to access detectorName of a task it needs. Once you update your check definition to request “TMCHDigits”, it should be fine.

Please let me know if this does not help!

Thanks, it works! I didn’t realize that the error message was coming from the checker…