diff --git a/src/replication.c b/src/replication.c index c1e4d5c2c..a7040e226 100644 --- a/src/replication.c +++ b/src/replication.c @@ -2805,7 +2805,8 @@ void bufferReplData(connection *conn) { remaining_bytes = readIntoReplDataBlock(conn, tail, remaining_bytes); } if (readlen && remaining_bytes == 0) { - if (server.pending_repl_data.len > server.client_obuf_limits[CLIENT_TYPE_REPLICA].hard_limit_bytes) { + if (server.client_obuf_limits[CLIENT_TYPE_REPLICA].hard_limit_bytes && + server.pending_repl_data.len > server.client_obuf_limits[CLIENT_TYPE_REPLICA].hard_limit_bytes) { serverLog(LL_NOTICE, "Replication buffer limit reached, stopping buffering."); /* Stop accumulating primary commands. */ connSetReadHandler(conn, NULL); diff --git a/tests/integration/replication-buffer.tcl b/tests/integration/replication-buffer.tcl index 18f8aa7eb..66a8581dc 100644 --- a/tests/integration/replication-buffer.tcl +++ b/tests/integration/replication-buffer.tcl @@ -132,8 +132,9 @@ start_server {} { # with master. $master config set repl-timeout 1000 $replica1 config set repl-timeout 1000 + $replica1 config set client-output-buffer-limit "replica 1024 0 0" $replica2 config set repl-timeout 1000 - $replica2 config set client-output-buffer-limit "replica 0 0 0" + $replica2 config set client-output-buffer-limit "replica 1024 0 0" $replica2 config set dual-channel-replication-enabled $dualchannel $replica1 replicaof $master_host $master_port