diff --git a/src/networking.c b/src/networking.c index 9f36f24275..d93046a603 100644 --- a/src/networking.c +++ b/src/networking.c @@ -2231,6 +2231,8 @@ int postWriteToClient(client *c) { server.stat_total_writes_processed++; if (getClientType(c) != CLIENT_TYPE_REPLICA) { _postWriteToClient(c); + } else { + server.stat_net_repl_output_bytes += c->nwritten > 0 ? c->nwritten : 0; } if (c->write_flags & WRITE_FLAGS_WRITE_ERROR) { diff --git a/tests/integration/replication.tcl b/tests/integration/replication.tcl index 1b5b0c030a..6d3c4e934f 100644 --- a/tests/integration/replication.tcl +++ b/tests/integration/replication.tcl @@ -194,6 +194,30 @@ start_server {tags {"repl external:skip"}} { } assert_match {*calls=1,*,rejected_calls=0,failed_calls=1*} [cmdrstat blpop $B] } + + test {Replica output bytes metric} { + # reset stats + $A config resetstat + + set info [$A info stats] + set replica_bytes_output [getInfoProperty $info "total_net_repl_output_bytes"] + assert_equal $replica_bytes_output 0 + + # sent set command to primary + $A set key value + + # wait for command propagation + wait_for_condition 50 100 { + [$B get key] eq {value} + } else { + fail "Replica did not receive the command" + } + + # get the new stats + set info [$A info stats] + set replica_bytes_output [getInfoProperty $info "total_net_repl_output_bytes"] + assert_morethan $replica_bytes_output 0 + } } }