Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
4dc69497
Commit
4dc69497
authored
Jan 21, 2019
by
antirez
Browse files
Refactoring: always kill AOF/RDB child via helper functions.
parent
5f42bfce
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/aof.c
View file @
4dc69497
...
...
@@ -204,7 +204,7 @@ void aof_background_fsync(int fd) {
}
/* Kills an AOFRW child process if exists */
static
void
killAppendOnlyChild
(
void
)
{
void
killAppendOnlyChild
(
void
)
{
int
statloc
;
/* No AOFRW child? return. */
if
(
server
.
aof_child_pid
==
-
1
)
return
;
...
...
src/db.c
View file @
4dc69497
...
...
@@ -448,12 +448,7 @@ void flushallCommand(client *c) {
signalFlushedDb
(
-
1
);
server
.
dirty
+=
emptyDb
(
-
1
,
flags
,
NULL
);
addReply
(
c
,
shared
.
ok
);
if
(
server
.
rdb_child_pid
!=
-
1
)
{
kill
(
server
.
rdb_child_pid
,
SIGUSR1
);
rdbRemoveTempFile
(
server
.
rdb_child_pid
);
closeChildInfoPipe
();
updateDictResizePolicy
();
}
if
(
server
.
rdb_child_pid
!=
-
1
)
killRDBChild
();
if
(
server
.
saveparamslen
>
0
)
{
/* Normally rdbSave() will reset dirty, but we don't want this here
* as otherwise FLUSHALL will not be replicated nor put into the AOF. */
...
...
src/rdb.c
View file @
4dc69497
...
...
@@ -2225,6 +2225,16 @@ void backgroundSaveDoneHandler(int exitcode, int bysignal) {
}
}
/* Kill the RDB saving child using SIGUSR1 (so that the parent will know
* the child did not exit for an error, but because we wanted), and performs
* the cleanup needed. */
void
killRDBChild
(
void
)
{
kill
(
server
.
rdb_child_pid
,
SIGUSR1
);
rdbRemoveTempFile
(
server
.
rdb_child_pid
);
closeChildInfoPipe
();
updateDictResizePolicy
();
}
/* Spawn an RDB child that writes the RDB to the sockets of the slaves
* that are currently in SLAVE_STATE_WAIT_BGSAVE_START state. */
int
rdbSaveToSlavesSockets
(
rdbSaveInfo
*
rsi
)
{
...
...
src/replication.c
View file @
4dc69497
...
...
@@ -1254,10 +1254,7 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
"Killing process %ld and removing its temp file to avoid "
"any race"
,
(
long
)
server
.
rdb_child_pid
);
kill
(
server
.
rdb_child_pid
,
SIGUSR1
);
rdbRemoveTempFile
(
server
.
rdb_child_pid
);
closeChildInfoPipe
();
updateDictResizePolicy
();
killRDBChild
();
}
if
(
rename
(
server
.
repl_transfer_tmpfile
,
server
.
rdb_filename
)
==
-
1
)
{
...
...
src/server.c
View file @
4dc69497
...
...
@@ -2798,8 +2798,7 @@ int prepareForShutdown(int flags) {
overwrite the synchronous saving did by SHUTDOWN. */
if
(
server
.
rdb_child_pid
!=
-
1
)
{
serverLog
(
LL_WARNING
,
"There is a child saving an .rdb. Killing it!"
);
kill
(
server
.
rdb_child_pid
,
SIGUSR1
);
rdbRemoveTempFile
(
server
.
rdb_child_pid
);
killRDBChild
();
}
if
(
server
.
aof_state
!=
AOF_OFF
)
{
...
...
@@ -2814,7 +2813,7 @@ int prepareForShutdown(int flags) {
}
serverLog
(
LL_WARNING
,
"There is a child rewriting the AOF. Killing it!"
);
kill
(
server
.
aof_child_pid
,
SIGUSR1
);
kill
AppendOnlyChild
(
);
}
/* Append only file: flush buffers and fsync() the AOF at exit */
serverLog
(
LL_NOTICE
,
"Calling fsync() on the AOF file."
);
...
...
src/server.h
View file @
4dc69497
...
...
@@ -1674,6 +1674,7 @@ int writeCommandsDeniedByDiskError(void);
/* RDB persistence */
#include "rdb.h"
int
rdbSaveRio
(
rio
*
rdb
,
int
*
error
,
int
flags
,
rdbSaveInfo
*
rsi
);
void
killRDBChild
(
void
);
/* AOF persistence */
void
flushAppendOnlyFile
(
int
force
);
...
...
@@ -1687,6 +1688,7 @@ void backgroundRewriteDoneHandler(int exitcode, int bysignal);
void
aofRewriteBufferReset
(
void
);
unsigned
long
aofRewriteBufferSize
(
void
);
ssize_t
aofReadDiffFromParent
(
void
);
void
killAppendOnlyChild
(
void
);
/* Child info */
void
openChildInfoPipe
(
void
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment