opentelemetry-python-contrib
opentelemetry-python-contrib copied to clipboard
Thread-ConsumeBidirectionalStream caught unexpected exception 'generator' object has no attribute 'add_done_callback' and will exit.
Notes We are trying to use Opentelemetry to instrument grpc to get traces of functions. We observed this error on local once, and we couldn't reproduce it again, but it's always on production server. Furthermore, we are using GCP monitoring suite (stack drive) to check traces.
Environment: Django==3.2.6 Python==3.7
grpcio-tools==1.32.0 grpcio==1.33.2
opentelemetry-api==1.4.1 opentelemetry-sdk==1.4.1 opentelemetry-instrumentation-grpc==0.23b2
Instrumentation code: set_global_textmap(CloudTraceFormatPropagator()) # sampling sends a portion of generated spans based on a 1/X population size sample_rate = int(os.getenv('SAMPLE_RATE', '1')) sampler = TraceIdRatioBased(1 / sample_rate) tracer_provider = TracerProvider(sampler=sampler) cloud_trace_exporter = CloudTraceSpanExporter() tracer_provider.add_span_processor(SimpleSpanProcessor(cloud_trace_exporter)) trace.set_tracer_provider(tracer_provider) tracer = trace.get_tracer(name) GrpcInstrumentorClient().instrument() # when commented error isn't reproduced except (ValueError, NotImplementedError, DefaultCredentialsError) as exc: print(exc) # Handle errors here
The error Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/google/api_core/bidi.py", line 637, in _thread_main self._bidi_rpc.open() File "/usr/local/lib/python3.7/site-packages/google/api_core/bidi.py", line 287, in open call._wrapped.add_done_callback(self._on_call_done) AttributeError: 'generator' object has no attribute 'add_done_callback'