From f495f5c7ce86dfdb84cca9d19a02d63d2908b157 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Wed, 8 Jan 2020 11:52:37 -0500 Subject: [PATCH 1/2] Handle OSError on socket.close on Python 3.6+ Since Python 3.6 it's possible for socket.close to raise an OSError EBADF when the socket's fd is already closed. https://bugs.python.org/issue29343 --- datadog/dogstatsd/base.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/datadog/dogstatsd/base.py b/datadog/dogstatsd/base.py index e67dd2191..fbef4abd6 100644 --- a/datadog/dogstatsd/base.py +++ b/datadog/dogstatsd/base.py @@ -314,7 +314,10 @@ def close_socket(self): Closes connected socket if connected. """ if self.socket: - self.socket.close() + try: + self.socket.close() + except Exception as e: + log.error("Unexpected error: %s", str(e)) self.socket = None def _serialize_metric(self, metric, metric_type, value, tags, sample_rate=1): From 475b7de7c4eaab75ee895f442b46e8dc9e1c919d Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Wed, 8 Jan 2020 12:51:23 -0500 Subject: [PATCH 2/2] Update datadog/dogstatsd/base.py Co-Authored-By: David Bouchare --- datadog/dogstatsd/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datadog/dogstatsd/base.py b/datadog/dogstatsd/base.py index fbef4abd6..d4da41dde 100644 --- a/datadog/dogstatsd/base.py +++ b/datadog/dogstatsd/base.py @@ -316,7 +316,7 @@ def close_socket(self): if self.socket: try: self.socket.close() - except Exception as e: + except OSError as e: log.error("Unexpected error: %s", str(e)) self.socket = None