diff --git a/src/networking.cpp b/src/networking.cpp index d5a429dfe..9c968da32 100644 --- a/src/networking.cpp +++ b/src/networking.cpp @@ -3384,7 +3384,7 @@ void processEventsWhileBlocked(int iel) { locker.release(); // Restore it so the calling code is not confused - if (fReplBacklog) { + if (fReplBacklog && !serverTL->el->stop) { g_pserver->repl_batch_idxStart = g_pserver->repl_backlog_idx; g_pserver->repl_batch_offStart = g_pserver->master_repl_offset; } diff --git a/src/server.cpp b/src/server.cpp index 15d8ca77e..181f9defc 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -4416,6 +4416,12 @@ int prepareForShutdown(int flags) { unlink(cserver.pidfile); } + if (g_pserver->repl_batch_idxStart >= 0) { + flushReplBacklogToClients(); + g_pserver->repl_batch_offStart = -1; + g_pserver->repl_batch_idxStart = -1; + } + /* Best effort flush of replica output buffers, so that we hopefully * send them pending writes. */ flushSlavesOutputBuffers();