Skip to content

Commit 9308877

Browse files
authored
fix(node): Don't leak __span property into breadcrumbs (#14798)
1 parent 6038628 commit 9308877

File tree

7 files changed

+57
-37
lines changed

7 files changed

+57
-37
lines changed

dev-packages/e2e-tests/test-applications/nextjs-app-dir/tests/middleware.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ test('Should trace outgoing fetch requests inside middleware and create breadcru
9595
expect.arrayContaining([
9696
{
9797
category: 'fetch',
98-
data: { __span: expect.any(String), method: 'GET', status_code: 200, url: 'http://localhost:3030/' },
98+
data: { method: 'GET', status_code: 200, url: 'http://localhost:3030/' },
9999
timestamp: expect.any(Number),
100100
type: 'http',
101101
},

packages/browser/src/integrations/breadcrumbs.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,12 @@ function _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFe
286286
return;
287287
}
288288

289+
const breadcrumbData: FetchBreadcrumbData = {
290+
method: handlerData.fetchData.method,
291+
url: handlerData.fetchData.url,
292+
};
293+
289294
if (handlerData.error) {
290-
const data: FetchBreadcrumbData = handlerData.fetchData;
291295
const hint: FetchBreadcrumbHint = {
292296
data: handlerData.error,
293297
input: handlerData.args,
@@ -298,30 +302,31 @@ function _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFe
298302
addBreadcrumb(
299303
{
300304
category: 'fetch',
301-
data,
305+
data: breadcrumbData,
302306
level: 'error',
303307
type: 'http',
304308
},
305309
hint,
306310
);
307311
} else {
308312
const response = handlerData.response as Response | undefined;
309-
const data: FetchBreadcrumbData = {
310-
...handlerData.fetchData,
311-
status_code: response && response.status,
312-
};
313+
314+
breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;
315+
breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;
316+
breadcrumbData.status_code = response && response.status;
317+
313318
const hint: FetchBreadcrumbHint = {
314319
input: handlerData.args,
315320
response,
316321
startTimestamp,
317322
endTimestamp,
318323
};
319-
const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);
324+
const level = getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);
320325

321326
addBreadcrumb(
322327
{
323328
category: 'fetch',
324-
data,
329+
data: breadcrumbData,
325330
type: 'http',
326331
level,
327332
},

packages/cloudflare/src/integrations/fetch.ts

+15-9
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,12 @@ function createBreadcrumb(handlerData: HandlerDataFetch): void {
124124
return;
125125
}
126126

127+
const breadcrumbData: FetchBreadcrumbData = {
128+
method: handlerData.fetchData.method,
129+
url: handlerData.fetchData.url,
130+
};
131+
127132
if (handlerData.error) {
128-
const data = handlerData.fetchData;
129133
const hint: FetchBreadcrumbHint = {
130134
data: handlerData.error,
131135
input: handlerData.args,
@@ -136,29 +140,31 @@ function createBreadcrumb(handlerData: HandlerDataFetch): void {
136140
addBreadcrumb(
137141
{
138142
category: 'fetch',
139-
data,
143+
data: breadcrumbData,
140144
level: 'error',
141145
type: 'http',
142146
},
143147
hint,
144148
);
145149
} else {
146-
const data: FetchBreadcrumbData = {
147-
...handlerData.fetchData,
148-
status_code: handlerData.response && handlerData.response.status,
149-
};
150+
const response = handlerData.response as Response | undefined;
151+
152+
breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;
153+
breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;
154+
breadcrumbData.status_code = response && response.status;
155+
150156
const hint: FetchBreadcrumbHint = {
151157
input: handlerData.args,
152-
response: handlerData.response,
158+
response,
153159
startTimestamp,
154160
endTimestamp,
155161
};
156-
const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);
162+
const level = getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);
157163

158164
addBreadcrumb(
159165
{
160166
category: 'fetch',
161-
data,
167+
data: breadcrumbData,
162168
type: 'http',
163169
level,
164170
},

packages/cloudflare/test/integrations/fetch.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ describe('WinterCGFetch instrumentation', () => {
171171
method: 'POST',
172172
status_code: 201,
173173
url: 'http://my-website.com/',
174-
__span: expect.any(String),
175174
},
176175
type: 'http',
177176
},

packages/deno/src/integrations/breadcrumbs.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,12 @@ function _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFe
151151
return;
152152
}
153153

154+
const breadcrumbData: FetchBreadcrumbData = {
155+
method: handlerData.fetchData.method,
156+
url: handlerData.fetchData.url,
157+
};
158+
154159
if (handlerData.error) {
155-
const data: FetchBreadcrumbData = handlerData.fetchData;
156160
const hint: FetchBreadcrumbHint = {
157161
data: handlerData.error,
158162
input: handlerData.args,
@@ -163,30 +167,31 @@ function _getFetchBreadcrumbHandler(client: Client): (handlerData: HandlerDataFe
163167
addBreadcrumb(
164168
{
165169
category: 'fetch',
166-
data,
170+
data: breadcrumbData,
167171
level: 'error',
168172
type: 'http',
169173
},
170174
hint,
171175
);
172176
} else {
173177
const response = handlerData.response as Response | undefined;
174-
const data: FetchBreadcrumbData = {
175-
...handlerData.fetchData,
176-
status_code: response && response.status,
177-
};
178+
179+
breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;
180+
breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;
181+
breadcrumbData.status_code = response && response.status;
182+
178183
const hint: FetchBreadcrumbHint = {
179184
input: handlerData.args,
180185
response,
181186
startTimestamp,
182187
endTimestamp,
183188
};
184-
const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);
189+
const level = getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);
185190

186191
addBreadcrumb(
187192
{
188193
category: 'fetch',
189-
data,
194+
data: breadcrumbData,
190195
type: 'http',
191196
level,
192197
},

packages/vercel-edge/src/integrations/wintercg-fetch.ts

+15-9
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,12 @@ function createBreadcrumb(handlerData: HandlerDataFetch): void {
130130
return;
131131
}
132132

133+
const breadcrumbData: FetchBreadcrumbData = {
134+
method: handlerData.fetchData.method,
135+
url: handlerData.fetchData.url,
136+
};
137+
133138
if (handlerData.error) {
134-
const data = handlerData.fetchData;
135139
const hint: FetchBreadcrumbHint = {
136140
data: handlerData.error,
137141
input: handlerData.args,
@@ -142,29 +146,31 @@ function createBreadcrumb(handlerData: HandlerDataFetch): void {
142146
addBreadcrumb(
143147
{
144148
category: 'fetch',
145-
data,
149+
data: breadcrumbData,
146150
level: 'error',
147151
type: 'http',
148152
},
149153
hint,
150154
);
151155
} else {
152-
const data: FetchBreadcrumbData = {
153-
...handlerData.fetchData,
154-
status_code: handlerData.response && handlerData.response.status,
155-
};
156+
const response = handlerData.response as Response | undefined;
157+
158+
breadcrumbData.request_body_size = handlerData.fetchData.request_body_size;
159+
breadcrumbData.response_body_size = handlerData.fetchData.response_body_size;
160+
breadcrumbData.status_code = response && response.status;
161+
156162
const hint: FetchBreadcrumbHint = {
157163
input: handlerData.args,
158-
response: handlerData.response,
164+
response,
159165
startTimestamp,
160166
endTimestamp,
161167
};
162-
const level = getBreadcrumbLogLevelFromHttpStatusCode(data.status_code);
168+
const level = getBreadcrumbLogLevelFromHttpStatusCode(breadcrumbData.status_code);
163169

164170
addBreadcrumb(
165171
{
166172
category: 'fetch',
167-
data,
173+
data: breadcrumbData,
168174
type: 'http',
169175
level,
170176
},

packages/vercel-edge/test/wintercg-fetch.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ describe('WinterCGFetch instrumentation', () => {
171171
method: 'POST',
172172
status_code: 201,
173173
url: 'http://my-website.com/',
174-
__span: expect.any(String),
175174
},
176175
type: 'http',
177176
},

0 commit comments

Comments
 (0)