|
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