forked from MirrorHub/synapse
Metrics for number of RDATA commands received
I found myself wishing we had this.
This commit is contained in:
parent
5e16c1dc8c
commit
5c3c32f16f
1 changed files with 14 additions and 5 deletions
|
@ -517,25 +517,28 @@ class ClientReplicationStreamProtocol(BaseReplicationStreamProtocol):
|
||||||
self.send_error("Wrong remote")
|
self.send_error("Wrong remote")
|
||||||
|
|
||||||
def on_RDATA(self, cmd):
|
def on_RDATA(self, cmd):
|
||||||
|
stream_name = cmd.stream_name
|
||||||
|
inbound_rdata_count.inc(stream_name)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
row = STREAMS_MAP[cmd.stream_name].ROW_TYPE(*cmd.row)
|
row = STREAMS_MAP[stream_name].ROW_TYPE(*cmd.row)
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception(
|
logger.exception(
|
||||||
"[%s] Failed to parse RDATA: %r %r",
|
"[%s] Failed to parse RDATA: %r %r",
|
||||||
self.id(), cmd.stream_name, cmd.row
|
self.id(), stream_name, cmd.row
|
||||||
)
|
)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if cmd.token is None:
|
if cmd.token is None:
|
||||||
# I.e. this is part of a batch of updates for this stream. Batch
|
# I.e. this is part of a batch of updates for this stream. Batch
|
||||||
# until we get an update for the stream with a non None token
|
# until we get an update for the stream with a non None token
|
||||||
self.pending_batches.setdefault(cmd.stream_name, []).append(row)
|
self.pending_batches.setdefault(stream_name, []).append(row)
|
||||||
else:
|
else:
|
||||||
# Check if this is the last of a batch of updates
|
# Check if this is the last of a batch of updates
|
||||||
rows = self.pending_batches.pop(cmd.stream_name, [])
|
rows = self.pending_batches.pop(stream_name, [])
|
||||||
rows.append(row)
|
rows.append(row)
|
||||||
|
|
||||||
self.handler.on_rdata(cmd.stream_name, cmd.token, rows)
|
self.handler.on_rdata(stream_name, cmd.token, rows)
|
||||||
|
|
||||||
def on_POSITION(self, cmd):
|
def on_POSITION(self, cmd):
|
||||||
self.handler.on_position(cmd.stream_name, cmd.token)
|
self.handler.on_position(cmd.stream_name, cmd.token)
|
||||||
|
@ -644,3 +647,9 @@ metrics.register_callback(
|
||||||
},
|
},
|
||||||
labels=["command", "name", "conn_id"],
|
labels=["command", "name", "conn_id"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# number of updates received for each RDATA stream
|
||||||
|
inbound_rdata_count = metrics.register_counter(
|
||||||
|
"inbound_rdata_count",
|
||||||
|
labels=["stream_name"],
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in a new issue