Fix restore replica output bytes stat update (#1486)

This PR fixes the missing stat update for `total_net_repl_output_bytes`
that was removed during the refactoring in PR #758. The metric was not
being updated when writing to replica connections.

Changes:
- Restored the stat update in postWriteToClient for replica connections
- Added integration test to verify the metric is properly updated

Signed-off-by: Uri Yagelnik <uriy@amazon.com>
Co-authored-by: Binbin <binloveplay1314@qq.com>
This commit is contained in:
uriyage 2024-12-25 04:58:49 +02:00 committed by GitHub
parent da92c1d6c8
commit bb325bde35
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 0 deletions

View File

@ -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) {

View File

@ -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
}
}
}