Skip to content

Commit 62be630

Browse files
yoichiEmanuele Palazzetti
authored andcommitted
contrib.httplib.patch: Don't overwrite return value (#380)
* Add test: enable trace before getting response * The same situation occurs in ddtrace.api.API._put(). * Don't overwrite return value in finally block
1 parent 48f436b commit 62be630

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

ddtrace/contrib/httplib/patch.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,13 @@ def _wrap_getresponse(func, instance, args, kwargs):
3535
try:
3636
# Get the span attached to this instance, if available
3737
span = getattr(instance, '_datadog_span', None)
38-
if not span:
39-
return
38+
if span:
39+
if resp:
40+
span.set_tag(ext_http.STATUS_CODE, resp.status)
41+
span.error = int(500 <= resp.status)
4042

41-
if resp:
42-
span.set_tag(ext_http.STATUS_CODE, resp.status)
43-
span.error = int(500 <= resp.status)
44-
45-
span.finish()
46-
delattr(instance, '_datadog_span')
43+
span.finish()
44+
delattr(instance, '_datadog_span')
4745
except Exception:
4846
log.debug('error applying request tags', exc_info=True)
4947

tests/contrib/httplib/test_httplib.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,24 @@ def test_httplib_request_get_request_disabled(self):
320320
spans = self.tracer.writer.pop()
321321
self.assertEqual(len(spans), 0)
322322

323+
def test_httplib_request_get_request_disabled_and_enabled(self):
324+
"""
325+
When making a GET request via httplib.HTTPConnection.request
326+
when the tracer is disabled
327+
we do not capture any spans
328+
"""
329+
self.tracer.enabled = False
330+
conn = self.get_http_connection(SOCKET)
331+
with contextlib.closing(conn):
332+
conn.request('GET', '/status/200')
333+
self.tracer.enabled = True
334+
resp = conn.getresponse()
335+
self.assertEqual(self.to_str(resp.read()), '')
336+
self.assertEqual(resp.status, 200)
337+
338+
spans = self.tracer.writer.pop()
339+
self.assertEqual(len(spans), 0)
340+
323341
def test_urllib_request(self):
324342
"""
325343
When making a request via urllib.request.urlopen

0 commit comments

Comments
 (0)