Archived
1
0

Provide a way to tell when event handlers are finished

This lets us actually wait for disposal before a graceful exit.
This commit is contained in:
Asher
2020-11-04 16:49:01 -06:00
parent 396af23842
commit 8252c372af
3 changed files with 26 additions and 7 deletions

View File

@ -39,13 +39,14 @@ export class IpcMain {
process.on("SIGTERM", () => this._onDispose.emit("SIGTERM"))
process.on("exit", () => this._onDispose.emit(undefined))
this.onDispose((signal) => {
this.onDispose((signal, wait) => {
// Remove listeners to avoid possibly triggering disposal again.
process.removeAllListeners()
// Let any other handlers run first then exit.
// Try waiting for other handlers run first then exit.
logger.debug(`${parentPid ? "inner process" : "wrapper"} ${process.pid} disposing`, field("code", signal))
setTimeout(() => this.exit(0), 0)
wait.then(() => this.exit(0))
setTimeout(() => this.exit(0), 5000)
})
// Kill the inner process if the parent dies. This is for the case where the