Skip to content

Commit 157c85f

Browse files
authored
Better report on exceptions in ObjectsManager (#396)
Log the exceptions before throwing. Remove unused method getObject. Consistently use macro ILOG for logging.
1 parent 7f3bfdc commit 157c85f

4 files changed

Lines changed: 18 additions & 27 deletions

File tree

Framework/include/QualityControl/ObjectsManager.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class ObjectsManager
6969
* @param obj
7070
* @throw ObjectNotFoundError if object is not found.
7171
*/
72-
void stopPublishing(const std::string& name);
72+
void stopPublishing(const std::string& objectName);
7373

7474
/**
7575
* Check whether an object is already being published
@@ -78,10 +78,14 @@ class ObjectsManager
7878
*/
7979
bool isBeingPublished(const std::string& name);
8080

81+
/**
82+
* Returns the published MonitorObject specified by its name
83+
* @param objectName The name of the object to find.
84+
* @return A pointer to the MonitorObject.
85+
* @throw ObjectNotFoundError if the object is not found.
86+
*/
8187
MonitorObject* getMonitorObject(std::string objectName);
8288

83-
TObject* getObject(std::string objectName);
84-
8589
MonitorObjectCollection* getNonOwningArray() const;
8690

8791
/**
@@ -90,6 +94,7 @@ class ObjectsManager
9094
* @param objectName Name of the MonitorObject.
9195
* @param key Key of the metadata.
9296
* @param value Value of the metadata.
97+
* @throw ObjectNotFoundError if object is not found.
9398
*/
9499
void addMetadata(const std::string& objectName, const std::string& key, const std::string& value);
95100

Framework/src/ObjectsManager.cxx

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ ObjectsManager::ObjectsManager(TaskConfig& taskConfig, bool noDiscovery) : mTask
3737
if (!noDiscovery) {
3838
mServiceDiscovery = std::make_unique<ServiceDiscovery>(taskConfig.consulUrl, taskConfig.taskName);
3939
} else {
40-
QcInfoLogger::GetInstance() << "Service Discovery disabled" << infologger::endm;
40+
ILOG(Info) << "Service Discovery disabled" << ENDM;
4141
mServiceDiscovery = nullptr;
4242
}
4343
}
@@ -47,8 +47,7 @@ ObjectsManager::~ObjectsManager() = default;
4747
void ObjectsManager::startPublishing(TObject* object)
4848
{
4949
if (mMonitorObjects->FindObject(object->GetName()) != 0) {
50-
QcInfoLogger::GetInstance() << "Object already being published (" << object->GetName() << ")"
51-
<< infologger::endm;
50+
ILOG(Warning) << "Object already being published (" << object->GetName() << ")" << ENDM;
5251
BOOST_THROW_EXCEPTION(DuplicateObjectError() << errinfo_object_name(object->GetName()));
5352
}
5453
auto* newObject = new MonitorObject(object, mTaskConfig.taskName, mTaskConfig.detectorName);
@@ -87,12 +86,9 @@ void ObjectsManager::stopPublishing(TObject* object)
8786
stopPublishing(object->GetName());
8887
}
8988

90-
void ObjectsManager::stopPublishing(const string& name)
89+
void ObjectsManager::stopPublishing(const string& objectName)
9190
{
92-
auto* mo = dynamic_cast<MonitorObject*>(mMonitorObjects->FindObject(name.data()));
93-
if (mo == nullptr) {
94-
BOOST_THROW_EXCEPTION(ObjectNotFoundError() << errinfo_object_name(name));
95-
}
91+
auto* mo = dynamic_cast<MonitorObject*>(getMonitorObject(objectName));
9692
mMonitorObjects->Remove(mo);
9793
}
9894

@@ -103,19 +99,12 @@ bool ObjectsManager::isBeingPublished(const string& name)
10399

104100
MonitorObject* ObjectsManager::getMonitorObject(std::string objectName)
105101
{
106-
TObject* mo = mMonitorObjects->FindObject(objectName.c_str());
107-
108-
if (mo != nullptr) {
109-
return dynamic_cast<MonitorObject*>(mo);
110-
} else {
102+
TObject* object = mMonitorObjects->FindObject(objectName.c_str());
103+
if (object == nullptr) {
104+
ILOG(Error) << "ObjectsManager: Unable to find object \"" << objectName << "\"" << ENDM;
111105
BOOST_THROW_EXCEPTION(ObjectNotFoundError() << errinfo_object_name(objectName));
112106
}
113-
}
114-
115-
TObject* ObjectsManager::getObject(std::string objectName)
116-
{
117-
MonitorObject* mo = getMonitorObject(objectName);
118-
return mo->getObject();
107+
return dynamic_cast<MonitorObject*>(object);
119108
}
120109

121110
MonitorObjectCollection* ObjectsManager::getNonOwningArray() const
@@ -127,7 +116,7 @@ void ObjectsManager::addMetadata(const std::string& objectName, const std::strin
127116
{
128117
MonitorObject* mo = getMonitorObject(objectName);
129118
mo->addMetadata(key, value);
130-
QcInfoLogger::GetInstance() << "Added metadata on " << objectName << " : " << key << " -> " << value << infologger::endm;
119+
ILOG(Info) << "Added metadata on " << objectName << " : " << key << " -> " << value << ENDM;
131120
}
132121

133122
int ObjectsManager::getNumberPublishedObjects()

Framework/test/testObjectsManager.cxx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ BOOST_AUTO_TEST_CASE(getters_test)
9797
BOOST_CHECK_NO_THROW(objectsManager.getMonitorObject("content"));
9898
BOOST_CHECK_NO_THROW(objectsManager.getMonitorObject("histo"));
9999
BOOST_CHECK_THROW(objectsManager.getMonitorObject("unexisting object"), ObjectNotFoundError);
100-
BOOST_CHECK_NO_THROW(objectsManager.getObject("content"));
101-
BOOST_CHECK_NO_THROW(objectsManager.getObject("histo"));
102-
BOOST_CHECK_THROW(objectsManager.getObject("unexisting object"), ObjectNotFoundError);
103100

104101
// non owning array
105102
TObjArray* array = objectsManager.getNonOwningArray();

Framework/test/testPublisher.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ BOOST_AUTO_TEST_CASE(publisher_test)
3737
TObjString s("content");
3838
objectsManager.startPublishing(&s);
3939

40-
TObjString* s2 = (TObjString*)(objectsManager.getObject("content"));
40+
TObjString* s2 = (TObjString*)(objectsManager.getMonitorObject("content")->getObject());
4141
BOOST_CHECK_EQUAL(s.GetString(), s2->GetString());
4242
MonitorObject* mo = nullptr;
4343
BOOST_CHECK_THROW(mo = objectsManager.getMonitorObject("test"), AliceO2::Common::ObjectNotFoundError);

0 commit comments

Comments
 (0)