From 4c54528f0fb56dec1373ead376a017b59743b04e Mon Sep 17 00:00:00 2001 From: Oran Agra Date: Sat, 12 Nov 2022 20:35:34 +0200 Subject: [PATCH] fixes for fork child exit and test: #11463 (#11499) Fix a few issues with the recent #11463 * use exitFromChild instead of exit * test should ignore defunct process since that's what we expect to happen for thees child processes when the parent dies. * fix typo Co-authored-by: Binbin --- src/childinfo.c | 2 +- tests/integration/replication.tcl | 2 +- tests/support/util.tcl | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/childinfo.c b/src/childinfo.c index e5184ff8b..1303dd043 100644 --- a/src/childinfo.c +++ b/src/childinfo.c @@ -114,7 +114,7 @@ void sendChildInfoGeneric(childInfoType info_type, size_t keys, double progress, if (write(server.child_info_pipe[1], &data, wlen) != wlen) { /* Failed writing to parent, it could have been killed, exit. */ serverLog(LL_WARNING,"Child failed reporting info to parent, exiting. %s", strerror(errno)); - exit(1); + exitFromChild(1); } } diff --git a/tests/integration/replication.tcl b/tests/integration/replication.tcl index 617b9f78e..4867b5afd 100644 --- a/tests/integration/replication.tcl +++ b/tests/integration/replication.tcl @@ -1013,7 +1013,7 @@ test "diskless replication child being killed is collected" { } {} {external:skip} foreach mdl {yes no} { - test "replication dies when parent is killed - diskless: $mdl" { + test "replication child dies when parent is killed - diskless: $mdl" { # when master is killed, make sure the fork child can detect that and exit start_server {tags {"repl"}} { set master [srv 0 client] diff --git a/tests/support/util.tcl b/tests/support/util.tcl index a7332d29c..22774868c 100644 --- a/tests/support/util.tcl +++ b/tests/support/util.tcl @@ -631,6 +631,7 @@ proc process_is_alive pid { if {[catch {exec ps -p $pid} err]} { return 0 } else { + if {[string match "**" $err]} { return 0 } return 1 } }