From b0a1ac1a9932123135a431fec9cba7e38242f7d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Mon, 30 Apr 2018 11:13:48 +0100 Subject: [PATCH 1/3] exit handler propagates event --- README.md | 11 ++++++++++- RedisServer.js | 8 +++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aff9284..6ad1200 100644 --- a/README.md +++ b/README.md @@ -167,4 +167,13 @@ Emitted when attempting to stop a Redis server. #### close -Emitted once a Redis server has stopped. +Emitted once a Redis server has stopped. This only happens when `server.closed` is called, +not when the `child_process` exits on it's own. + +#### exiting + +Emmited when a Redis server is exiting or `child_process` exits with an error. + +#### exit + +Emmited when a Redis server exited (and `server.closed` was called). diff --git a/RedisServer.js b/RedisServer.js index fb971d8..6aff7ec 100644 --- a/RedisServer.js +++ b/RedisServer.js @@ -243,11 +243,17 @@ class RedisServer extends events.EventEmitter { /** * A listener to close the server when the current process exits. + * For the parameter list, please consult: + * https://nodejs.org/api/child_process.html#child_process_event_exit + * @argument {Number} [exitCode] final process exit code + * @argument {String} [signal] The signal by which the redis was terminated * @return {undefined} */ - const exitListener = () => { + const exitListener = (exitCode, signal) => { + server.emit('exiting', { exitCode, signal }); // istanbul ignore next server.close(); + server.emit('exit', { exitCode, signal }); }; server.emit('opening'); From 4598537af955f71258edb91508afe0bce74144d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Mon, 30 Apr 2018 20:21:29 +0100 Subject: [PATCH 2/3] Added error to closing event --- RedisServer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RedisServer.js b/RedisServer.js index 6aff7ec..fcea32a 100644 --- a/RedisServer.js +++ b/RedisServer.js @@ -236,7 +236,7 @@ class RedisServer extends events.EventEmitter { else { server.isClosing = true; - server.emit('closing'); + server.emit('closing', result.err); server.process.once('close', () => reject(result.err)); } }; From 8cc24350b78e065f106621db181db800e37a05a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Crist=C3=B3v=C3=A3o?= Date: Mon, 30 Apr 2018 20:22:01 +0100 Subject: [PATCH 3/3] Clarification of README.md for close and exit event --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ad1200..e611b69 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ Emitted when attempting to stop a Redis server. #### close Emitted once a Redis server has stopped. This only happens when `server.closed` is called, -not when the `child_process` exits on it's own. +not when the `child_process` fails on it's own (`redis-server` not found, for example). #### exiting