Merge pull request #4540 from hqin6/unstable

fixbug for #4538 Error opening /setting AOF rewrite IPC pipes: No suc…
This commit is contained in:
Salvatore Sanfilippo 2017-12-15 12:41:02 +01:00 committed by GitHub
commit 238c9bd086
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -237,11 +237,11 @@ void stopAppendOnly(void) {
* at runtime using the CONFIG command. */ * at runtime using the CONFIG command. */
int startAppendOnly(void) { int startAppendOnly(void) {
char cwd[MAXPATHLEN]; /* Current working dir path for error messages. */ char cwd[MAXPATHLEN]; /* Current working dir path for error messages. */
int newfd;
server.aof_last_fsync = server.unixtime; newfd = open(server.aof_filename,O_WRONLY|O_APPEND|O_CREAT,0644);
server.aof_fd = open(server.aof_filename,O_WRONLY|O_APPEND|O_CREAT,0644);
serverAssert(server.aof_state == AOF_OFF); serverAssert(server.aof_state == AOF_OFF);
if (server.aof_fd == -1) { if (newfd == -1) {
char *cwdp = getcwd(cwd,MAXPATHLEN); char *cwdp = getcwd(cwd,MAXPATHLEN);
serverLog(LL_WARNING, serverLog(LL_WARNING,
@ -256,13 +256,15 @@ int startAppendOnly(void) {
server.aof_rewrite_scheduled = 1; server.aof_rewrite_scheduled = 1;
serverLog(LL_WARNING,"AOF was enabled but there is already a child process saving an RDB file on disk. An AOF background was scheduled to start when possible."); serverLog(LL_WARNING,"AOF was enabled but there is already a child process saving an RDB file on disk. An AOF background was scheduled to start when possible.");
} else if (rewriteAppendOnlyFileBackground() == C_ERR) { } else if (rewriteAppendOnlyFileBackground() == C_ERR) {
close(server.aof_fd); close(newfd);
serverLog(LL_WARNING,"Redis needs to enable the AOF but can't trigger a background AOF rewrite operation. Check the above logs for more info about the error."); serverLog(LL_WARNING,"Redis needs to enable the AOF but can't trigger a background AOF rewrite operation. Check the above logs for more info about the error.");
return C_ERR; return C_ERR;
} }
/* We correctly switched on AOF, now wait for the rewrite to be complete /* We correctly switched on AOF, now wait for the rewrite to be complete
* in order to append data on disk. */ * in order to append data on disk. */
server.aof_state = AOF_WAIT_REWRITE; server.aof_state = AOF_WAIT_REWRITE;
server.aof_last_fsync = server.unixtime;
server.aof_fd = newfd;
return C_OK; return C_OK;
} }