chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore: Bump otel 2.x - #15518

Closed
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0
Closed

chore: Bump otel 2.x#15518
andreiborza wants to merge 11 commits into
developfrom
ab/otel-2.0.0

Conversation

@andreiborza

@andreiborzaandreiborza commented Feb 26, 2025

Copy link
Copy Markdown
Member

This is a rough draft to bump Otel to the first pre-release version of 2.0.0. Tests are failing partly due to api changes and removed exports. I wasn't sure how to best tackle these and lack the knowledge to migrate some of these.

Followed migration guide: https://github.com/trentm/opentelemetry-js/blob/tm-sdk2-migration-docs-take2/doc/upgrade-to-2.x.md

Things to note:

  • BasicTracerProvider no longer exports a register function to register a propagator and context manager. I replaced BasicTracerProvider with NodeTracerProvider of @opentelemetry/sdk-trace-node
    • Note: We originally had the node trace provider. This PR switched to the base provider. Seems like we can use the node one but we should check whether in the meantime it received some additional unwanted features.
  • BasicTracerProvider no longer exports an (already marked private previously) activeSpanProcessor with no provided alternatives. I opted to call forceFlush on the provider instead which maps through the span processors and flushes them.
  • VERSION is no longer exported by @opentelemetry/core, for now I hardcoded the version where it was needed to pass into instrumentations. Maybe we should use our own versions here?
  • feat(js): Stop using provider.addSpanProcessor() sentry-docs#13011 - BasicTracerProvider#addSpanProcessor(...) was removed. We use the NodeTracerProvider#addSpanProcessor in the docs for combining existing otel setups with sentry: https://docs.sentry.io/platforms/javascript/guides/node/opentelemetry/custom-setup/

@github-actions

github-actionsBot commented Feb 26, 2025

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser23.16 KB+0.03%+7 B 🔺
@sentry/browser - with treeshaking flags22.95 KB+0.03%+6 B 🔺
@sentry/browser (incl. Tracing)36.22 KB+0.03%+8 B 🔺
@sentry/browser (incl. Tracing, Replay)73.39 KB+0.01%+3 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags66.81 KB+0.01%+2 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas)78.02 KB+0.02%+10 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback)90.58 KB+0.02%+12 B 🔺
@sentry/browser (incl. Feedback)40.31 KB+0.02%+8 B 🔺
@sentry/browser (incl. sendFeedback)27.79 KB+0.03%+7 B 🔺
@sentry/browser (incl. FeedbackAsync)32.58 KB+0.03%+9 B 🔺
@sentry/react24.98 KB+0.04%+10 B 🔺
@sentry/react (incl. Tracing)38.11 KB+0.03%+8 B 🔺
@sentry/vue27.4 KB+0.03%+7 B 🔺
@sentry/vue (incl. Tracing)37.91 KB+0.03%+9 B 🔺
@sentry/svelte23.19 KB+0.03%+7 B 🔺
CDN Bundle24.37 KB+0.04%+9 B 🔺
CDN Bundle (incl. Tracing)36.26 KB+0.02%+6 B 🔺
CDN Bundle (incl. Tracing, Replay)71.28 KB+0.01%+3 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback)76.45 KB+0.01%+4 B 🔺
CDN Bundle - uncompressed71.21 KB+0.03%+15 B 🔺
CDN Bundle (incl. Tracing) - uncompressed107.58 KB+0.02%+15 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed218.84 KB+0.01%+15 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed231.41 KB+0.01%+15 B 🔺
@sentry/nextjs (client)39.39 KB+0.02%+6 B 🔺
@sentry/sveltekit (client)36.63 KB+0.02%+7 B 🔺
@sentry/node127.7 KB-10.26%-14.58 KB 🔽
@sentry/node - without tracing95.54 KB-0.18%-169 B 🔽
@sentry/aws-serverless105.62 KB-12.03%-14.44 KB 🔽

View base workflow run

@codecov

codecovBot commented Feb 26, 2025

Copy link
Copy Markdown

❌ 18 Tests Failed:

