Skip to content

Commit 1cd771a

Browse files
authored
fix(node): Handle inspector already open (#10025)
If the inspector is already running, then ANR should be able to (re)use that, instead of opening it itself.
1 parent d2e0465 commit 1cd771a

File tree

2 files changed

+23
-1
lines changed
  • packages

2 files changed

+23
-1
lines changed

packages/node-integration-tests/suites/anr/test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,26 @@ conditionalTest({ min: 16 })('should report ANR when event loop blocked', () =>
9595
});
9696
});
9797

98+
test('With --inspect', done => {
99+
expect.assertions(7);
100+
101+
const testScriptPath = path.resolve(__dirname, 'basic.js');
102+
103+
childProcess.exec(`node --inspect ${testScriptPath}`, { encoding: 'utf8' }, (_, stdout) => {
104+
const [event] = parseJsonLines<[Event]>(stdout, 1);
105+
106+
expect(event.exception?.values?.[0].mechanism).toEqual({ type: 'ANR' });
107+
expect(event.exception?.values?.[0].type).toEqual('ApplicationNotResponding');
108+
expect(event.exception?.values?.[0].value).toEqual('Application Not Responding for at least 200 ms');
109+
expect(event.exception?.values?.[0].stacktrace?.frames?.length).toBeGreaterThan(4);
110+
111+
expect(event.exception?.values?.[0].stacktrace?.frames?.[2].function).toEqual('?');
112+
expect(event.exception?.values?.[0].stacktrace?.frames?.[3].function).toEqual('longWork');
113+
114+
done();
115+
});
116+
});
117+
98118
test('With session', done => {
99119
expect.assertions(9);
100120

packages/node/src/integrations/anr/index.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,9 @@ export class Anr implements Integration {
111111
if (options.captureStackTrace) {
112112
// eslint-disable-next-line @typescript-eslint/no-var-requires
113113
const inspector: InspectorApi = require('inspector');
114-
inspector.open(0);
114+
if (!inspector.url()) {
115+
inspector.open(0);
116+
}
115117
}
116118

117119
const { Worker } = getWorkerThreads();

0 commit comments

Comments
 (0)