jaegertracing / jaeger

CNCF Jaeger, a Distributed Tracing Platform
https://www.jaegertracing.io/
Apache License 2.0
20.5k stars 2.44k forks source link

Concurrency model of gRPC plugins #1763

Open sergiimk opened 5 years ago

sergiimk commented 5 years ago

Requirement - what kind of business use case are you trying to solve?

We are implementing a custom gRPC-based storage plugin as per this doc.

Problem - what in Jaeger blocks you from solving the requirement?

Could you please clarify what is the concurrency model of a gRPC plugin in Jaeger. I'm getting following confusing results from my experiments:

Having observed the first behavior locally the second case came as a big surprise. Our pluging is concurrency safe, has no mutexes, and able to execute all operations in parallel. I have also verified this behavior with GetServices/GetOperations returning a pre-canned responses and adding time.Sleep().

Impact: We already implemented a sophisticated caching logic in our plugin for services and operations, but this head-of-line blocking behavior for requests that cannot be cached can result in a very poor user experience when Jaeger is exposed to multiple users.

Proposal - what do you suggest to solve the problem or improve the existing situation?

Any open questions to address

yurishkuro commented 5 years ago

cc @olivierboucher @chvck @jacobmarble if you have any experience w/ concurrency