Skip to content

Commit e42ccc8

Browse files
committed
fix(opentelemetry): Patch @opentelemetry/sdk-trace-base for nanosecond span start time
1 parent 67dd86c commit e42ccc8

File tree

7 files changed

+91
-6
lines changed

7 files changed

+91
-6
lines changed

.changeset/strong-paws-complain.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@graphql-mesh/plugin-opentelemetry': patch
3+
'@graphql-hive/gateway': patch
4+
---
5+
6+
Patch the `@opentelemetry/sdk-trace-base` package to fix span start time precision being millisecond instead of nanosecond.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
diff --git a/build/esm/Span.js b/build/esm/Span.js
2+
index 185835fdc5667eddb072891618607ce213bb6625..5554c8bde3f6f44504587a88e115104a01d39ec4 100644
3+
--- a/build/esm/Span.js
4+
+++ b/build/esm/Span.js
5+
@@ -66,7 +66,7 @@ export class SpanImpl {
6+
this.parentSpanContext = opts.parentSpanContext;
7+
this.kind = opts.kind;
8+
this.links = opts.links || [];
9+
- this.startTime = this._getTime(opts.startTime ?? now);
10+
+ this.startTime = this._getTime(opts.startTime ?? hrTime(this._performanceStartTime + this._performanceOffset));
11+
this.resource = opts.resource;
12+
this.instrumentationScope = opts.scope;
13+
if (opts.attributes != null) {
14+
diff --git a/build/esnext/Span.js b/build/esnext/Span.js
15+
index 185835fdc5667eddb072891618607ce213bb6625..5554c8bde3f6f44504587a88e115104a01d39ec4 100644
16+
--- a/build/esnext/Span.js
17+
+++ b/build/esnext/Span.js
18+
@@ -66,7 +66,7 @@ export class SpanImpl {
19+
this.parentSpanContext = opts.parentSpanContext;
20+
this.kind = opts.kind;
21+
this.links = opts.links || [];
22+
- this.startTime = this._getTime(opts.startTime ?? now);
23+
+ this.startTime = this._getTime(opts.startTime ?? hrTime(this._performanceStartTime + this._performanceOffset));
24+
this.resource = opts.resource;
25+
this.instrumentationScope = opts.scope;
26+
if (opts.attributes != null) {
27+
diff --git a/build/src/Span.js b/build/src/Span.js
28+
index 5a807fe223a70e5e077b66ad74b8efe2eaabd8fa..6388deff9c1e83946f16b04cbfaf884b6f350d29 100644
29+
--- a/build/src/Span.js
30+
+++ b/build/src/Span.js
31+
@@ -69,7 +69,7 @@ class SpanImpl {
32+
this.parentSpanContext = opts.parentSpanContext;
33+
this.kind = opts.kind;
34+
this.links = opts.links || [];
35+
- this.startTime = this._getTime(opts.startTime ?? now);
36+
+ this.startTime = this._getTime(opts.startTime ?? hrTime(this._performanceStartTime + this._performanceOffset));
37+
this.resource = opts.resource;
38+
this.instrumentationScope = opts.scope;
39+
if (opts.attributes != null) {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/build/src/Span.js b/build/src/Span.js
2+
index 12c33551fa559f3657e1d9074cadb34b7e73a675..63ac0075b94eae4c519d94c5c141c7002d21e412 100644
3+
--- a/build/src/Span.js
4+
+++ b/build/src/Span.js
5+
@@ -69,7 +69,7 @@ class SpanImpl {
6+
this.parentSpanContext = opts.parentSpanContext;
7+
this.kind = opts.kind;
8+
this.links = opts.links || [];
9+
- this.startTime = this._getTime(opts.startTime ?? hrTime(this._performanceStartTime + this._performanceOffset));
10+
+ this.startTime = this._getTime(opts.startTime ?? core_1.hrTime(this._performanceStartTime + this._performanceOffset));
11+
this.resource = opts.resource;
12+
this.instrumentationScope = opts.scope;
13+
if (opts.attributes != null) {

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@
8080
"pkgroll": "patch:pkgroll@npm:2.5.1#~/.yarn/patches/pkgroll-npm-2.5.1-9b062c22ca.patch",
8181
"tar-fs": "3.0.10",
8282
"tsx": "patch:tsx@npm%3A4.20.3#~/.yarn/patches/tsx-npm-4.20.3-7de67a623f.patch",
83-
"vite": "6.3.5"
83+
"vite": "6.3.5",
84+
"@opentelemetry/sdk-trace-base@npm:2.0.1": "patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch"
8485
}
8586
}

packages/gateway/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
"@opentelemetry/sampler-jaeger-remote": "^0.203.0",
9595
"@opentelemetry/sdk-logs": "^0.203.0",
9696
"@opentelemetry/sdk-metrics": "^2.0.1",
97-
"@opentelemetry/sdk-trace-base": "^2.0.1",
97+
"@opentelemetry/sdk-trace-base": "patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch",
9898
"commander": "^13.1.0",
9999
"dotenv": "^17.2.0",
100100
"graphql-ws": "^6.0.6",

packages/plugins/opentelemetry/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
"@opentelemetry/resources": "^2.0.1",
7272
"@opentelemetry/sdk-logs": "^0.203.0",
7373
"@opentelemetry/sdk-node": "^0.203.0",
74-
"@opentelemetry/sdk-trace-base": "^2.0.1",
74+
"@opentelemetry/sdk-trace-base": "patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch",
7575
"@opentelemetry/semantic-conventions": "^1.36.0",
7676
"@whatwg-node/promise-helpers": "1.3.0",
7777
"tslib": "^2.8.1"

yarn.lock

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4219,7 +4219,7 @@ __metadata:
42194219
"@opentelemetry/sampler-jaeger-remote": "npm:^0.203.0"
42204220
"@opentelemetry/sdk-logs": "npm:^0.203.0"
42214221
"@opentelemetry/sdk-metrics": "npm:^2.0.1"
4222-
"@opentelemetry/sdk-trace-base": "npm:^2.0.1"
4222+
"@opentelemetry/sdk-trace-base": "patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch"
42234223
"@rollup/plugin-commonjs": "npm:^28.0.0"
42244224
"@rollup/plugin-json": "npm:^6.1.0"
42254225
"@rollup/plugin-node-resolve": "patch:@rollup/plugin-node-resolve@npm%3A16.0.1#~/.yarn/patches/@rollup-plugin-node-resolve-npm-16.0.1-2936474bab.patch"
@@ -4693,7 +4693,7 @@ __metadata:
46934693
"@opentelemetry/resources": "npm:^2.0.1"
46944694
"@opentelemetry/sdk-logs": "npm:^0.203.0"
46954695
"@opentelemetry/sdk-node": "npm:^0.203.0"
4696-
"@opentelemetry/sdk-trace-base": "npm:^2.0.1"
4696+
"@opentelemetry/sdk-trace-base": "patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch"
46974697
"@opentelemetry/semantic-conventions": "npm:^1.36.0"
46984698
"@whatwg-node/promise-helpers": "npm:1.3.0"
46994699
"@whatwg-node/server": "npm:^0.10.0"
@@ -7793,7 +7793,7 @@ __metadata:
77937793
languageName: node
77947794
linkType: hard
77957795

7796-
"@opentelemetry/sdk-trace-base@npm:2.0.1, @opentelemetry/sdk-trace-base@npm:^2.0.1":
7796+
"@opentelemetry/sdk-trace-base@npm:2.0.1":
77977797
version: 2.0.1
77987798
resolution: "@opentelemetry/sdk-trace-base@npm:2.0.1"
77997799
dependencies:
@@ -7806,6 +7806,32 @@ __metadata:
78067806
languageName: node
78077807
linkType: hard
78087808

7809+
"@opentelemetry/sdk-trace-base@patch:@opentelemetry/sdk-trace-base@npm%3A2.0.1#~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch::version=2.0.1&hash=212481":
7810+
version: 2.0.1
7811+
resolution: "@opentelemetry/sdk-trace-base@patch:@opentelemetry/sdk-trace-base@npm%3A2.0.1#~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch::version=2.0.1&hash=212481"
7812+
dependencies:
7813+
"@opentelemetry/core": "npm:2.0.1"
7814+
"@opentelemetry/resources": "npm:2.0.1"
7815+
"@opentelemetry/semantic-conventions": "npm:^1.29.0"
7816+
peerDependencies:
7817+
"@opentelemetry/api": ">=1.3.0 <1.10.0"
7818+
checksum: 10c0/1eeddf77153d7f374e57c1033e0971a7aa27e489e17d5679368ccd39b71eb4c467516859e93b627f9bbe3b7af839db44c4de727d1c17bffd3775dd288e64974d
7819+
languageName: node
7820+
linkType: hard
7821+
7822+
"@opentelemetry/sdk-trace-base@patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch":
7823+
version: 2.0.1
7824+
resolution: "@opentelemetry/sdk-trace-base@patch:@opentelemetry/sdk-trace-base@patch%3A@opentelemetry/sdk-trace-base@npm%253A2.0.1%23~/.yarn/patches/@opentelemetry-sdk-trace-base-npm-2.0.1-ebe4f8e34e.patch%3A%3Aversion=2.0.1&hash=212481#~/.yarn/patches/@opentelemetry-sdk-trace-base-patch-0b7dbf6a30.patch::version=2.0.1&hash=9e89a6"
7825+
dependencies:
7826+
"@opentelemetry/core": "npm:2.0.1"
7827+
"@opentelemetry/resources": "npm:2.0.1"
7828+
"@opentelemetry/semantic-conventions": "npm:^1.29.0"
7829+
peerDependencies:
7830+
"@opentelemetry/api": ">=1.3.0 <1.10.0"
7831+
checksum: 10c0/8dd7c5266da16f3eebe37a2d158c17394b8abfb078b7276600e158d2af280778b77eadc980b91a8ac8b5a3d30e8ebe3bf07308c8e8a859254e0a2c9d61d7d2cf
7832+
languageName: node
7833+
linkType: hard
7834+
78097835
"@opentelemetry/sdk-trace-node@npm:2.0.1":
78107836
version: 2.0.1
78117837
resolution: "@opentelemetry/sdk-trace-node@npm:2.0.1"

0 commit comments

Comments
 (0)