Skip to content

Commit 23f03e3

Browse files
committed
DPL: Report exceptions metrics asynchronously
1 parent 9f72140 commit 23f03e3

File tree

3 files changed

+5
-6
lines changed

3 files changed

+5
-6
lines changed

Framework/Core/include/Framework/DataProcessingStats.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ struct DataProcessingStats {
2626
int maxLatency = 0;
2727
};
2828
std::atomic<int> errorCount = 0;
29+
std::atomic<int> exceptionCount = 0;
2930
std::atomic<int> pendingInputs = 0;
3031
std::atomic<int> incomplete = 0;
3132
std::atomic<int> inputParts = 0;

Framework/Core/src/CommonServices.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,7 @@ auto sendRelayerMetrics(ServiceRegistry& registry, DataProcessingStats& stats) -
502502
monitoring.send(Metric{(int)relayerStats.relayedMessages, "relayed_messages"}.addTag(Key::Subsystem, Value::DPL));
503503

504504
monitoring.send(Metric{(int)stats.errorCount, "errors"}.addTag(Key::Subsystem, Value::DPL));
505+
monitoring.send(Metric{(int)stats.exceptionCount, "exceptions"}.addTag(Key::Subsystem, Value::DPL));
505506
monitoring.send(Metric{(int)stats.pendingInputs, "inputs/relayed/pending"}.addTag(Key::Subsystem, Value::DPL));
506507
monitoring.send(Metric{(int)stats.incomplete, "inputs/relayed/incomplete"}.addTag(Key::Subsystem, Value::DPL));
507508
monitoring.send(Metric{(int)stats.inputParts, "inputs/relayed/total"}.addTag(Key::Subsystem, Value::DPL));

Framework/Core/src/DataProcessingDevice.cxx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,7 @@
6161
#include <boost/property_tree/json_parser.hpp>
6262

6363
using namespace o2::framework;
64-
using Key = o2::monitoring::tags::Key;
65-
using Value = o2::monitoring::tags::Value;
66-
using Metric = o2::monitoring::Metric;
67-
using Monitoring = o2::monitoring::Monitoring;
64+
using namespace o2::monitoring;
6865
using ConfigurationInterface = o2::configuration::ConfigurationInterface;
6966
using DataHeader = o2::header::DataHeader;
7067

@@ -105,7 +102,7 @@ DataProcessingDevice::DataProcessingDevice(DeviceSpec const& spec, ServiceRegist
105102
auto& err = error_from_ref(e);
106103
LOGP(ERROR, "Exception caught: {} ", err.what);
107104
backtrace_symbols_fd(err.backtrace, err.maxBacktrace, STDERR_FILENO);
108-
serviceRegistry.get<Monitoring>().send({1, "error"});
105+
serviceRegistry.get<DataProcessingStats>().exceptionCount++;
109106
ErrorContext errorContext{record, serviceRegistry, e};
110107
errorCallback(errorContext);
111108
};
@@ -116,7 +113,7 @@ DataProcessingDevice::DataProcessingDevice(DeviceSpec const& spec, ServiceRegist
116113
auto& err = error_from_ref(e);
117114
LOGP(ERROR, "Exception caught: {} ", err.what);
118115
backtrace_symbols_fd(err.backtrace, err.maxBacktrace, STDERR_FILENO);
119-
serviceRegistry.get<Monitoring>().send({1, "error"});
116+
serviceRegistry.get<DataProcessingStats>().exceptionCount++;
120117
switch (errorPolicy) {
121118
case TerminationPolicy::QUIT:
122119
throw e;

0 commit comments

Comments
 (0)