@@ -33,19 +33,18 @@ inline static std::string retriveValue(const std::reference_wrapper<const String
3333
3434template <typename T>
3535boost::property_tree::ptree fillNodeWithValue (const DeviceMetricsInfo& deviceMetrics,
36- const T& metricsStorage, size_t labelIndex, size_t storageIndex )
36+ const T& metricsStorage, size_t labelIndex, size_t storeIndex )
3737{
38-
39- unsigned int loopRange = std::min (deviceMetrics.metrics [labelIndex].filledMetrics , metricsStorage[storageIndex].size ());
38+ unsigned int loopRange = std::min (deviceMetrics.metrics [labelIndex].filledMetrics , metricsStorage[storeIndex].size ());
4039 boost::property_tree::ptree metricNode;
4140
4241 for (unsigned int idx = 0 ; idx < loopRange; ++idx) {
4342 boost::property_tree::ptree values;
4443 values.add (" timestamp" , deviceMetrics.timestamps [labelIndex][idx]);
4544 if constexpr (std::is_arithmetic_v<T>) {
46- values.add (" value" , std::to_string (retriveValue (std::cref (metricsStorage[storageIndex ][idx]))));
45+ values.add (" value" , std::to_string (retriveValue (std::cref (metricsStorage[storeIndex ][idx]))));
4746 } else {
48- values.add (" value" , retriveValue (std::cref (metricsStorage[storageIndex ][idx])));
47+ values.add (" value" , retriveValue (std::cref (metricsStorage[storeIndex ][idx])));
4948 }
5049 metricNode.push_back (std::make_pair (" " , values));
5150 }
@@ -81,26 +80,30 @@ bool ResourcesMonitoringHelper::dumpMetricsToJSON(const std::vector<DeviceMetric
8180 if (std::find_if (std::begin (performanceMetrics), std::end (performanceMetrics), same) == performanceMetrics.end ()) {
8281 continue ;
8382 }
83+ auto storeIdx = deviceMetrics.metrics [mi].storeIdx ;
8484
85+ if (deviceMetrics.metrics [mi].filledMetrics == 0 ) {
86+ continue ;
87+ }
8588 // if so
8689
8790 boost::property_tree::ptree metricNode;
8891
8992 switch (deviceMetrics.metrics [mi].type ) {
9093 case MetricType::Int:
91- metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.intMetrics , mi, deviceMetrics. metrics [mi]. storeIdx );
94+ metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.intMetrics , mi, storeIdx);
9295 break ;
9396
9497 case MetricType::Float:
95- metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.floatMetrics , mi, deviceMetrics. metrics [mi]. storeIdx );
98+ metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.floatMetrics , mi, storeIdx);
9699 break ;
97100
98101 case MetricType::String:
99- metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.stringMetrics , mi, deviceMetrics. metrics [mi]. storeIdx );
102+ metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.stringMetrics , mi, storeIdx);
100103 break ;
101104
102105 case MetricType::Uint64:
103- metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.uint64Metrics , mi, deviceMetrics. metrics [mi]. storeIdx );
106+ metricNode = fillNodeWithValue (deviceMetrics, deviceMetrics.uint64Metrics , mi, storeIdx);
104107 break ;
105108
106109 default :
@@ -121,29 +124,30 @@ bool ResourcesMonitoringHelper::dumpMetricsToJSON(const std::vector<DeviceMetric
121124 continue ;
122125 }
123126
124- // if so
127+ auto storeIdx = driverMetrics.metrics [mi].storeIdx ;
128+ // and if data is there
129+ if (driverMetrics.metrics [mi].filledMetrics == 0 ) {
130+ continue ;
131+ }
125132
133+ // if so
126134 boost::property_tree::ptree metricNode;
127135
128136 switch (driverMetrics.metrics [mi].type ) {
129137 case MetricType::Int:
130- metricNode = fillNodeWithValue (driverMetrics, driverMetrics.intMetrics ,
131- mi, driverMetrics.metrics [mi].storeIdx );
138+ metricNode = fillNodeWithValue (driverMetrics, driverMetrics.intMetrics , mi, storeIdx);
132139 break ;
133140
134141 case MetricType::Float:
135- metricNode = fillNodeWithValue (driverMetrics, driverMetrics.floatMetrics ,
136- mi, driverMetrics.metrics [mi].storeIdx );
142+ metricNode = fillNodeWithValue (driverMetrics, driverMetrics.floatMetrics , mi, storeIdx);
137143 break ;
138144
139145 case MetricType::String:
140- metricNode = fillNodeWithValue (driverMetrics, driverMetrics.stringMetrics ,
141- mi, driverMetrics.metrics [mi].storeIdx );
146+ metricNode = fillNodeWithValue (driverMetrics, driverMetrics.stringMetrics , mi, storeIdx);
142147 break ;
143148
144149 case MetricType::Uint64:
145- metricNode = fillNodeWithValue (driverMetrics, driverMetrics.uint64Metrics ,
146- mi, driverMetrics.metrics [mi].storeIdx );
150+ metricNode = fillNodeWithValue (driverMetrics, driverMetrics.uint64Metrics , mi, storeIdx);
147151 break ;
148152
149153 default :
0 commit comments