Add explicit process.exit() to avoid wait for hanging promises

When using the `@actions/cache` library to save cache entries, it seems that one
or more Promises remain unresolved after the save completes.
With Node20 this causes a delay when exiting the process: the default behaviour
now wait for these Promises to complete. Adding an explicit `Process.exit()`
removes the delay, returning to the Node 16 behaviour.

Fixes #1038
This commit is contained in:
daz 2024-01-16 17:43:55 -07:00
parent 346645706f
commit 42452daeb5
No known key found for this signature in database
7 changed files with 16 additions and 8 deletions

1
dist/main/index.js vendored
View file

@ -140762,6 +140762,7 @@ function run() {
core.info(error.stack);
}
}
process.exit();
});
}
exports.run = run;

File diff suppressed because one or more lines are too long

4
dist/post/index.js vendored
View file

@ -138072,10 +138072,12 @@ function run() {
catch (error) {
if (error instanceof errors_1.PostActionJobFailure) {
core.setFailed(String(error));
return;
}
else {
handleFailure(error);
}
}
process.exit();
});
}
exports.run = run;

File diff suppressed because one or more lines are too long

2
package-lock.json generated
View file

@ -35,7 +35,7 @@
"eslint-plugin-prettier": "5.1.2",
"jest": "29.7.0",
"js-yaml": "4.1.0",
"npm-run-all": "^4.1.5",
"npm-run-all": "4.1.5",
"patch-package": "8.0.0",
"prettier": "3.1.1",
"ts-jest": "29.1.1",

View file

@ -29,6 +29,9 @@ export async function run(): Promise<void> {
core.info(error.stack)
}
}
// Explicit process.exit() to prevent waiting for hanging promises.
process.exit()
}
run()

View file

@ -16,13 +16,15 @@ export async function run(): Promise<void> {
} catch (error) {
if (error instanceof PostActionJobFailure) {
core.setFailed(String(error))
return
}
} else {
handleFailure(error)
}
}
// Explicit process.exit() to prevent waiting for promises left hanging by `@actions/cache` on save.
process.exit()
}
function handleFailure(error: unknown): void {
core.warning(`Unhandled error in Gradle post-action - job will continue: ${error}`)
if (error instanceof Error && error.stack) {