node
node copied to clipboard
inspector: add NodeRuntime.waitingForDebugger event
NodeRuntime.waitingForDebugger is a new Inspector Protocol event that will fire when the process being inspected is waiting for the debugger (for example, when inspector.waitForDebugger() is called). This allows inspecting processes to know when the inspected process is waiting for a Runtime.runIfWaitingForDebugger message to resume execution. It allows tooling to resume execution of the inspected process as soon as it deems necessary, without having to guess if the inspected process is waiting or not, making the workflow more deterministic. With a more deterministic workflow, it is possible to update Node.js core tests to avoid race conditions that can cause flakiness. Therefore, tests were also changed as following:
- Remove no-op Runtime.runIfWaitingForDebugger from tests that don't need it
- Use NodeRuntime.waitingForDebugger in all tests that need Runtime.runIfWaitingForDebugger, to ensure order of operations is predictable and correct
- Simplify test-inspector-multisession-ws
There might be value in adding NodeWorker.waitingForDebugger in a future patch, but as of right now, no Node.js core inspector tests using worker threads are failing due to race conditions.
Fixes: https://github.com/nodejs/node/issues/34730
Review requested:
- [ ] @nodejs/test_runner
linter seems to fail
CI: https://ci.nodejs.org/job/node-test-pull-request/56927/
CI: https://ci.nodejs.org/job/node-test-pull-request/57040/
Stress test for flaked tests on RHEL boxes: https://ci.nodejs.org/view/Stress/job/node-stress-single-test/475/ (reference https://github.com/nodejs/reliability/issues/787)
CI: https://ci.nodejs.org/job/node-test-pull-request/57355/
CI: https://ci.nodejs.org/job/node-test-pull-request/57366/
Landed in 0161ad0baf87a0009101ce00b22b874ad6fc5d88