@@ -17,7 +17,9 @@ class SentryTracer extends ISentrySpan {
1717 late final SentrySpan _rootSpan;
1818 final List <SentrySpan > _children = [];
1919 final Map <String , dynamic > _extra = {};
20+
2021 final Map <String , SentryMeasurement > _measurements = {};
22+ Map <String , SentryMeasurement > get measurements => _measurements;
2123
2224 Timer ? _autoFinishAfterTimer;
2325 Duration ? _autoFinishAfter;
@@ -320,10 +322,6 @@ class SentryTracer extends ISentrySpan {
320322 @override
321323 SentryTraceHeader toSentryTrace () => _rootSpan.toSentryTrace ();
322324
323- @visibleForTesting
324- Map <String , SentryMeasurement > get measurements =>
325- Map .unmodifiable (_measurements);
326-
327325 bool _haveAllChildrenFinished () {
328326 for (final child in children) {
329327 if (! child.finished) {
@@ -341,10 +339,19 @@ class SentryTracer extends ISentrySpan {
341339 @override
342340 void setMeasurement (String name, num value, {SentryMeasurementUnit ? unit}) {
343341 if (finished) {
342+ _hub.options.logger (SentryLevel .debug,
343+ "The tracer is already finished. Measurement $name cannot be set" );
344344 return ;
345345 }
346- final measurement = SentryMeasurement (name, value, unit: unit);
347- _measurements[name] = measurement;
346+ _measurements[name] = SentryMeasurement (name, value, unit: unit);
347+ }
348+
349+ void setMeasurementFromChild (String name, num value,
350+ {SentryMeasurementUnit ? unit}) {
351+ // We don't want to overwrite span measurement, if it comes from a child.
352+ if (! _measurements.containsKey (name)) {
353+ setMeasurement (name, value, unit: unit);
354+ }
348355 }
349356
350357 @override
0 commit comments