Skip to content

Commit 605fe42

Browse files
author
Luca Forstner
committed
ref(measurements): Update setMeasurements to only set a single measurement
1 parent 58b9c4e commit 605fe42

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

packages/tracing/src/browser/metrics.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable max-lines */
22
/* eslint-disable @typescript-eslint/no-explicit-any */
3-
import { Measurements, SpanContext } from '@sentry/types';
3+
import { SpanContext } from '@sentry/types';
44
import { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';
55

66
import { IS_DEBUG_BUILD } from '../flags';
@@ -17,7 +17,7 @@ const global = getGlobalObject<Window>();
1717

1818
/** Class tracking metrics */
1919
export class MetricsInstrumentation {
20-
private _measurements: Measurements = {};
20+
private _measurements: Record<string, { value: number }> = {};
2121

2222
private _performanceCursor: number = 0;
2323
private _lcpEntry: LargestContentfulPaint | undefined;
@@ -162,7 +162,10 @@ export class MetricsInstrumentation {
162162
delete this._measurements.cls;
163163
}
164164

165-
transaction.setMeasurements(this._measurements);
165+
Object.keys(this._measurements).forEach(measurementName => {
166+
transaction.setMeasurement(measurementName, this._measurements[measurementName].value);
167+
});
168+
166169
tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);
167170
transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);
168171
}
@@ -189,11 +192,11 @@ export class MetricsInstrumentation {
189192
}
190193

191194
if (isMeasurementValue(connection.rtt)) {
192-
this._measurements['connection.rtt'] = { value: connection.rtt as number };
195+
this._measurements['connection.rtt'] = { value: connection.rtt };
193196
}
194197

195198
if (isMeasurementValue(connection.downlink)) {
196-
this._measurements['connection.downlink'] = { value: connection.downlink as number };
199+
this._measurements['connection.downlink'] = { value: connection.downlink };
197200
}
198201
}
199202

@@ -392,7 +395,7 @@ export function _startChild(transaction: Transaction, { startTimestamp, ...ctx }
392395
/**
393396
* Checks if a given value is a valid measurement value.
394397
*/
395-
function isMeasurementValue(value: any): boolean {
398+
function isMeasurementValue(value: unknown): value is number {
396399
return typeof value === 'number' && isFinite(value);
397400
}
398401

packages/tracing/src/transaction.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { getCurrentHub, Hub } from '@sentry/hub';
22
import {
33
Event,
44
Measurements,
5+
MeasurementUnit,
56
Transaction as TransactionInterface,
67
TransactionContext,
78
TransactionMetadata,
@@ -68,11 +69,14 @@ export class Transaction extends SpanClass implements TransactionInterface {
6869
}
6970

7071
/**
71-
* Set observed measurements for this transaction.
72+
* Set observed measurement for this transaction.
73+
* @param name Name of the measurement
74+
* @param value Value of the measurement
75+
* @param unit Unit of the measurement. (Defaults to 'ms' - milliseconds)
7276
* @hidden
7377
*/
74-
public setMeasurements(measurements: Measurements): void {
75-
this._measurements = { ...measurements };
78+
public setMeasurement(name: string, value: number, unit: MeasurementUnit = 'ms'): void {
79+
this._measurements[name] = { value, unit };
7680
}
7781

7882
/**

packages/types/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export { Stacktrace } from './stacktrace';
5454
export {
5555
CustomSamplingContext,
5656
Measurements,
57+
MeasurementUnit,
5758
SamplingContext,
5859
TraceparentData,
5960
Transaction,

packages/types/src/transaction.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ export interface SamplingContext extends CustomSamplingContext {
115115
request?: ExtractedNodeRequestData;
116116
}
117117

118-
export type Measurements = Record<string, { value: number }>;
118+
export type MeasurementUnit = 'ns' | 'ms' | 's';
119+
export type Measurements = Record<string, { value: number; unit: MeasurementUnit }>;
119120

120121
export type TransactionSamplingMethod = 'explicitly_set' | 'client_sampler' | 'client_rate' | 'inheritance';
121122

0 commit comments

Comments
 (0)