Tracing miss span context with transfer manager or thread executor
- Vorherrschende Sprache
- C++
- Sterne
- 2.2k
- Forks
- 1.2k
- Ø Merge
- 4 T. 11 Std.
- Gemergte PRs (30 T.)
- 13
Beschreibung
### Describe the feature
Current implementation of tracing creates a span context from opentelemetry::context::RuntimeContext::GetCurrent()
This is a thread_local stack of previous span context.
When getting an object through the transfer manager or with GetObjectCallable or GetObjectAsync the span will be created from another thread than the one doing the request.
There is no way to link or give the right parent to the span created in S3Client::GetObject.
Could you provide a way to propagate the right context like opentelemetry propagator is doing between client / server with http headers?
### Use Case
I can't correlate smithy tracing span in S3Client GetObject with my code
Exemple:
```
main thread thread executor
| Span A |(application)
| Span B | (TransferManager::DownloadFile)
| Span D | (Proccess Data) | Span C | (GetObject)
```
### Proposed Solution
_No response_
### Other Information
_No response_
### Acknowledgements
- [ ] I may be able to implement this feature request
- [X] This feature might incur a breaking change
Beitragsleitfaden
Rechercherichtung
Lesen Sie zunächst die Tracing-Implementierung rund um opentelemetry::context::RuntimeContext::GetCurrent() sowie die Einstiegspunkte S3Client::GetObject, GetObjectCallable, GetObjectAsync und TransferManager. Verfolgen Sie, wie die Arbeit zum Executor-Thread gelangt, und definieren und überprüfen Sie anschließend einen Ansatz zur Kontextweitergabe, der den GetObject-Span mit seinem Aufrufer verknüpft, ohne sich auf den thread-lokalen Kontext zu stützen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, cpp
- Bereich
- observability-sre
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100