-
Notifications
You must be signed in to change notification settings - Fork 314
Closed
Labels
Description
Describe the bug
0.52.0 includes this commit
3e7f93d Ryan Add UDS SOCK_STREAM support to the DogStatsD client (#869) 2025-05-01 (3 months ago)
diff --git a/datadog/dogstatsd/base.py b/datadog/dogstatsd/base.py
index 634e7ef..4c64e30 100644
--- a/datadog/dogstatsd/base.py
+++ b/datadog/dogstatsd/base.py
@@ -15,2 +15,3 @@ import socket
import errno
+import struct
import threading
@@ -51,2 +52,7 @@ DEFAULT_PORT = 8125
+# Socket prefixes
+UNIX_ADDRESS_SCHEME = "unix://"
+UNIX_ADDRESS_DATAGRAM_SCHEME = "unixgram://"
+UNIX_ADDRESS_STREAM_SCHEME = "unixstream://"
+
# Buffering-related values (in seconds)
@@ -490,8 +496,43 @@ class DogStatsd(object):
self._socket_path = path
- if path is None:
- self._transport = "udp"
- self._max_payload_size = self._max_buffer_len or UDP_OPTIMAL_PAYLOAD_LENGTH
- else:
- self._transport = "uds"
- self._max_payload_size = self._max_buffer_len or UDS_OPTIMAL_PAYLOAD_LENGTH
which causes errors like
director/stats.py:34: in wrapper
statsd.increment(metric, tags=tags)
/usr/local/lib/python3.12/site-packages/datadog/dogstatsd/base.py:1025: in increment
self._report(metric, "c", value, tags, sample_rate, cardinality=cardinality)
/usr/local/lib/python3.12/site-packages/datadog/dogstatsd/base.py:1255: in _report
self._send(payload)
/usr/local/lib/python3.12/site-packages/datadog/dogstatsd/base.py:1326: in _send_to_server
self._xmit_packet_with_telemetry(packet + '\n')
/usr/local/lib/python3.12/site-packages/datadog/dogstatsd/base.py:1332: in _xmit_packet_with_telemetry
telemetry = self._flush_telemetry()
^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <datadog.dogstatsd.base.DogStatsd object at 0xffff9382be60>
def _flush_telemetry(self):
tags = self._client_tags[:]
> tags.append("client_transport:{}".format(self._transport))
^^^^^^^^^^^^^^^
E AttributeError: 'DogStatsd' object has no attribute '_transport'
To Reproduce
Steps to reproduce the behavior:
- Call
statsd.increment()
Expected behavior
An increment message should be queued.
Environment and Versions (please complete the following information):
datadog==0.52.0
ddtrace==3.10.2
n-makoto, akursar, em-synth and anndev4