Fix lastbgsave_status, when new child signal handler get intended kill
And add a test for that.
This commit is contained in:
parent
8bf7c6d789
commit
2add4524c5
@ -1910,6 +1910,13 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
|
|||||||
|
|
||||||
if (WIFSIGNALED(statloc)) bysignal = WTERMSIG(statloc);
|
if (WIFSIGNALED(statloc)) bysignal = WTERMSIG(statloc);
|
||||||
|
|
||||||
|
/* sigKillChildHandler catches the signal and calls exit(), but we
|
||||||
|
* must make sure not to flag lastbgsave_status, etc incorrectly. */
|
||||||
|
if (exitcode == SIGUSR1) {
|
||||||
|
bysignal = SIGUSR1;
|
||||||
|
exitcode = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (pid == -1) {
|
if (pid == -1) {
|
||||||
serverLog(LL_WARNING,"wait3() returned an error: %s. "
|
serverLog(LL_WARNING,"wait3() returned an error: %s. "
|
||||||
"rdb_child_pid = %d, aof_child_pid = %d, module_child_pid = %d",
|
"rdb_child_pid = %d, aof_child_pid = %d, module_child_pid = %d",
|
||||||
@ -4578,7 +4585,7 @@ static void sigKillChildHandler(int sig) {
|
|||||||
UNUSED(sig);
|
UNUSED(sig);
|
||||||
/* this handler is needed to resolve a valgrind warning */
|
/* this handler is needed to resolve a valgrind warning */
|
||||||
serverLogFromHandler(LL_WARNING, "Received SIGUSR1 in child, exiting now.");
|
serverLogFromHandler(LL_WARNING, "Received SIGUSR1 in child, exiting now.");
|
||||||
exitFromChild(1);
|
exitFromChild(SIGUSR1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setupChildSignalHandlers(void) {
|
void setupChildSignalHandlers(void) {
|
||||||
|
@ -115,3 +115,17 @@ start_server_and_kill_it [list "dir" $server_path] {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
start_server {} {
|
||||||
|
test {Test FLUSHALL aborts bgsave} {
|
||||||
|
r config set rdb-key-save-delay 1000
|
||||||
|
r debug populate 1000
|
||||||
|
r bgsave
|
||||||
|
assert_equal [s rdb_bgsave_in_progress] 1
|
||||||
|
r flushall
|
||||||
|
after 200
|
||||||
|
assert_equal [s rdb_bgsave_in_progress] 0
|
||||||
|
# make sure the server is still writable
|
||||||
|
r set x xx
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user