From 86c8cf42a05f762388163c14a2e85156c80d52c7 Mon Sep 17 00:00:00 2001 From: Wang Yuan Date: Tue, 13 Oct 2020 14:34:07 +0800 Subject: [PATCH] Remove temporary aof and rdb files in a background thread (#7905) If we fail or stop to rewrite aof, we need to remove temporary aof. We also remove temporary rdb when replicas abort to receive rdb. But currently we delete them in main thread, to avoid blocking, we should use bg_unlink to remove them in a background thread. Btw, we have already used this way to removed child process temporary rdb. (cherry picked from commit 5bb220660e6b548daee2a68c81d3e7f4b35e1fcc) --- src/aof.c | 4 ++-- src/replication.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/aof.c b/src/aof.c index b8ba31c19..67c06c44f 100644 --- a/src/aof.c +++ b/src/aof.c @@ -1680,10 +1680,10 @@ void aofRemoveTempFile(pid_t childpid) { char tmpfile[256]; snprintf(tmpfile,256,"temp-rewriteaof-bg-%d.aof", (int) childpid); - unlink(tmpfile); + bg_unlink(tmpfile); snprintf(tmpfile,256,"temp-rewriteaof-%d.aof", (int) childpid); - unlink(tmpfile); + bg_unlink(tmpfile); } /* Update the server.aof_current_size field explicitly using stat(2) diff --git a/src/replication.c b/src/replication.c index acc0befbb..5f1868e84 100644 --- a/src/replication.c +++ b/src/replication.c @@ -2453,7 +2453,7 @@ void replicationAbortSyncTransfer(void) { undoConnectWithMaster(); if (server.repl_transfer_fd!=-1) { close(server.repl_transfer_fd); - unlink(server.repl_transfer_tmpfile); + bg_unlink(server.repl_transfer_tmpfile); zfree(server.repl_transfer_tmpfile); server.repl_transfer_tmpfile = NULL; server.repl_transfer_fd = -1;