Skip to content

Commit e2f0f4b

Browse files
authored
docs(node-experimental): Update readme for current status (#8945)
Update the docs for the current status of the POTEL experiment.
1 parent 1e8921b commit e2f0f4b

File tree

1 file changed

+45
-3
lines changed

1 file changed

+45
-3
lines changed

packages/node-experimental/README.md

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,54 @@ Currently, this SDK:
4949

5050
* Will capture errors (same as @sentry/node)
5151
* Auto-instrument for performance - see below for which performance integrations are available.
52+
* Provide _some_ manual instrumentation APIs
53+
* Sync OpenTelemetry Context with our Sentry Hub/Scope
5254

5355
### Manual Instrumentation
5456

55-
**Manual instrumentation is not supported!**
56-
This is because the current Sentry-Performance-APIs like `Sentry.startTransaction()` are not compatible with the OpenTelemetry tracing model.
57-
We may add manual tracing capabilities in a later version.
57+
You can manual instrument using the following APIs:
58+
59+
```js
60+
const Sentry = require('@sentry/node-experimental');
61+
62+
Sentry.startActiveSpan({ description: 'outer' }, function (span) {
63+
span.setData(customData);
64+
doSomethingSlow();
65+
Sentry.startActiveSpan({ description: 'inner' }, function() {
66+
// inner span is a child of outer span
67+
doSomethingVerySlow();
68+
// inner span is auto-ended when this callback ends
69+
});
70+
// outer span is auto-ended when this callback ends
71+
});
72+
```
73+
74+
You can also create spans without marking them as the active span.
75+
Note that for most scenarios, we recommend the `startActiveSpan` syntax.
76+
77+
```js
78+
const Sentry = require('@sentry/node-experimental');
79+
80+
// This will _not_ be put on the scope/set as active, so no other spans will be attached to it
81+
const span = Sentry.startSpan({ description: 'non-active span' });
82+
83+
doSomethingSlow();
84+
85+
span?.finish();
86+
```
87+
88+
Finally you can also get the currently active span, if you need to do more with it:
89+
90+
```js
91+
const Sentry = require('@sentry/node-experimental');
92+
const span = Sentry.getActiveSpan();
93+
```
94+
95+
### Async Context
96+
97+
We leverage the OpenTelemetry context forking in order to ensure isolation of parallel requests.
98+
This means that as long as you are using an OpenTelemetry instrumentation for your framework of choice
99+
(currently: Express or Fastify), you do not need to setup any `requestHandler` or similar.
58100
59101
### ESM Support
60102

0 commit comments

Comments
 (0)