Skip to content

Commit f20c2bb

Browse files
committed
Don't capture start/spawn breadcrumbs
1 parent 568d7c9 commit f20c2bb

File tree

4 files changed

+47
-93
lines changed

4 files changed

+47
-93
lines changed

dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/app.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ Sentry.init({
1313
});
1414

1515
await new Promise(resolve => {
16-
const child = spawn('sleep', ['1']);
16+
const child = spawn('sleep', ['a']);
17+
child.on('error', resolve);
1718
child.on('exit', resolve);
1819
});
1920

2021
await new Promise(resolve => {
2122
const worker = new Worker(join(__dirname, 'worker.mjs'));
23+
worker.on('error', resolve);
2224
worker.on('exit', resolve);
2325
});
2426

dev-packages/node-integration-tests/suites/breadcrumbs/process-thread/test.ts

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,35 +16,17 @@ const EVENT = {
1616
{
1717
timestamp: expect.any(Number),
1818
category: 'child_process',
19-
message: 'Child process spawned',
20-
level: 'info',
19+
message: "Child process exited with code '1'",
20+
level: 'warning',
2121
data: {
2222
spawnfile: 'sleep',
2323
},
2424
},
25-
{
26-
timestamp: expect.any(Number),
27-
category: 'child_process',
28-
message: "Child process exited with code '0'",
29-
level: 'info',
30-
data: {
31-
spawnfile: 'sleep',
32-
},
33-
},
34-
{
35-
timestamp: expect.any(Number),
36-
category: 'worker_thread',
37-
message: 'Worker thread online',
38-
level: 'info',
39-
data: {
40-
threadId: expect.any(Number),
41-
},
42-
},
4325
{
4426
timestamp: expect.any(Number),
4527
category: 'worker_thread',
46-
message: "Worker thread exited with code '0'",
47-
level: 'info',
28+
message: "Worker thread errored with 'Worker error'",
29+
level: 'error',
4830
data: {
4931
threadId: expect.any(Number),
5032
},
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
setTimeout(() => {
2-
// do nothing and then exit
3-
}, 1000);
1+
throw new Error('Worker error');

packages/node/src/integrations/processThread.ts

Lines changed: 39 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -37,67 +37,54 @@ const _processThreadBreadcrumbIntegration = ((options: Options = {}) => {
3737
}) satisfies IntegrationFn;
3838

3939
/**
40-
* Capture breadcrumbs for child process and thread creation, exit and error.
40+
* Capture breadcrumbs for child processes and worker threads.
4141
*/
4242
export const processThreadBreadcrumbIntegration = defineIntegration(_processThreadBreadcrumbIntegration);
4343

4444
function captureChildProcessEvents(child: ChildProcess, options: Options): void {
4545
let hasExited = false;
4646
let data: Record<string, unknown> | undefined;
4747

48-
child.on('spawn', () => {
49-
// This is Sentry getting macOS OS context
50-
if (child.spawnfile === '/usr/bin/sw_vers') {
51-
hasExited = true;
52-
return;
53-
}
54-
55-
data = { spawnfile: child.spawnfile };
56-
if (options.includeChildProcessArgs) {
57-
data.spawnargs = child.spawnargs;
58-
}
59-
60-
addBreadcrumb({
61-
category: 'child_process',
62-
message: 'Child process spawned',
63-
level: 'info',
64-
data,
65-
});
66-
});
67-
68-
child.on('exit', (code, signal) => {
69-
if (!hasExited) {
70-
hasExited = true;
48+
child
49+
.on('spawn', () => {
50+
// This is Sentry getting macOS OS context
51+
if (child.spawnfile === '/usr/bin/sw_vers') {
52+
hasExited = true;
53+
return;
54+
}
7155

72-
let message = 'Child process exited';
73-
if (code !== null) {
74-
message += ` with code '${code}'`;
56+
data = { spawnfile: child.spawnfile };
57+
if (options.includeChildProcessArgs) {
58+
data.spawnargs = child.spawnargs;
7559
}
76-
if (signal !== null) {
77-
message += ` with signal '${signal}'`;
60+
})
61+
.on('exit', code => {
62+
if (!hasExited) {
63+
hasExited = true;
64+
65+
// Only log for non-zero exit codes
66+
if (code !== null && code !== 0) {
67+
addBreadcrumb({
68+
category: 'child_process',
69+
message: `Child process exited with code '${code}'`,
70+
level: 'warning',
71+
data,
72+
});
73+
}
7874
}
79-
80-
addBreadcrumb({
81-
category: 'child_process',
82-
message,
83-
level: code !== 0 ? 'warning' : 'info',
84-
data,
85-
});
86-
}
87-
});
88-
89-
child.on('error', error => {
90-
if (!hasExited) {
91-
hasExited = true;
92-
93-
addBreadcrumb({
94-
category: 'child_process',
95-
message: `Child process errored with ${error.message}`,
96-
level: 'error',
97-
data,
98-
});
99-
}
100-
});
75+
})
76+
.on('error', error => {
77+
if (!hasExited) {
78+
hasExited = true;
79+
80+
addBreadcrumb({
81+
category: 'child_process',
82+
message: `Child process errored with '${error.message}'`,
83+
level: 'error',
84+
data,
85+
});
86+
}
87+
});
10188
}
10289

10390
function captureWorkerThreadEvents(worker: Worker): void {
@@ -106,26 +93,11 @@ function captureWorkerThreadEvents(worker: Worker): void {
10693
worker
10794
.on('online', () => {
10895
threadId = worker.threadId;
109-
110-
addBreadcrumb({
111-
category: 'worker_thread',
112-
message: 'Worker thread online',
113-
level: 'info',
114-
data: { threadId },
115-
});
116-
})
117-
.on('exit', code => {
118-
addBreadcrumb({
119-
category: 'worker_thread',
120-
message: `Worker thread exited with code '${code}'`,
121-
level: code !== 0 ? 'warning' : 'info',
122-
data: { threadId },
123-
});
12496
})
12597
.on('error', error => {
12698
addBreadcrumb({
12799
category: 'worker_thread',
128-
message: `Worker thread errored with ${error.message}`,
100+
message: `Worker thread errored with '${error.message}'`,
129101
level: 'error',
130102
data: { threadId },
131103
});

0 commit comments

Comments
 (0)