@@ -17,7 +17,9 @@ class SentryTracer extends ISentrySpan {
17
17
late final SentrySpan _rootSpan;
18
18
final List <SentrySpan > _children = [];
19
19
final Map <String , dynamic > _extra = {};
20
+
20
21
final Map <String , SentryMeasurement > _measurements = {};
22
+ Map <String , SentryMeasurement > get measurements => _measurements;
21
23
22
24
Timer ? _autoFinishAfterTimer;
23
25
Duration ? _autoFinishAfter;
@@ -320,10 +322,6 @@ class SentryTracer extends ISentrySpan {
320
322
@override
321
323
SentryTraceHeader toSentryTrace () => _rootSpan.toSentryTrace ();
322
324
323
- @visibleForTesting
324
- Map <String , SentryMeasurement > get measurements =>
325
- Map .unmodifiable (_measurements);
326
-
327
325
bool _haveAllChildrenFinished () {
328
326
for (final child in children) {
329
327
if (! child.finished) {
@@ -341,10 +339,19 @@ class SentryTracer extends ISentrySpan {
341
339
@override
342
340
void setMeasurement (String name, num value, {SentryMeasurementUnit ? unit}) {
343
341
if (finished) {
342
+ _hub.options.logger (SentryLevel .debug,
343
+ "The tracer is already finished. Measurement $name cannot be set" );
344
344
return ;
345
345
}
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
+ }
348
355
}
349
356
350
357
@override
0 commit comments