summaryrefslogtreecommitdiff
path: root/lib/trace/metric
diff options
context:
space:
mode:
Diffstat (limited to 'lib/trace/metric')
-rw-r--r--lib/trace/metric/trace.ts11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/trace/metric/trace.ts b/lib/trace/metric/trace.ts
index b28d828..396bd9c 100644
--- a/lib/trace/metric/trace.ts
+++ b/lib/trace/metric/trace.ts
@@ -16,9 +16,16 @@ export class MetricsTrace implements ITrace<MetricsTraceSupplier> {
public traceScope(trace: MetricsTraceSupplier): MetricsTrace {
const now = Date.now();
const metricsToTrace = (Array.isArray(trace) ? trace : [trace]).filter(isIMetric);
- const initialTraces = new Map(metricsToTrace.map((metric) => [metric.name, now]));
- return new MetricsTrace(this.metricConsumer, initialTraces, this.completedTraces);
+ // Inherit existing active traces across scopes.
+ const nextActiveTraces = new Map(this.activeTraces);
+ for (const metric of metricsToTrace) {
+ if (!nextActiveTraces.has(metric.name)) {
+ nextActiveTraces.set(metric.name, now);
+ }
+ }
+
+ return new MetricsTrace(this.metricConsumer, nextActiveTraces, this.completedTraces);
}
public trace(metrics: MetricsTraceSupplier): MetricsTrace {