Comments (7)
I see the conversation already started about separation in #6.
from opentelemetry-js.
I learned today that the proposed API won't fit more complex uses-cases probably where operations are put in a queue and will run later in a different context. However, I still believe we should have a conversation about how to handle API separation.
from opentelemetry-js.
Synchronous Tracer APIs
Why the distinction between a root span and a child span? I can't find this in the spec and it doesn't seem necessary. A span is automatically a root span if it has no parent. It also makes it more difficult to use as if you don't know whether there is a parent you need an additional condition instead of just passing null
or undefined
as the parent.
CLS interface to set the context (must be async)
As discussed in #6 I think the context propagation itself is not a tracing concern and the implementation should be in a completely separate project that can be used for any arbitrary data.
I learned today that the proposed API won't fit more complex uses-cases probably where operations are put in a queue and will run later in a different context.
This can only be solved by monkey patching or by within the library. There is an incomplete list of the most popular affected modules here. Other modules known to be affected include Knex and most Promise libraries.
from opentelemetry-js.
-
I used the current OpenCensus APIs as an example, I think the API distinction between starting child and parent span should be a separate conversation. Personally, I liked the single API in OpenTracing.
-
I think we are on the same page 👍
-
Looks like you are familiar with these use-cases. What do you think, how would a suitable API look like?
from opentelemetry-js.
It's not really possible to do it in the library natively without using AsyncResource
, which some libraries have already started implementing. However, this wouldn't support older versions of Node (which may not be necessary but that's another discussion).
From the user's perspective, I think a simple bind(target, span)
method is usually enough, where target
is any kind of bindable object/function like functions, promises, event emitters, etc. This is what we use in our integrations and it works really well for us.
from opentelemetry-js.
I believe we've implemented that with the different ScopeManager
available so it's safe to close this one
from opentelemetry-js.
Agreed, closed via #103
from opentelemetry-js.
Related Issues (20)
- TraceID missed after deployed the project in docker containers
- @opentelemetry/sdk-node changes size when installed from package.json HOT 1
- BatchSpanProcessor doesn't re-enable tracing after flushing HOT 7
- CI Automating of Releases
- @opentelemetry/instrumentation-http should have an option to suppress tracing on ignored outgoing requests
- @opentelemetry/sdk-trace-base - Avoid merging Resource Attributes by default on BasicTracerProvider HOT 2
- use `module.register(...)` in recommended bootstrap code for ESM support HOT 1
- Hook support for adding custom dynamic metric attributes/ dimensions
- OTLPExporterBase causes unhandled rejection on DNS resolution error HOT 2
- Exceptions are not recorded when using auto instrumentation with fetch instrumentation HOT 1
- Can I use auto-instrumentation & manual instrumentation at the same time? HOT 2
- Can ConsoleSpanExporter be used in Prod systems? HOT 2
- [@opentelemetry/instrumentation-http] Default traces have just "GET" as their name HOT 2
- TypeError: Cannot set property Tracer of #<Object> which has only a getter HOT 4
- New Labels Request - `propagator: aws:xray` and `propagator: aws:xray:lambda` HOT 1
- In-Memory Exporter for unit testing HOT 5
- Doomday85
- Widen dependency ranges for related packages for instrumentation
- TraceState does not check max items when calling set() or serialize()
- Empty `context.active()` while using `getNodeAutoInstrumentations`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from opentelemetry-js.