|
1 | 1 | import { captureException, flush, getCurrentHub, Handlers, startTransaction } from '@sentry/node'; |
2 | | -import { extractTraceparentData } from '@sentry/tracing'; |
| 2 | +import { extractSentrytraceData, extractTracestateData } from '@sentry/tracing'; |
3 | 3 | import { isString, logger, stripUrlQueryAndFragment } from '@sentry/utils'; |
4 | 4 |
|
5 | 5 | import { domainify, getActiveDomain, proxyFunction } from './../utils'; |
@@ -50,15 +50,22 @@ function _wrapHttpFunction(fn: HttpFunction, wrapOptions: Partial<HttpFunctionWr |
50 | 50 | const reqUrl = stripUrlQueryAndFragment(req.originalUrl || req.url || ''); |
51 | 51 |
|
52 | 52 | // Applying `sentry-trace` to context |
53 | | - let traceparentData; |
| 53 | + let traceparentData, tracestateData; |
54 | 54 | const reqWithHeaders = req as { headers?: { [key: string]: string } }; |
55 | 55 | if (reqWithHeaders.headers && isString(reqWithHeaders.headers['sentry-trace'])) { |
56 | | - traceparentData = extractTraceparentData(reqWithHeaders.headers['sentry-trace'] as string); |
| 56 | + traceparentData = extractSentrytraceData(reqWithHeaders.headers['sentry-trace'] as string); |
57 | 57 | } |
| 58 | + if (reqWithHeaders.headers?.tracestate) { |
| 59 | + tracestateData = extractTracestateData(reqWithHeaders.headers.tracestate as string); |
| 60 | + } |
| 61 | + |
58 | 62 | const transaction = startTransaction({ |
59 | 63 | name: `${reqMethod} ${reqUrl}`, |
60 | 64 | op: 'gcp.function.http', |
61 | 65 | ...traceparentData, |
| 66 | + // ToDo check with Katie if this should be here even if undefined |
| 67 | + // metadata: { tracestate: tracestateData }, |
| 68 | + ...(tracestateData && { metadata: { tracestate: tracestateData } }), |
62 | 69 | }); |
63 | 70 |
|
64 | 71 | // getCurrentHub() is expected to use current active domain as a carrier |
|
0 commit comments