diff --git a/ddtrace/contrib/gevent/provider.py b/ddtrace/contrib/gevent/provider.py index 53ae605308a..fa2d7f1c008 100644 --- a/ddtrace/contrib/gevent/provider.py +++ b/ddtrace/contrib/gevent/provider.py @@ -30,6 +30,7 @@ def activate(self, context): current_g = gevent.getcurrent() if current_g is not None: setattr(current_g, self._CONTEXT_ATTR, context) + super(GeventContextProvider, self).activate(context) return context def active(self): diff --git a/tests/contrib/gevent/test_provider.py b/tests/contrib/gevent/test_provider.py new file mode 100644 index 00000000000..095a6ddb718 --- /dev/null +++ b/tests/contrib/gevent/test_provider.py @@ -0,0 +1,15 @@ +from ddtrace.contrib.gevent import provider + + +def test_call_hooks(tracer): + data = {} + + def record(context): + if "trace" not in data: + data["trace"] = context + + tracer.configure(context_provider=provider.GeventContextProvider()) + tracer.context_provider._on_activate(record) + with tracer.trace("test123") as mytrace: + pass + assert data["trace"] is mytrace