Skip to content

Commit 489a294

Browse files
gggritsotrillville
authored andcommitted
fix(perf): Allow string values for size fields in span waterfall (#62780)
Apparently sometimes size fields like the request size can be strings like `"77"`. This PR makes sure they're parsed as such. See getsentry/sentry-go#758 - Add spec - Treat request size as a size field - Support string values for size fields Fixes JAVASCRIPT-2QGM
1 parent 395737e commit 489a294

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

Diff for: static/app/components/events/interfaces/spans/newTraceDetailsSpanDetails.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ const SIZE_DATA_KEYS = [
7171
'Encoded Body Size',
7272
'Decoded Body Size',
7373
'Transfer Size',
74+
'http.request_content_length',
7475
'http.response_content_length',
7576
'http.decoded_response_content_length',
7677
'http.response_transfer_size',
@@ -343,7 +344,11 @@ function NewTraceDetailsSpanDetail(props: SpanDetailProps) {
343344
} {
344345
const sizeKeys = SIZE_DATA_KEYS.reduce((keys, key) => {
345346
if (data.hasOwnProperty(key) && defined(data[key])) {
346-
keys[key] = data[key];
347+
try {
348+
keys[key] = parseInt(data[key], 10);
349+
} catch (e) {
350+
keys[key] = data[key];
351+
}
347352
}
348353
return keys;
349354
}, {});

Diff for: static/app/components/events/interfaces/spans/spanDetail.spec.tsx

+23
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,29 @@ describe('SpanDetail', function () {
9191
});
9292
});
9393

94+
describe('http.client spans', function () {
95+
it('shows size fields for integer and string values', function () {
96+
render(
97+
renderSpanDetail({
98+
span: SpanFixture({
99+
op: 'http.client',
100+
description: 'POST /resources.json',
101+
data: {
102+
'http.response_content_length': '143',
103+
'http.request_content_length': 12,
104+
},
105+
}),
106+
})
107+
);
108+
109+
expect(screen.getByText('http.response_content_length')).toBeInTheDocument();
110+
expect(screen.getByText('143.0 B')).toBeInTheDocument();
111+
112+
expect(screen.getByText('http.request_content_length')).toBeInTheDocument();
113+
expect(screen.getByText('12.0 B')).toBeInTheDocument();
114+
});
115+
});
116+
94117
describe('db spans', function () {
95118
it('renders "Similar Span" button but no Query Details button by default', function () {
96119
render(

Diff for: static/app/components/events/interfaces/spans/spanDetail.tsx

+6-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ const SIZE_DATA_KEYS = [
7575
'Encoded Body Size',
7676
'Decoded Body Size',
7777
'Transfer Size',
78+
'http.request_content_length',
7879
'http.response_content_length',
7980
'http.decoded_response_content_length',
8081
'http.response_transfer_size',
@@ -361,7 +362,11 @@ function SpanDetail(props: Props) {
361362
} {
362363
const sizeKeys = SIZE_DATA_KEYS.reduce((keys, key) => {
363364
if (data.hasOwnProperty(key) && defined(data[key])) {
364-
keys[key] = data[key];
365+
try {
366+
keys[key] = parseInt(data[key], 10);
367+
} catch (e) {
368+
keys[key] = data[key];
369+
}
365370
}
366371
return keys;
367372
}, {});

0 commit comments

Comments
 (0)