Skip to content

Commit 76fee93

Browse files
committed
Fix #9: Fix VideoFrame attributes addition, keep the same message
don't create a new message when adding measurements attributes
1 parent a10abac commit 76fee93

File tree

4 files changed

+15
-16
lines changed

4 files changed

+15
-16
lines changed

savant_cloudpin/services/_base.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ async def _inbound_ws_loop(self) -> None:
112112

113113
self._measurements.measure_sink_message_data(frame)
114114
topic, msg, extra = protocol.unpack_stream_frame(frame)
115-
msg = self._measurements.measure_sink_message(msg)
115+
self._measurements.add_sink_message_measure(msg)
116116
self._sink.send_message(topic, msg, extra)
117117
self._sink_queue.task_done()
118118
await asyncio.sleep(0)
@@ -141,8 +141,9 @@ async def _outbound_ws_loop(self) -> None:
141141
await asyncio.sleep(self._io_timeout)
142142
continue
143143

144-
message = self._measurements.measure_source_message(msg.message)
145-
packed = protocol.pack_stream_frame(msg.topic, message, msg.data(0))
144+
topic, message, extra = msg.topic, msg.message, msg.data(0)
145+
self._measurements.add_source_message_measure(message)
146+
packed = protocol.pack_stream_frame(topic, message, extra)
146147
transport.send(WSMsgType.BINARY, packed)
147148
self._measurements.measure_source_message_data(packed)
148149
await asyncio.sleep(0)

savant_cloudpin/services/_measuring.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -208,16 +208,16 @@ def _attrs(
208208
pass
209209
return cast(Attributes, attrs)
210210

211-
def measure_sink_message(self, message: Message) -> Message:
212-
return self._measure_message(message, socket="Sink")
211+
def add_sink_message_measure(self, message: Message) -> None:
212+
self._add_message_measure(message, socket="Sink")
213213

214-
def measure_source_message(self, message: Message) -> Message:
215-
return self._measure_message(message, socket="Source")
214+
def add_source_message_measure(self, message: Message) -> None:
215+
self._add_message_measure(message, socket="Source")
216216

217-
def _measure_message(self, message: Message, socket: ZMQSocket) -> Message:
217+
def _add_message_measure(self, message: Message, socket: ZMQSocket) -> None:
218218
self.metrics.messages.add(1, self._attrs(socket=socket))
219219
self._count_trace(message, socket)
220-
return self._measure_video_frame(message, socket)
220+
self._measure_video_frame(message, socket)
221221

222222
def _count_trace(self, message: Message, socket: ZMQSocket) -> None:
223223
span = getattr(message, "span_context", None)
@@ -232,7 +232,7 @@ def _count_trace(self, message: Message, socket: ZMQSocket) -> None:
232232
)
233233
self.metrics.traces.add(1, attributes=attrs)
234234

235-
def _measure_video_frame(self, message: Message, socket: ZMQSocket) -> Message:
235+
def _measure_video_frame(self, message: Message, socket: ZMQSocket) -> None:
236236
timings = VideoFrameTimings(message)
237237
match self._service, socket:
238238
case "Client", "Source":
@@ -245,7 +245,6 @@ def _measure_video_frame(self, message: Message, socket: ZMQSocket) -> Message:
245245
timings.append_timing(LABEL_CLIENT_SINK)
246246

247247
self._detect_video_frame_delay(timings)
248-
return timings.message
249248

250249
def _detect_video_frame_delay(self, timings: VideoFrameTimings) -> None:
251250
delay = timings.get_delay(LABEL_CLIENT_SOURCE, LABEL_SERVER_SINK)

savant_cloudpin/services/_video_frame.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ def append_timing(self, label: ValueLabel, truncate: bool = False) -> None:
6464

6565
timings.values = values
6666
video_frame.set_attribute(timings)
67-
self.message = Message.video_frame(video_frame)
6867
self.reset_cache()
6968

7069
def get_delay(self, start_label: ValueLabel, end_label: ValueLabel) -> float | None:

tests/savant_cloudpin/test_observability.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,13 @@ def test_measurements_for_video_frame(delay_mock: Mock) -> None:
106106
msg = MessageData.fake_video_frame().to_message()
107107

108108
with freeze_time("2025-11-11", tz_offset=0) as frozen_time:
109-
msg = client_measurements.measure_source_message(msg)
109+
client_measurements.add_source_message_measure(msg)
110110
frozen_time.tick(delta=timedelta(seconds=2))
111-
msg = server_measurements.measure_sink_message(msg)
111+
server_measurements.add_sink_message_measure(msg)
112112
frozen_time.tick(delta=timedelta(seconds=10))
113-
msg = server_measurements.measure_source_message(msg)
113+
server_measurements.add_source_message_measure(msg)
114114
frozen_time.tick(delta=timedelta(seconds=3))
115-
msg = client_measurements.measure_sink_message(msg)
115+
client_measurements.add_sink_message_measure(msg)
116116

117117
assert delay_mock.record.called
118118
assert delay_mock.record.call_args_list == [

0 commit comments

Comments
 (0)