Skip to content

Commit 1e2cfcf

Browse files
authored
Update payload size when updating socket path (#807)
* Update payload size when updating socket path * Add a test case
1 parent ff9f020 commit 1e2cfcf

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

datadog/dogstatsd/base.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -319,20 +319,16 @@ def __init__(
319319
self._enabled = False
320320

321321
# Connection
322-
self._max_payload_size = max_buffer_len
322+
self._max_buffer_len = max_buffer_len
323323
self.socket_timeout = socket_timeout
324324
if socket_path is not None:
325325
self.socket_path = socket_path # type: Optional[text]
326326
self.host = None
327327
self.port = None
328-
if not self._max_payload_size:
329-
self._max_payload_size = UDS_OPTIMAL_PAYLOAD_LENGTH
330328
else:
331329
self.socket_path = None
332330
self.host = self.resolve_host(host, use_default_route)
333331
self.port = int(port)
334-
if not self._max_payload_size:
335-
self._max_payload_size = UDP_OPTIMAL_PAYLOAD_LENGTH
336332

337333
self.telemetry_socket_path = telemetry_socket_path
338334
self.telemetry_host = None
@@ -420,8 +416,14 @@ def socket_path(self):
420416

421417
@socket_path.setter
422418
def socket_path(self, path):
423-
self._socket_path = path
424-
self._transport = "udp" if path is None else "uds"
419+
with self._socket_lock:
420+
self._socket_path = path
421+
if path is None:
422+
self._transport = "udp"
423+
self._max_payload_size = self._max_buffer_len or UDP_OPTIMAL_PAYLOAD_LENGTH
424+
else:
425+
self._transport = "uds"
426+
self._max_payload_size = self._max_buffer_len or UDS_OPTIMAL_PAYLOAD_LENGTH
425427

426428
def enable_background_sender(self, sender_queue_size=0, sender_queue_timeout=0):
427429
"""

tests/unit/dogstatsd/test_statsd.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1951,3 +1951,9 @@ def test_telemetry_api(self):
19511951
self.assertEqual(statsd.packets_dropped, 0)
19521952
self.assertEqual(statsd.packets_dropped_queue, 0)
19531953
self.assertEqual(statsd.packets_dropped_writer, 0)
1954+
1955+
def test_max_payload_size(self):
1956+
statsd = DogStatsd(socket_path=None, port=8125)
1957+
self.assertEqual(statsd._max_payload_size, UDP_OPTIMAL_PAYLOAD_LENGTH)
1958+
statsd.socket_path = "/foo"
1959+
self.assertEqual(statsd._max_payload_size, UDS_OPTIMAL_PAYLOAD_LENGTH)

0 commit comments

Comments
 (0)