Tests completedFailedPassedSkipped
4603184585322
View the top 3 failed test(s) by shortest run time
createTransactionForOtelSpanworkswithahttp.serverspan
Stack Traces | 0.007s run time
Error: expect(received).toEqual(expected) //deepequality-Expected-3+Received+0@@ -3,13+3,10 @@"otel": Object {"resource": Object {"service.name": "opentelemetry-test","service.namespace": "sentry","service.version": "9.2.0",-"telemetry.sdk.language": "nodejs",-"telemetry.sdk.name": "opentelemetry",-"telemetry.sdk.version": Any<String>, }, },"response": Object {"status_code": 200, },atObject.<anonymous> (.../opentelemetry/test/spanExporter.test.ts:73:19)atPromise.then.completed (.../jest-circus/build/utils.js:391:28)
atnewPromise (<anonymous>)
atcallAsyncCircusFn (.../jest-circus/build/utils.js:316:10)
at_callCircusTest (.../jest-circus/build/run.js:218:40)
atprocessTicksAndRejections (node:internal/process/task_queues:95:5)
at_runTest (.../jest-circus/build/run.js:155:3)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:66:9)
at_runTestsForDescribeBlock (.../jest-circus/build/run.js:60:9)
atrun (.../jest-circus/build/run.js:25:3)
test/integration/transactions.test.ts>Integration|Transactions>cleansupspansthatarenotflushedforover5mins
Stack Traces | 0.022s run time
Error: Noexporterfound, abortingtest...
❯ test/integration/transactions.test.ts:578:13
setupEventContextTraceworkswithactivespan
Stack Traces | 0.028s run time
Error: expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: ObjectContaining {"contexts": ObjectContaining {"trace": {"parent_span_id": "152ac9183fd9a3bd", "span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}}, ObjectContaining {"event_id": Any<String>, "originalException": [Error: test], "syntheticException": Any<Error>}
Received: {"breadcrumbs": undefined, "contexts": {"trace": {"span_id": "09cb02840a88052d", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c"}}, "environment": "production", "event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "exception": {"values": [{"type": "Error", "value": "test"}]}, "sdkProcessingMetadata": {"dynamicSamplingContext": {"environment": "production", "public_key": "username", "sample_rand": "0.7154596665275146", "sample_rate": "1", "sampled": "true", "trace_id": "725d8ae3b78487f2c571ae01dcf2215c", "transaction": "outer"}}, "timestamp": 1740682962.238}, {"event_id": "42e3f6afc3e84325bf0a4209c2deb9a5", "originalException": [Error: test], "syntheticException": [Error: SentrysyntheticException]}
Numberofcalls: 1atObject.<anonymous> (.../test/utils/setupEventContextTrace.test.ts:91:24)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@AbhiPrasadAbhiPrasad left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like the unit test failures are mainly due to imports that have changed (for ex. because they are now types instead of classes) or fields that no longer exist on certain objects.

The pattern I see in E2E tests, and that is in a couple of unit tests, is that parent_span_id seems to not be set anymore. I think this is because of this change: open-telemetry/opentelemetry-js#5450.

span.parentSpanId -> span.parentSpanContext?.spanId


public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
super('@sentry/instrumentation-node-fetch', VERSION, config);
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

considering this is using @sentry/X I think it's reasonable enough to set our own SDK version here.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea was thinking the same. Will update.

@timfish

Copy link
Copy Markdown
Collaborator

Would this update be considered a breaking change? I guess this could break compatibility with all otel integrations customers might be using?

@andreiborzaandreiborza self-assigned this Mar 17, 2025
@andreiborzaandreiborza changed the title chore: Bump otel 2.0.0chore: Bump otel 2.xMar 17, 2025
mydea added a commit that referenced this pull request Mar 17, 2025
…15702)
Fixes part of #15518
We have been using the deprecated `new Span()` syntax for tests in OTEL.
This PR changes this to instead use a proper tracer, which is also
supported in v2 of otel.
@andreiborza
andreiborzaforce-pushed the ab/otel-2.0.0 branch 5 times, most recently from 86ef801 to dd500bdCompareMarch 19, 2025 05:32
@mydeamydea mentioned this pull request Mar 19, 2025
@andreiborza

Copy link
Copy Markdown
MemberAuthor

Closing this as it was experimental and we have more structured work coming up to support Otel v2.

@andreiborza
andreiborza deleted the ab/otel-2.0.0 branch September 17, 2025 08:27
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@andreiborza@timfish@AbhiPrasad