Skip to content

Commit 0d76160

Browse files
committed
use tree-kill
1 parent 0938e02 commit 0d76160

File tree

3 files changed

+24
-67
lines changed

3 files changed

+24
-67
lines changed

dev-packages/node-overhead-gh-action/lib/getOverheadMeasurements.mjs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { spawn } from 'child_process';
22
import { dirname, join } from 'path';
3+
import treeKill from 'tree-kill';
34
import { fileURLToPath } from 'url';
45

56
const DEBUG = !!process.env.DEBUG;
@@ -45,7 +46,7 @@ async function startAppProcess(cmd) {
4546
rejectAppClose = reject;
4647
});
4748

48-
appProcess.on('exit', code => {
49+
appProcess.on('close', code => {
4950
if (code && code !== 0) {
5051
rejectAppClose(new Error(`App process exited with code ${code}`));
5152
} else {
@@ -63,7 +64,7 @@ async function startAppProcess(cmd) {
6364

6465
appProcess.stderr.on('data', data => {
6566
log(`appProcess stderr: ${data}`);
66-
appProcess.kill();
67+
killProcess(appProcess);
6768
reject(data);
6869
});
6970
});
@@ -74,7 +75,7 @@ async function startAppProcess(cmd) {
7475
appProcess.stdout.end();
7576
appProcess.stderr.end();
7677

77-
appProcess.kill();
78+
killProcess(appProcess);
7879
await appClosePromise;
7980
log('App process killed');
8081
};
@@ -99,8 +100,8 @@ async function startAutocannonProcess() {
99100
return new Promise((resolve, reject) => {
100101
autocannon.stderr.on('data', data => {
101102
log(`autocannon stderr: ${data}`);
102-
autocannon.kill();
103103
lastJson = undefined;
104+
killProcess(autocannon);
104105
});
105106

106107
autocannon.on('close', code => {
@@ -139,3 +140,20 @@ function log(message) {
139140
console.log(message);
140141
}
141142
}
143+
144+
function killProcess(process) {
145+
return new Promise(resolve => {
146+
const pid = process.pid;
147+
148+
if (!pid) {
149+
log('Process has no PID, fallback killing process...');
150+
process.kill();
151+
resolve();
152+
return;
153+
}
154+
155+
treeKill(pid, () => {
156+
resolve();
157+
});
158+
});
159+
}

dev-packages/node-overhead-gh-action/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
"@actions/github": "^5.0.0",
3131
"@actions/glob": "0.4.0",
3232
"@actions/io": "1.1.3",
33-
"markdown-table": "3.0.3"
33+
"markdown-table": "3.0.3",
34+
"tree-kill": "1.2.2"
3435
},
3536
"volta": {
3637
"extends": "../../package.json"

yarn.lock

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -7034,68 +7034,6 @@
70347034
"@sentry/cli-win32-i686" "2.52.0"
70357035
"@sentry/cli-win32-x64" "2.52.0"
70367036

7037-
7038-
version "10.7.0"
7039-
resolved "https://registry.yarnpkg.com/@sentry/core/-/core-10.7.0.tgz#4a371b3449879956be665a6747c6792d14205b5a"
7040-
integrity sha512-y1Ni71O6TqeSi2Ug78StkVLHnybHZVYhnbYtj2w4g89XnQcqo4GUeR8dQRQBJpCX98UrHw22OAE8BXtKb03yXw==
7041-
7042-
7043-
version "10.7.0"
7044-
resolved "https://registry.yarnpkg.com/@sentry/node-core/-/node-core-10.7.0.tgz#01d0ebb77d4da468fc181e0879153057148eb111"
7045-
integrity sha512-iafuG3Fp0pleuk1WaL4UW7wpT6C86pMEQBZ7ARZ7UHc9ujRi/dewKFi0Stu0SxJm6PZ706VZ8Igz9xpvQ0aEEg==
7046-
dependencies:
7047-
"@sentry/core" "10.7.0"
7048-
"@sentry/opentelemetry" "10.7.0"
7049-
import-in-the-middle "^1.14.2"
7050-
7051-
7052-
version "10.7.0"
7053-
resolved "https://registry.yarnpkg.com/@sentry/node/-/node-10.7.0.tgz#a84ba5ce6b644cebe22052d04b2b3f0a97888568"
7054-
integrity sha512-VtUFyf8avWUqN5RRTTmcU8aGdyNUGHzz/f+3n86BR5gBL3lziKOajyc0VClfc80VLsih+PWQ/5FrIHl+S1S1YQ==
7055-
dependencies:
7056-
"@opentelemetry/api" "^1.9.0"
7057-
"@opentelemetry/context-async-hooks" "^2.0.0"
7058-
"@opentelemetry/core" "^2.0.0"
7059-
"@opentelemetry/instrumentation" "^0.203.0"
7060-
"@opentelemetry/instrumentation-amqplib" "0.50.0"
7061-
"@opentelemetry/instrumentation-connect" "0.47.0"
7062-
"@opentelemetry/instrumentation-dataloader" "0.21.1"
7063-
"@opentelemetry/instrumentation-express" "0.52.0"
7064-
"@opentelemetry/instrumentation-fs" "0.23.0"
7065-
"@opentelemetry/instrumentation-generic-pool" "0.47.0"
7066-
"@opentelemetry/instrumentation-graphql" "0.51.0"
7067-
"@opentelemetry/instrumentation-hapi" "0.50.0"
7068-
"@opentelemetry/instrumentation-http" "0.203.0"
7069-
"@opentelemetry/instrumentation-ioredis" "0.51.0"
7070-
"@opentelemetry/instrumentation-kafkajs" "0.13.0"
7071-
"@opentelemetry/instrumentation-knex" "0.48.0"
7072-
"@opentelemetry/instrumentation-koa" "0.51.0"
7073-
"@opentelemetry/instrumentation-lru-memoizer" "0.48.0"
7074-
"@opentelemetry/instrumentation-mongodb" "0.56.0"
7075-
"@opentelemetry/instrumentation-mongoose" "0.50.0"
7076-
"@opentelemetry/instrumentation-mysql" "0.49.0"
7077-
"@opentelemetry/instrumentation-mysql2" "0.50.0"
7078-
"@opentelemetry/instrumentation-pg" "0.55.0"
7079-
"@opentelemetry/instrumentation-redis" "0.51.0"
7080-
"@opentelemetry/instrumentation-tedious" "0.22.0"
7081-
"@opentelemetry/instrumentation-undici" "0.14.0"
7082-
"@opentelemetry/resources" "^2.0.0"
7083-
"@opentelemetry/sdk-trace-base" "^2.0.0"
7084-
"@opentelemetry/semantic-conventions" "^1.34.0"
7085-
"@prisma/instrumentation" "6.14.0"
7086-
"@sentry/core" "10.7.0"
7087-
"@sentry/node-core" "10.7.0"
7088-
"@sentry/opentelemetry" "10.7.0"
7089-
import-in-the-middle "^1.14.2"
7090-
minimatch "^9.0.0"
7091-
7092-
7093-
version "10.7.0"
7094-
resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-10.7.0.tgz#ae6a12a9a1bc30d0e260398085a691cabb7bd814"
7095-
integrity sha512-8SrRZyERDfCYYett6dklGe+qWMDZSytKPIZpS0nDb0IqZGC02ZVIhRISbBTy4Gctowu/gMK9XaOXfBNN0pI1sg==
7096-
dependencies:
7097-
"@sentry/core" "10.7.0"
7098-
70997037
"@sentry/rollup-plugin@^4.1.1":
71007038
version "4.1.1"
71017039
resolved "https://registry.yarnpkg.com/@sentry/rollup-plugin/-/rollup-plugin-4.1.1.tgz#ece90c337d1f78a2a445d3986b63321877fd4e41"

0 commit comments

Comments
 (0)