@sentry/node 10.57.0 → 10.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/integrations/tracing/dataloader/index.js +2 -22
- package/build/cjs/integrations/tracing/dataloader/index.js.map +1 -1
- package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js +93 -120
- package/build/cjs/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/genericPool/index.js +1 -1
- package/build/cjs/integrations/tracing/genericPool/index.js.map +1 -1
- package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js +14 -26
- package/build/cjs/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
- package/build/cjs/integrations/tracing/redis/index.js +1 -1
- package/build/cjs/integrations/tracing/redis/index.js.map +1 -1
- package/build/esm/integrations/tracing/dataloader/index.js +4 -24
- package/build/esm/integrations/tracing/dataloader/index.js.map +1 -1
- package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js +95 -122
- package/build/esm/integrations/tracing/dataloader/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/genericPool/index.js +1 -1
- package/build/esm/integrations/tracing/genericPool/index.js.map +1 -1
- package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js +15 -27
- package/build/esm/integrations/tracing/genericPool/vendored/instrumentation.js.map +1 -1
- package/build/esm/integrations/tracing/redis/index.js +1 -1
- package/build/esm/integrations/tracing/redis/index.js.map +1 -1
- package/build/esm/package.json +1 -1
- package/build/types/integrations/tracing/dataloader/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts +2 -5
- package/build/types/integrations/tracing/dataloader/vendored/instrumentation.d.ts.map +1 -1
- package/build/types/integrations/tracing/dataloader/vendored/types.d.ts +20 -8
- package/build/types/integrations/tracing/dataloader/vendored/types.d.ts.map +1 -1
- package/build/types/integrations/tracing/genericPool/index.d.ts.map +1 -1
- package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +1 -1
- package/build/types/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts.map +1 -1
- package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts +2 -1
- package/build/types/integrations/tracing/genericPool/vendored/instrumentation.d.ts.map +1 -1
- package/build/types-ts3.8/integrations/tracing/dataloader/vendored/instrumentation.d.ts +2 -5
- package/build/types-ts3.8/integrations/tracing/dataloader/vendored/types.d.ts +20 -8
- package/build/types-ts3.8/integrations/tracing/genericPool/vendored/generic-pool-types.d.ts +1 -1
- package/build/types-ts3.8/integrations/tracing/genericPool/vendored/instrumentation.d.ts +2 -1
- package/package.json +5 -5
- package/build/types/integrations/tracing/dataloader/vendored/dataloader-types.d.ts +0 -14
- package/build/types/integrations/tracing/dataloader/vendored/dataloader-types.d.ts.map +0 -1
- package/build/types-ts3.8/integrations/tracing/dataloader/vendored/dataloader-types.d.ts +0 -14
|
@@ -5,32 +5,12 @@ const core = require('@sentry/core');
|
|
|
5
5
|
const nodeCore = require('@sentry/node-core');
|
|
6
6
|
|
|
7
7
|
const INTEGRATION_NAME = "Dataloader";
|
|
8
|
-
const instrumentDataloader = nodeCore.generateInstrumentOnce(
|
|
9
|
-
INTEGRATION_NAME,
|
|
10
|
-
() => new instrumentation.DataloaderInstrumentation({
|
|
11
|
-
requireParentSpan: true
|
|
12
|
-
})
|
|
13
|
-
);
|
|
8
|
+
const instrumentDataloader = nodeCore.generateInstrumentOnce(INTEGRATION_NAME, () => new instrumentation.DataloaderInstrumentation());
|
|
14
9
|
const _dataloaderIntegration = (() => {
|
|
15
|
-
let instrumentationWrappedCallback;
|
|
16
10
|
return {
|
|
17
11
|
name: INTEGRATION_NAME,
|
|
18
12
|
setupOnce() {
|
|
19
|
-
|
|
20
|
-
instrumentationWrappedCallback = nodeCore.instrumentWhenWrapped(instrumentation);
|
|
21
|
-
},
|
|
22
|
-
setup(client) {
|
|
23
|
-
instrumentationWrappedCallback?.(() => {
|
|
24
|
-
client.on("spanStart", (span) => {
|
|
25
|
-
const spanJSON = core.spanToJSON(span);
|
|
26
|
-
if (spanJSON.description?.startsWith("dataloader")) {
|
|
27
|
-
span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, "auto.db.otel.dataloader");
|
|
28
|
-
}
|
|
29
|
-
if (spanJSON.description === "dataloader.load" || spanJSON.description === "dataloader.loadMany" || spanJSON.description === "dataloader.batch") {
|
|
30
|
-
span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_OP, "cache.get");
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
13
|
+
instrumentDataloader();
|
|
34
14
|
}
|
|
35
15
|
};
|
|
36
16
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/dataloader/index.ts"],"sourcesContent":["import { DataloaderInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/dataloader/index.ts"],"sourcesContent":["import { DataloaderInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration } from '@sentry/core';\nimport { generateInstrumentOnce } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'Dataloader';\n\nexport const instrumentDataloader = generateInstrumentOnce(INTEGRATION_NAME, () => new DataloaderInstrumentation());\n\nconst _dataloaderIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n instrumentDataloader();\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [dataloader](https://www.npmjs.com/package/dataloader) library.\n *\n * For more information, see the [`dataloaderIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/dataloader/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.dataloaderIntegration()],\n * });\n * ```\n */\nexport const dataloaderIntegration = defineIntegration(_dataloaderIntegration);\n"],"names":["generateInstrumentOnce","DataloaderInstrumentation","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,YAAA;AAElB,MAAM,uBAAuBA,+BAAA,CAAuB,gBAAA,EAAkB,MAAM,IAAIC,2CAA2B;AAElH,MAAM,0BAA0B,MAAM;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,oBAAA,EAAqB;AAAA,IACvB;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,qBAAA,GAAwBC,uBAAkB,sBAAsB;;;;;"}
|
|
@@ -6,8 +6,25 @@ const core = require('@sentry/core');
|
|
|
6
6
|
|
|
7
7
|
const MODULE_NAME = "dataloader";
|
|
8
8
|
const PACKAGE_NAME = "@sentry/instrumentation-dataloader";
|
|
9
|
+
const ORIGIN = "auto.db.otel.dataloader";
|
|
10
|
+
function isModule(module) {
|
|
11
|
+
return module[Symbol.toStringTag] === "Module";
|
|
12
|
+
}
|
|
9
13
|
function extractModuleExports(module) {
|
|
10
|
-
return module
|
|
14
|
+
return isModule(module) ? module.default : module;
|
|
15
|
+
}
|
|
16
|
+
function getSpanName(dataloader, operation) {
|
|
17
|
+
const dataloaderName = dataloader.name;
|
|
18
|
+
if (dataloaderName) {
|
|
19
|
+
return `${MODULE_NAME}.${operation} ${dataloaderName}`;
|
|
20
|
+
}
|
|
21
|
+
return `${MODULE_NAME}.${operation}`;
|
|
22
|
+
}
|
|
23
|
+
function getSpanOp(operation) {
|
|
24
|
+
if (operation === "load" || operation === "loadMany" || operation === "batch") {
|
|
25
|
+
return "cache.get";
|
|
26
|
+
}
|
|
27
|
+
return void 0;
|
|
11
28
|
}
|
|
12
29
|
class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
13
30
|
constructor(config = {}) {
|
|
@@ -38,44 +55,24 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
38
55
|
)
|
|
39
56
|
];
|
|
40
57
|
}
|
|
41
|
-
shouldCreateSpans() {
|
|
42
|
-
const config = this.getConfig();
|
|
43
|
-
const hasParentSpan = api.trace.getSpan(api.context.active()) !== void 0;
|
|
44
|
-
return hasParentSpan || !config.requireParentSpan;
|
|
45
|
-
}
|
|
46
|
-
getSpanName(dataloader, operation) {
|
|
47
|
-
const dataloaderName = dataloader.name;
|
|
48
|
-
if (dataloaderName === void 0 || dataloaderName === null) {
|
|
49
|
-
return `${MODULE_NAME}.${operation}`;
|
|
50
|
-
}
|
|
51
|
-
return `${MODULE_NAME}.${operation} ${dataloaderName}`;
|
|
52
|
-
}
|
|
53
58
|
_wrapBatchLoadFn(batchLoadFn) {
|
|
54
59
|
const instrumentation = this;
|
|
55
60
|
return function patchedBatchLoadFn(...args) {
|
|
56
|
-
if (!instrumentation.isEnabled()
|
|
61
|
+
if (!instrumentation.isEnabled()) {
|
|
57
62
|
return batchLoadFn.call(this, ...args);
|
|
58
63
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
return core.startSpan(
|
|
65
|
+
{
|
|
66
|
+
name: getSpanName(this, "batch"),
|
|
67
|
+
links: this._batch?.spanLinks,
|
|
68
|
+
attributes: {
|
|
69
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
70
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("batch")
|
|
71
|
+
},
|
|
72
|
+
onlyIfParent: true
|
|
73
|
+
},
|
|
74
|
+
() => batchLoadFn.apply(this, args)
|
|
64
75
|
);
|
|
65
|
-
return api.context.with(api.trace.setSpan(parent, span), () => {
|
|
66
|
-
return batchLoadFn.apply(this, args).then((value) => {
|
|
67
|
-
span.end();
|
|
68
|
-
return value;
|
|
69
|
-
}).catch((err) => {
|
|
70
|
-
span.recordException(err);
|
|
71
|
-
span.setStatus({
|
|
72
|
-
code: api.SpanStatusCode.ERROR,
|
|
73
|
-
message: err.message
|
|
74
|
-
});
|
|
75
|
-
span.end();
|
|
76
|
-
throw err;
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
76
|
};
|
|
80
77
|
}
|
|
81
78
|
_getPatchedConstructor(constructor) {
|
|
@@ -103,39 +100,28 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
103
100
|
this._wrap(proto, "load", this._getPatchedLoad.bind(this));
|
|
104
101
|
}
|
|
105
102
|
_getPatchedLoad(original) {
|
|
106
|
-
const instrumentation = this;
|
|
107
103
|
return function patchedLoad(...args) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
message: err.message
|
|
126
|
-
});
|
|
127
|
-
span.end();
|
|
128
|
-
throw err;
|
|
129
|
-
});
|
|
130
|
-
const loader = this;
|
|
131
|
-
if (loader._batch) {
|
|
132
|
-
if (!loader._batch.spanLinks) {
|
|
133
|
-
loader._batch.spanLinks = [];
|
|
104
|
+
return core.startSpan(
|
|
105
|
+
{
|
|
106
|
+
name: getSpanName(this, "load"),
|
|
107
|
+
kind: api.SpanKind.CLIENT,
|
|
108
|
+
attributes: {
|
|
109
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
110
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("load")
|
|
111
|
+
},
|
|
112
|
+
onlyIfParent: true
|
|
113
|
+
},
|
|
114
|
+
(span) => {
|
|
115
|
+
const result = original.call(this, ...args);
|
|
116
|
+
if (this._batch && span.isRecording()) {
|
|
117
|
+
if (!this._batch.spanLinks) {
|
|
118
|
+
this._batch.spanLinks = [];
|
|
119
|
+
}
|
|
120
|
+
this._batch.spanLinks.push({ context: span.spanContext() });
|
|
134
121
|
}
|
|
135
|
-
|
|
122
|
+
return result;
|
|
136
123
|
}
|
|
137
|
-
|
|
138
|
-
});
|
|
124
|
+
);
|
|
139
125
|
};
|
|
140
126
|
}
|
|
141
127
|
_patchLoadMany(proto) {
|
|
@@ -145,23 +131,19 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
145
131
|
this._wrap(proto, "loadMany", this._getPatchedLoadMany.bind(this));
|
|
146
132
|
}
|
|
147
133
|
_getPatchedLoadMany(original) {
|
|
148
|
-
const instrumentation = this;
|
|
149
134
|
return function patchedLoadMany(...args) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
135
|
+
return core.startSpan(
|
|
136
|
+
{
|
|
137
|
+
name: getSpanName(this, "loadMany"),
|
|
138
|
+
kind: api.SpanKind.CLIENT,
|
|
139
|
+
attributes: {
|
|
140
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
141
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("loadMany")
|
|
142
|
+
},
|
|
143
|
+
onlyIfParent: true
|
|
144
|
+
},
|
|
145
|
+
() => original.call(this, ...args)
|
|
158
146
|
);
|
|
159
|
-
return api.context.with(api.trace.setSpan(parent, span), () => {
|
|
160
|
-
return original.call(this, ...args).then((value) => {
|
|
161
|
-
span.end();
|
|
162
|
-
return value;
|
|
163
|
-
});
|
|
164
|
-
});
|
|
165
147
|
};
|
|
166
148
|
}
|
|
167
149
|
_patchPrime(proto) {
|
|
@@ -171,22 +153,19 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
171
153
|
this._wrap(proto, "prime", this._getPatchedPrime.bind(this));
|
|
172
154
|
}
|
|
173
155
|
_getPatchedPrime(original) {
|
|
174
|
-
const instrumentation = this;
|
|
175
156
|
return function patchedPrime(...args) {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
157
|
+
return core.startSpan(
|
|
158
|
+
{
|
|
159
|
+
name: getSpanName(this, "prime"),
|
|
160
|
+
kind: api.SpanKind.CLIENT,
|
|
161
|
+
attributes: {
|
|
162
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
163
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("prime")
|
|
164
|
+
},
|
|
165
|
+
onlyIfParent: true
|
|
166
|
+
},
|
|
167
|
+
() => original.call(this, ...args)
|
|
184
168
|
);
|
|
185
|
-
const ret = api.context.with(api.trace.setSpan(parent, span), () => {
|
|
186
|
-
return original.call(this, ...args);
|
|
187
|
-
});
|
|
188
|
-
span.end();
|
|
189
|
-
return ret;
|
|
190
169
|
};
|
|
191
170
|
}
|
|
192
171
|
_patchClear(proto) {
|
|
@@ -196,22 +175,19 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
196
175
|
this._wrap(proto, "clear", this._getPatchedClear.bind(this));
|
|
197
176
|
}
|
|
198
177
|
_getPatchedClear(original) {
|
|
199
|
-
const instrumentation = this;
|
|
200
178
|
return function patchedClear(...args) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
179
|
+
return core.startSpan(
|
|
180
|
+
{
|
|
181
|
+
name: getSpanName(this, "clear"),
|
|
182
|
+
kind: api.SpanKind.CLIENT,
|
|
183
|
+
attributes: {
|
|
184
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
185
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("clear")
|
|
186
|
+
},
|
|
187
|
+
onlyIfParent: true
|
|
188
|
+
},
|
|
189
|
+
() => original.call(this, ...args)
|
|
209
190
|
);
|
|
210
|
-
const ret = api.context.with(api.trace.setSpan(parent, span), () => {
|
|
211
|
-
return original.call(this, ...args);
|
|
212
|
-
});
|
|
213
|
-
span.end();
|
|
214
|
-
return ret;
|
|
215
191
|
};
|
|
216
192
|
}
|
|
217
193
|
_patchClearAll(proto) {
|
|
@@ -221,22 +197,19 @@ class DataloaderInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
221
197
|
this._wrap(proto, "clearAll", this._getPatchedClearAll.bind(this));
|
|
222
198
|
}
|
|
223
199
|
_getPatchedClearAll(original) {
|
|
224
|
-
const instrumentation = this;
|
|
225
200
|
return function patchedClearAll(...args) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
201
|
+
return core.startSpan(
|
|
202
|
+
{
|
|
203
|
+
name: getSpanName(this, "clearAll"),
|
|
204
|
+
kind: api.SpanKind.CLIENT,
|
|
205
|
+
attributes: {
|
|
206
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,
|
|
207
|
+
[core.SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp("clearAll")
|
|
208
|
+
},
|
|
209
|
+
onlyIfParent: true
|
|
210
|
+
},
|
|
211
|
+
() => original.call(this, ...args)
|
|
234
212
|
);
|
|
235
|
-
const ret = api.context.with(api.trace.setSpan(parent, span), () => {
|
|
236
|
-
return original.call(this, ...args);
|
|
237
|
-
});
|
|
238
|
-
span.end();
|
|
239
|
-
return ret;
|
|
240
213
|
};
|
|
241
214
|
}
|
|
242
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/dataloader/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-dataloader\n * - Upstream version: @opentelemetry/instrumentation-dataloader@0.35.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n/* eslint-disable */\n\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport { trace, context, Link, SpanStatusCode, SpanKind } from '@opentelemetry/api';\nimport { DataloaderInstrumentationConfig } from './types';\nimport { SDK_VERSION } from '@sentry/core';\nimport type * as Dataloader from './dataloader-types';\n\nconst MODULE_NAME = 'dataloader';\nconst PACKAGE_NAME = '@sentry/instrumentation-dataloader';\n\ntype DataloaderInternal = typeof Dataloader.prototype & {\n _batchLoadFn: Dataloader.BatchLoadFn<unknown, unknown>;\n _batch: { spanLinks?: Link[] } | null;\n};\n\ntype LoadFn = (typeof Dataloader.prototype)['load'];\ntype LoadManyFn = (typeof Dataloader.prototype)['loadMany'];\ntype PrimeFn = (typeof Dataloader.prototype)['prime'];\ntype ClearFn = (typeof Dataloader.prototype)['clear'];\ntype ClearAllFn = (typeof Dataloader.prototype)['clearAll'];\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractModuleExports(module: any) {\n return module[Symbol.toStringTag] === 'Module'\n ? module.default // ESM\n : module; // CommonJS\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase<DataloaderInstrumentationConfig> {\n constructor(config: DataloaderInstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <3'],\n module => {\n const dataloader = extractModuleExports(module);\n this._patchLoad(dataloader.prototype);\n this._patchLoadMany(dataloader.prototype);\n this._patchPrime(dataloader.prototype);\n this._patchClear(dataloader.prototype);\n this._patchClearAll(dataloader.prototype);\n\n return this._getPatchedConstructor(dataloader);\n },\n module => {\n const dataloader = extractModuleExports(module);\n ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n if (isWrapped(dataloader.prototype[method])) {\n this._unwrap(dataloader.prototype, method);\n }\n });\n },\n ),\n ];\n }\n\n private shouldCreateSpans(): boolean {\n const config = this.getConfig();\n const hasParentSpan = trace.getSpan(context.active()) !== undefined;\n return hasParentSpan || !config.requireParentSpan;\n }\n\n private getSpanName(\n dataloader: DataloaderInternal,\n operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll',\n ): string {\n const dataloaderName = dataloader.name;\n if (dataloaderName === undefined || dataloaderName === null) {\n return `${MODULE_NAME}.${operation}`;\n }\n\n return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n }\n\n private _wrapBatchLoadFn(\n batchLoadFn: Dataloader.BatchLoadFn<unknown, unknown>,\n ): Dataloader.BatchLoadFn<unknown, unknown> {\n const instrumentation = this;\n\n return function patchedBatchLoadFn(\n this: DataloaderInternal,\n ...args: Parameters<Dataloader.BatchLoadFn<unknown, unknown>>\n ) {\n if (!instrumentation.isEnabled() || !instrumentation.shouldCreateSpans()) {\n return batchLoadFn.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'batch'),\n { links: this._batch?.spanLinks as Link[] | undefined },\n parent,\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n return (batchLoadFn.apply(this, args) as Promise<unknown[]>)\n .then(value => {\n span.end();\n return value;\n })\n .catch((err: Error) => {\n span.recordException(err);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.end();\n throw err;\n });\n });\n };\n }\n\n private _getPatchedConstructor(constructor: typeof Dataloader): typeof Dataloader {\n const instrumentation = this;\n const prototype = constructor.prototype;\n\n if (!instrumentation.isEnabled()) {\n return constructor;\n }\n\n function PatchedDataloader(this: DataloaderInternal, ...args: any[]) {\n // BatchLoadFn is the first constructor argument\n // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n if (typeof args[0] === 'function') {\n if (isWrapped(args[0])) {\n instrumentation._unwrap(args, 0);\n }\n\n args[0] = instrumentation._wrapBatchLoadFn(args[0]) as Dataloader.BatchLoadFn<unknown, unknown>;\n }\n\n return (constructor as any).apply(this, args);\n }\n\n PatchedDataloader.prototype = prototype;\n return PatchedDataloader as unknown as typeof Dataloader;\n }\n\n private _patchLoad(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.load)) {\n this._unwrap(proto, 'load');\n }\n\n this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n }\n\n private _getPatchedLoad(original: LoadFn): LoadFn {\n const instrumentation = this;\n\n return function patchedLoad(this: DataloaderInternal, ...args: Parameters<typeof original>) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'load'),\n { kind: SpanKind.CLIENT },\n parent,\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n const result = original\n .call(this, ...args)\n .then((value: unknown) => {\n span.end();\n return value;\n })\n .catch((err: Error) => {\n span.recordException(err);\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: err.message,\n });\n span.end();\n throw err;\n });\n\n const loader = this as DataloaderInternal;\n\n if (loader._batch) {\n if (!loader._batch.spanLinks) {\n loader._batch.spanLinks = [];\n }\n\n loader._batch.spanLinks.push({ context: span.spanContext() } as Link);\n }\n\n return result;\n });\n };\n }\n\n private _patchLoadMany(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.loadMany)) {\n this._unwrap(proto, 'loadMany');\n }\n\n this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n }\n\n private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n const instrumentation = this;\n\n return function patchedLoadMany(this: DataloaderInternal, ...args: Parameters<typeof original>) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'loadMany'),\n { kind: SpanKind.CLIENT },\n parent,\n );\n\n return context.with(trace.setSpan(parent, span), () => {\n // .loadMany never rejects, as errors from internal .load\n // calls are caught by dataloader lib\n return original.call(this, ...args).then((value: unknown) => {\n span.end();\n return value;\n });\n });\n };\n }\n\n private _patchPrime(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.prime)) {\n this._unwrap(proto, 'prime');\n }\n\n this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n }\n\n private _getPatchedPrime(original: PrimeFn): PrimeFn {\n const instrumentation = this;\n\n return function patchedPrime(this: DataloaderInternal, ...args: Parameters<typeof original>) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'prime'),\n { kind: SpanKind.CLIENT },\n parent,\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n\n private _patchClear(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.clear)) {\n this._unwrap(proto, 'clear');\n }\n\n this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n }\n\n private _getPatchedClear(original: ClearFn): ClearFn {\n const instrumentation = this;\n\n return function patchedClear(this: DataloaderInternal, ...args: Parameters<typeof original>) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'clear'),\n { kind: SpanKind.CLIENT },\n parent,\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n\n private _patchClearAll(proto: typeof Dataloader.prototype) {\n if (isWrapped(proto.clearAll)) {\n this._unwrap(proto, 'clearAll');\n }\n\n this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n }\n\n private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n const instrumentation = this;\n\n return function patchedClearAll(this: DataloaderInternal, ...args: Parameters<typeof original>) {\n if (!instrumentation.shouldCreateSpans()) {\n return original.call(this, ...args);\n }\n\n const parent = context.active();\n const span = instrumentation.tracer.startSpan(\n instrumentation.getSpanName(this, 'clearAll'),\n { kind: SpanKind.CLIENT },\n parent,\n );\n\n const ret = context.with(trace.setSpan(parent, span), () => {\n return original.call(this, ...args);\n });\n\n span.end();\n\n return ret;\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","trace","context","SpanStatusCode","instrumentation","SpanKind"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/dataloader/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-dataloader\n * - Upstream version: @opentelemetry/instrumentation-dataloader@0.35.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport { SpanKind } from '@opentelemetry/api';\nimport type { BatchLoadFn, DataLoader, DataLoaderConstructor } from './types';\nimport { SDK_VERSION, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, startSpan } from '@sentry/core';\n\nconst MODULE_NAME = 'dataloader';\nconst PACKAGE_NAME = '@sentry/instrumentation-dataloader';\nconst ORIGIN = 'auto.db.otel.dataloader';\n\ntype LoadFn = DataLoader['load'];\ntype LoadManyFn = DataLoader['loadMany'];\ntype PrimeFn = DataLoader['prime'];\ntype ClearFn = DataLoader['clear'];\ntype ClearAllFn = DataLoader['clearAll'];\n\nfunction isModule(module: unknown): module is { [Symbol.toStringTag]: 'Module'; default: DataLoaderConstructor } {\n return (module as { [Symbol.toStringTag]: string })[Symbol.toStringTag] === 'Module';\n}\n\nfunction extractModuleExports(module: unknown): DataLoaderConstructor {\n return isModule(module)\n ? module.default // ESM\n : (module as DataLoaderConstructor); // CommonJS\n}\n\nfunction getSpanName(\n dataloader: DataLoader,\n operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll',\n): string {\n const dataloaderName = dataloader.name;\n if (dataloaderName) {\n return `${MODULE_NAME}.${operation} ${dataloaderName}`;\n }\n\n return `${MODULE_NAME}.${operation}`;\n}\n\n// `load`, `loadMany` and `batch` are all cache reads\nfunction getSpanOp(operation: 'load' | 'loadMany' | 'batch' | 'prime' | 'clear' | 'clearAll'): string | undefined {\n if (operation === 'load' || operation === 'loadMany' || operation === 'batch') {\n return 'cache.get';\n }\n\n return undefined;\n}\n\nexport class DataloaderInstrumentation extends InstrumentationBase {\n constructor(config = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n protected init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <3'],\n module => {\n const dataloader = extractModuleExports(module);\n this._patchLoad(dataloader.prototype);\n this._patchLoadMany(dataloader.prototype);\n this._patchPrime(dataloader.prototype);\n this._patchClear(dataloader.prototype);\n this._patchClearAll(dataloader.prototype);\n\n return this._getPatchedConstructor(dataloader);\n },\n module => {\n const dataloader = extractModuleExports(module);\n ['load', 'loadMany', 'prime', 'clear', 'clearAll'].forEach(method => {\n if (isWrapped(dataloader.prototype[method])) {\n this._unwrap(dataloader.prototype, method);\n }\n });\n },\n ),\n ];\n }\n\n private _wrapBatchLoadFn(batchLoadFn: BatchLoadFn<unknown, unknown>): BatchLoadFn<unknown, unknown> {\n // oxlint-disable-next-line typescript/no-this-alias\n const instrumentation = this;\n\n return function patchedBatchLoadFn(this: DataLoader, ...args: Parameters<BatchLoadFn<unknown, unknown>>) {\n if (!instrumentation.isEnabled()) {\n return batchLoadFn.call(this, ...args);\n }\n\n return startSpan(\n {\n name: getSpanName(this, 'batch'),\n links: this._batch?.spanLinks,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('batch'),\n },\n onlyIfParent: true,\n },\n () => batchLoadFn.apply(this, args),\n );\n };\n }\n\n private _getPatchedConstructor(constructor: DataLoaderConstructor): DataLoaderConstructor {\n // oxlint-disable-next-line typescript/no-this-alias\n const instrumentation = this;\n const prototype = constructor.prototype;\n\n if (!instrumentation.isEnabled()) {\n return constructor;\n }\n\n // oxlint-disable-next-line typescript/no-explicit-any\n function PatchedDataloader(this: DataLoader, ...args: any[]) {\n // BatchLoadFn is the first constructor argument\n // https://github.com/graphql/dataloader/blob/77c2cd7ca97e8795242018ebc212ce2487e729d2/src/index.js#L47\n if (typeof args[0] === 'function') {\n if (isWrapped(args[0])) {\n instrumentation._unwrap(args, 0);\n }\n\n args[0] = instrumentation._wrapBatchLoadFn(args[0]);\n }\n\n return constructor.apply(this, args);\n }\n\n PatchedDataloader.prototype = prototype;\n return PatchedDataloader as unknown as DataLoaderConstructor;\n }\n\n private _patchLoad(proto: DataLoader) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isWrapped(proto.load)) {\n this._unwrap(proto, 'load');\n }\n\n this._wrap(proto, 'load', this._getPatchedLoad.bind(this));\n }\n\n private _getPatchedLoad(original: LoadFn): LoadFn {\n return function patchedLoad(this: DataLoader, ...args: Parameters<typeof original>) {\n return startSpan(\n {\n name: getSpanName(this, 'load'),\n kind: SpanKind.CLIENT,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('load'),\n },\n onlyIfParent: true,\n },\n span => {\n const result = original.call(this, ...args);\n\n if (this._batch && span.isRecording()) {\n if (!this._batch.spanLinks) {\n this._batch.spanLinks = [];\n }\n\n this._batch.spanLinks.push({ context: span.spanContext() });\n }\n\n return result;\n },\n );\n };\n }\n\n private _patchLoadMany(proto: DataLoader) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isWrapped(proto.loadMany)) {\n this._unwrap(proto, 'loadMany');\n }\n\n this._wrap(proto, 'loadMany', this._getPatchedLoadMany.bind(this));\n }\n\n private _getPatchedLoadMany(original: LoadManyFn): LoadManyFn {\n return function patchedLoadMany(this: DataLoader, ...args: Parameters<typeof original>) {\n return startSpan(\n {\n name: getSpanName(this, 'loadMany'),\n kind: SpanKind.CLIENT,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('loadMany'),\n },\n onlyIfParent: true,\n },\n () => original.call(this, ...args),\n );\n };\n }\n\n private _patchPrime(proto: DataLoader) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isWrapped(proto.prime)) {\n this._unwrap(proto, 'prime');\n }\n\n this._wrap(proto, 'prime', this._getPatchedPrime.bind(this));\n }\n\n private _getPatchedPrime(original: PrimeFn): PrimeFn {\n return function patchedPrime(this: DataLoader, ...args: Parameters<typeof original>) {\n return startSpan(\n {\n name: getSpanName(this, 'prime'),\n kind: SpanKind.CLIENT,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('prime'),\n },\n onlyIfParent: true,\n },\n () => original.call(this, ...args),\n );\n };\n }\n\n private _patchClear(proto: DataLoader) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isWrapped(proto.clear)) {\n this._unwrap(proto, 'clear');\n }\n\n this._wrap(proto, 'clear', this._getPatchedClear.bind(this));\n }\n\n private _getPatchedClear(original: ClearFn): ClearFn {\n return function patchedClear(this: DataLoader, ...args: Parameters<typeof original>) {\n return startSpan(\n {\n name: getSpanName(this, 'clear'),\n kind: SpanKind.CLIENT,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('clear'),\n },\n onlyIfParent: true,\n },\n () => original.call(this, ...args),\n );\n };\n }\n\n private _patchClearAll(proto: DataLoader) {\n // oxlint-disable-next-line typescript/unbound-method\n if (isWrapped(proto.clearAll)) {\n this._unwrap(proto, 'clearAll');\n }\n\n this._wrap(proto, 'clearAll', this._getPatchedClearAll.bind(this));\n }\n\n private _getPatchedClearAll(original: ClearAllFn): ClearAllFn {\n return function patchedClearAll(this: DataLoader, ...args: Parameters<typeof original>) {\n return startSpan(\n {\n name: getSpanName(this, 'clearAll'),\n kind: SpanKind.CLIENT,\n attributes: {\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: ORIGIN,\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: getSpanOp('clearAll'),\n },\n onlyIfParent: true,\n },\n () => original.call(this, ...args),\n );\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","startSpan","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","SEMANTIC_ATTRIBUTE_SENTRY_OP","instrumentation","SpanKind"],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ const _genericPoolIntegration = (() => {
|
|
|
19
19
|
() => client.on("spanStart", (span) => {
|
|
20
20
|
const spanJSON = core.spanToJSON(span);
|
|
21
21
|
const spanDescription = spanJSON.description;
|
|
22
|
-
const isGenericPoolSpan = spanDescription === "generic-pool.
|
|
22
|
+
const isGenericPoolSpan = spanDescription === "generic-pool.acquire";
|
|
23
23
|
if (isGenericPoolSpan) {
|
|
24
24
|
span.setAttribute(core.SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, "auto.db.otel.generic_pool");
|
|
25
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/genericPool/index.ts"],"sourcesContent":["import { GenericPoolInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentGenericPool();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/integrations/tracing/genericPool/index.ts"],"sourcesContent":["import { GenericPoolInstrumentation } from './vendored/instrumentation';\nimport type { IntegrationFn } from '@sentry/core';\nimport { defineIntegration, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, spanToJSON } from '@sentry/core';\nimport { generateInstrumentOnce, instrumentWhenWrapped } from '@sentry/node-core';\n\nconst INTEGRATION_NAME = 'GenericPool';\n\nexport const instrumentGenericPool = generateInstrumentOnce(INTEGRATION_NAME, () => new GenericPoolInstrumentation({}));\n\nconst _genericPoolIntegration = (() => {\n let instrumentationWrappedCallback: undefined | ((callback: () => void) => void);\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n const instrumentation = instrumentGenericPool();\n instrumentationWrappedCallback = instrumentWhenWrapped(instrumentation);\n },\n\n setup(client) {\n instrumentationWrappedCallback?.(() =>\n client.on('spanStart', span => {\n const spanJSON = spanToJSON(span);\n const spanDescription = spanJSON.description;\n const isGenericPoolSpan = spanDescription === 'generic-pool.acquire';\n\n if (isGenericPoolSpan) {\n span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, 'auto.db.otel.generic_pool');\n }\n }),\n );\n },\n };\n}) satisfies IntegrationFn;\n\n/**\n * Adds Sentry tracing instrumentation for the [generic-pool](https://www.npmjs.com/package/generic-pool) library.\n *\n * For more information, see the [`genericPoolIntegration` documentation](https://docs.sentry.io/platforms/javascript/guides/node/configuration/integrations/genericpool/).\n *\n * @example\n * ```javascript\n * const Sentry = require('@sentry/node');\n *\n * Sentry.init({\n * integrations: [Sentry.genericPoolIntegration()],\n * });\n * ```\n */\nexport const genericPoolIntegration = defineIntegration(_genericPoolIntegration);\n"],"names":["generateInstrumentOnce","GenericPoolInstrumentation","instrumentWhenWrapped","spanToJSON","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","defineIntegration"],"mappings":";;;;;;AAKA,MAAM,gBAAA,GAAmB,aAAA;AAElB,MAAM,qBAAA,GAAwBA,gCAAuB,gBAAA,EAAkB,MAAM,IAAIC,0CAAA,CAA2B,EAAE,CAAC;AAEtH,MAAM,2BAA2B,MAAM;AACrC,EAAA,IAAI,8BAAA;AAEJ,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,SAAA,GAAY;AACV,MAAA,MAAM,kBAAkB,qBAAA,EAAsB;AAC9C,MAAA,8BAAA,GAAiCC,+BAAsB,eAAe,CAAA;AAAA,IACxE,CAAA;AAAA,IAEA,MAAM,MAAA,EAAQ;AACZ,MAAA,8BAAA;AAAA,QAAiC,MAC/B,MAAA,CAAO,EAAA,CAAG,WAAA,EAAa,CAAA,IAAA,KAAQ;AAC7B,UAAA,MAAM,QAAA,GAAWC,gBAAW,IAAI,CAAA;AAChC,UAAA,MAAM,kBAAkB,QAAA,CAAS,WAAA;AACjC,UAAA,MAAM,oBAAoB,eAAA,KAAoB,sBAAA;AAE9C,UAAA,IAAI,iBAAA,EAAmB;AACrB,YAAA,IAAA,CAAK,YAAA,CAAaC,uCAAkC,2BAA2B,CAAA;AAAA,UACjF;AAAA,QACF,CAAC;AAAA,OACH;AAAA,IACF;AAAA,GACF;AACF,CAAA,CAAA;AAgBO,MAAM,sBAAA,GAAyBC,uBAAkB,uBAAuB;;;;;"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
|
-
const api = require('@opentelemetry/api');
|
|
4
3
|
const instrumentation = require('@opentelemetry/instrumentation');
|
|
5
4
|
const core = require('@sentry/core');
|
|
6
5
|
|
|
@@ -67,48 +66,37 @@ class GenericPoolInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
67
66
|
];
|
|
68
67
|
}
|
|
69
68
|
_acquirePatcher(original) {
|
|
70
|
-
const instrumentation = this;
|
|
71
69
|
return function wrapped_acquire(...args) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
return api.context.with(api.trace.setSpan(parent, span), () => {
|
|
75
|
-
return original.call(this, ...args).then(
|
|
76
|
-
(value) => {
|
|
77
|
-
span.end();
|
|
78
|
-
return value;
|
|
79
|
-
},
|
|
80
|
-
(err) => {
|
|
81
|
-
span.recordException(err);
|
|
82
|
-
span.end();
|
|
83
|
-
throw err;
|
|
84
|
-
}
|
|
85
|
-
);
|
|
70
|
+
return core.startSpan({ name: "generic-pool.acquire" }, () => {
|
|
71
|
+
return original.call(this, ...args);
|
|
86
72
|
});
|
|
87
73
|
};
|
|
88
74
|
}
|
|
89
75
|
_poolWrapper(original) {
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
76
|
+
const wrap = this._wrap.bind(this);
|
|
77
|
+
const acquireWithCallbacksPatcher = this._acquireWithCallbacksPatcher.bind(this);
|
|
78
|
+
return function wrapped_pool(...args) {
|
|
79
|
+
const pool = original.apply(this, args);
|
|
80
|
+
wrap(pool, "acquire", acquireWithCallbacksPatcher);
|
|
94
81
|
return pool;
|
|
95
82
|
};
|
|
96
83
|
}
|
|
97
84
|
_acquireWithCallbacksPatcher(original) {
|
|
98
|
-
const
|
|
85
|
+
const isDisabled = () => this._isDisabled;
|
|
99
86
|
return function wrapped_acquire(cb, priority) {
|
|
100
|
-
if (
|
|
87
|
+
if (isDisabled()) {
|
|
101
88
|
return original.call(this, cb, priority);
|
|
102
89
|
}
|
|
103
|
-
|
|
104
|
-
const span = instrumentation.tracer.startSpan("generic-pool.acquire", {}, parent);
|
|
105
|
-
return api.context.with(api.trace.setSpan(parent, span), () => {
|
|
90
|
+
return core.startSpanManual({ name: "generic-pool.acquire" }, (span) => {
|
|
106
91
|
original.call(
|
|
107
92
|
this,
|
|
108
93
|
(err, client) => {
|
|
94
|
+
if (err) {
|
|
95
|
+
span.setStatus({ code: core.SPAN_STATUS_ERROR, message: "internal_error" });
|
|
96
|
+
}
|
|
109
97
|
span.end();
|
|
110
98
|
if (cb) {
|
|
111
|
-
|
|
99
|
+
cb(err, client);
|
|
112
100
|
}
|
|
113
101
|
},
|
|
114
102
|
priority
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/genericPool/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-generic-pool\n * - Upstream version: @opentelemetry/instrumentation-generic-pool@0.61.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sources":["../../../../../../src/integrations/tracing/genericPool/vendored/instrumentation.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * NOTICE from the Sentry authors:\n * - Vendored from: https://github.com/open-telemetry/opentelemetry-js-contrib/tree/15ef7506553f631ea4181391e0c5725a56f0d082/packages/instrumentation-generic-pool\n * - Upstream version: @opentelemetry/instrumentation-generic-pool@0.61.0\n * - Minor TypeScript strictness adjustments for this repository's compiler settings\n */\n\nimport type { InstrumentationConfig } from '@opentelemetry/instrumentation';\nimport { InstrumentationBase, InstrumentationNodeModuleDefinition, isWrapped } from '@opentelemetry/instrumentation';\nimport { SDK_VERSION, SPAN_STATUS_ERROR, startSpan, startSpanManual } from '@sentry/core';\nimport type * as genericPool from './generic-pool-types';\n\nconst MODULE_NAME = 'generic-pool';\nconst PACKAGE_NAME = '@sentry/instrumentation-generic-pool';\n\ntype AcquireFn = (this: unknown, ...args: unknown[]) => unknown;\ninterface PoolConstructor {\n prototype: { acquire: AcquireFn };\n}\ninterface GenericPoolModule {\n Pool: PoolConstructor;\n}\n\nexport class GenericPoolInstrumentation extends InstrumentationBase {\n // only used for v2 - v2.3)\n private _isDisabled = false;\n\n constructor(config: InstrumentationConfig = {}) {\n super(PACKAGE_NAME, SDK_VERSION, config);\n }\n\n init() {\n return [\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=3.0.0 <4'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquirePatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.4.0 <3'],\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n if (isWrapped(Pool.prototype.acquire)) {\n this._unwrap(Pool.prototype, 'acquire');\n }\n this._wrap(Pool.prototype, 'acquire', this._acquireWithCallbacksPatcher.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n const Pool = moduleExports.Pool;\n this._unwrap(Pool.prototype, 'acquire');\n return moduleExports;\n },\n ),\n new InstrumentationNodeModuleDefinition(\n MODULE_NAME,\n ['>=2.0.0 <2.4'],\n (moduleExports: GenericPoolModule) => {\n this._isDisabled = false;\n if (isWrapped(moduleExports.Pool)) {\n this._unwrap(moduleExports, 'Pool');\n }\n this._wrap(moduleExports, 'Pool', this._poolWrapper.bind(this));\n return moduleExports;\n },\n (moduleExports: GenericPoolModule) => {\n // since the object is created on the fly every time, we need to use\n // a boolean switch here to disable the instrumentation\n this._isDisabled = true;\n return moduleExports;\n },\n ),\n ];\n }\n\n private _acquirePatcher(original: AcquireFn) {\n return function wrapped_acquire(this: genericPool.Pool<unknown>, ...args: unknown[]) {\n return startSpan({ name: 'generic-pool.acquire' }, () => {\n return original.call(this, ...args) as PromiseLike<unknown>;\n });\n };\n }\n\n private _poolWrapper(original: (this: unknown, ...args: unknown[]) => { acquire: AcquireFn }) {\n const wrap = this._wrap.bind(this);\n const acquireWithCallbacksPatcher = this._acquireWithCallbacksPatcher.bind(this);\n return function wrapped_pool(this: unknown, ...args: unknown[]) {\n const pool = original.apply(this, args);\n wrap(pool, 'acquire', acquireWithCallbacksPatcher);\n return pool;\n };\n }\n\n private _acquireWithCallbacksPatcher(original: AcquireFn) {\n const isDisabled = (): boolean => this._isDisabled;\n return function wrapped_acquire(\n this: genericPool.Pool<unknown>,\n cb: (err: unknown, client: unknown) => unknown,\n priority: number,\n ) {\n // only used for v2 - v2.3\n if (isDisabled()) {\n return original.call(this, cb, priority);\n }\n\n return startSpanManual({ name: 'generic-pool.acquire' }, span => {\n original.call(\n this,\n (err: unknown, client: unknown) => {\n if (err) {\n span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n }\n span.end();\n // Not checking whether cb is a function because\n // the original code doesn't do that either.\n // The callback's return value is unused by generic-pool, so we don't return it.\n if (cb) {\n cb(err, client);\n }\n },\n priority,\n );\n });\n };\n }\n}\n"],"names":["InstrumentationBase","SDK_VERSION","InstrumentationNodeModuleDefinition","isWrapped","startSpan","startSpanManual","SPAN_STATUS_ERROR"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
|
|
3
3
|
const core = require('@sentry/core');
|
|
4
|
-
const serverUtils = require('@sentry
|
|
4
|
+
const serverUtils = require('@sentry/server-utils');
|
|
5
5
|
const nodeCore = require('@sentry/node-core');
|
|
6
6
|
const tracingChannel = require('@sentry/opentelemetry/tracing-channel');
|
|
7
7
|
const redisCache = require('../../../utils/redisCache.js');
|