@opentelemetry/instrumentation-cassandra-driver 0.50.0 → 0.51.2

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/README.md CHANGED
@@ -78,4 +78,4 @@ Apache 2.0 - See [LICENSE][license-url] for more information.
78
78
  [license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE
79
79
  [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
80
80
  [npm-url]: https://www.npmjs.com/package/@opentelemetry/instrumentation-cassandra-driver
81
- [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Finstrumentation-cassandra-driver.svg
81
+ [npm-img]: https://img.shields.io/npm/v/%40opentelemetry%2Finstrumentation-cassandra-driver.svg
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.CassandraDriverInstrumentation = void 0;
19
19
  const api_1 = require("@opentelemetry/api");
20
20
  const instrumentation_1 = require("@opentelemetry/instrumentation");
21
- const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
21
+ const semconv_1 = require("./semconv");
22
22
  /** @knipignore */
23
23
  const version_1 = require("./version");
24
24
  const supportedVersions = ['>=4.4.0 <5'];
@@ -105,9 +105,9 @@ class CassandraDriverInstrumentation extends instrumentation_1.InstrumentationBa
105
105
  const conn = this['_connection'];
106
106
  if (span !== undefined && conn !== undefined) {
107
107
  const port = parseInt(conn.port, 10);
108
- span.setAttribute(semantic_conventions_1.SEMATTRS_NET_PEER_NAME, conn.address);
108
+ span.setAttribute(semconv_1.ATTR_NET_PEER_NAME, conn.address);
109
109
  if (!isNaN(port)) {
110
- span.setAttribute(semantic_conventions_1.SEMATTRS_NET_PEER_PORT, port);
110
+ span.setAttribute(semconv_1.ATTR_NET_PEER_PORT, port);
111
111
  }
112
112
  }
113
113
  return original.apply(this, args);
@@ -191,19 +191,19 @@ class CassandraDriverInstrumentation extends instrumentation_1.InstrumentationBa
191
191
  }
192
192
  startSpan({ op, query }, client) {
193
193
  const attributes = {
194
- [semantic_conventions_1.SEMATTRS_DB_SYSTEM]: semantic_conventions_1.DBSYSTEMVALUES_CASSANDRA,
194
+ [semconv_1.ATTR_DB_SYSTEM]: semconv_1.DB_SYSTEM_VALUE_CASSANDRA,
195
195
  };
196
196
  if (this._shouldIncludeDbStatement() && query !== undefined) {
197
197
  const statement = truncateQuery(query, this._getMaxQueryLength());
198
- attributes[semantic_conventions_1.SEMATTRS_DB_STATEMENT] = statement;
198
+ attributes[semconv_1.ATTR_DB_STATEMENT] = statement;
199
199
  }
200
200
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
201
201
  const user = client.options?.credentials?.username;
202
202
  if (user) {
203
- attributes[semantic_conventions_1.SEMATTRS_DB_USER] = user;
203
+ attributes[semconv_1.ATTR_DB_USER] = user;
204
204
  }
205
205
  if (client.keyspace) {
206
- attributes[semantic_conventions_1.SEMATTRS_DB_NAME] = client.keyspace;
206
+ attributes[semconv_1.ATTR_DB_NAME] = client.keyspace;
207
207
  }
208
208
  return this.tracer.startSpan(`cassandra-driver.${op}`, {
209
209
  kind: api_1.SpanKind.CLIENT,
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","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\nimport {\n context,\n trace,\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { CassandraDriverInstrumentationConfig, ResultSet } from './types';\nimport {\n DBSYSTEMVALUES_CASSANDRA,\n SEMATTRS_DB_NAME,\n SEMATTRS_DB_STATEMENT,\n SEMATTRS_DB_SYSTEM,\n SEMATTRS_DB_USER,\n SEMATTRS_NET_PEER_NAME,\n SEMATTRS_NET_PEER_PORT,\n} from '@opentelemetry/semantic-conventions';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { EventEmitter } from 'events';\nimport type * as CassandraDriver from 'cassandra-driver';\n\nconst supportedVersions = ['>=4.4.0 <5'];\n\nexport class CassandraDriverInstrumentation extends InstrumentationBase<CassandraDriverInstrumentationConfig> {\n constructor(config: CassandraDriverInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n 'cassandra-driver',\n supportedVersions,\n driverModule => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Client = driverModule.Client.prototype as any;\n\n if (isWrapped(Client['_execute'])) {\n this._unwrap(Client, '_execute');\n }\n\n if (isWrapped(Client.batch)) {\n this._unwrap(Client, 'batch');\n }\n\n if (isWrapped(Client.stream)) {\n this._unwrap(Client, 'stream');\n }\n\n this._wrap(Client, '_execute', this._getPatchedExecute());\n this._wrap(Client, 'batch', this._getPatchedBatch());\n this._wrap(Client, 'stream', this._getPatchedStream());\n\n return driverModule;\n },\n driverModule => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Client = driverModule.Client.prototype as any;\n\n if (isWrapped(Client['_execute'])) {\n this._unwrap(Client, '_execute');\n }\n\n if (isWrapped(Client.batch)) {\n this._unwrap(Client, 'batch');\n }\n\n if (isWrapped(Client.stream)) {\n this._unwrap(Client, 'stream');\n }\n },\n [\n new InstrumentationNodeModuleFile(\n 'cassandra-driver/lib/request-execution.js',\n supportedVersions,\n execution => {\n if (isWrapped(execution.prototype['_sendOnConnection'])) {\n this._unwrap(execution.prototype, '_sendOnConnection');\n }\n\n this._wrap(\n execution.prototype,\n '_sendOnConnection',\n this._getPatchedSendOnConnection()\n );\n return execution;\n },\n execution => {\n if (execution === undefined) return;\n this._unwrap(execution.prototype, '_sendOnConnection');\n }\n ),\n ]\n );\n }\n\n private _getMaxQueryLength(): number {\n return this.getConfig().maxQueryLength ?? 65536;\n }\n\n private _shouldIncludeDbStatement(): boolean {\n return this.getConfig().enhancedDatabaseReporting ?? false;\n }\n\n private _getPatchedExecute() {\n return (\n original: (...args: unknown[]) => Promise<CassandraDriver.types.ResultSet>\n ) => {\n const plugin = this;\n return function patchedExecute(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n const span = plugin.startSpan({ op: 'execute', query: args[0] }, this);\n\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n return original.apply(this, args);\n });\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n\n const wrappedPromise = wrapPromise(\n span,\n execPromise,\n (span, result) => {\n plugin._callResponseHook(span, result);\n }\n );\n\n return context.bind(execContext, wrappedPromise);\n };\n };\n }\n\n private _getPatchedSendOnConnection() {\n return (original: (...args: unknown[]) => unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function patchedSendOnConnection(this: any, ...args: unknown[]) {\n const span = trace.getSpan(context.active());\n const conn = this['_connection'];\n\n if (span !== undefined && conn !== undefined) {\n const port = parseInt(conn.port, 10);\n\n span.setAttribute(SEMATTRS_NET_PEER_NAME, conn.address);\n\n if (!isNaN(port)) {\n span.setAttribute(SEMATTRS_NET_PEER_PORT, port);\n }\n }\n\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedBatch() {\n return (original: (...args: unknown[]) => unknown) => {\n const plugin = this;\n return function patchedBatch(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n const queries = Array.isArray(args[0]) ? args[0] : [];\n const span = plugin.startSpan(\n { op: 'batch', query: combineQueries(queries) },\n this\n );\n\n const batchContext = trace.setSpan(context.active(), span);\n\n if (typeof args[args.length - 1] === 'function') {\n const originalCallback = args[\n args.length - 1\n ] as CassandraDriver.ValueCallback<CassandraDriver.types.ResultSet>;\n\n const patchedCallback = function (\n this: unknown,\n ...cbArgs: Parameters<typeof originalCallback>\n ) {\n const error = cbArgs[0];\n\n if (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n\n span.end();\n\n return originalCallback.apply(this, cbArgs);\n };\n\n args[args.length - 1] = patchedCallback;\n\n return context.with(batchContext, () => {\n return original.apply(this, args);\n });\n }\n\n const batchPromise = safeExecuteInTheMiddle(\n () => {\n return original.apply(\n this,\n args\n ) as Promise<CassandraDriver.types.ResultSet>;\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n\n const wrappedPromise = wrapPromise(span, batchPromise);\n\n return context.bind(batchContext, wrappedPromise);\n };\n };\n }\n\n private _getPatchedStream() {\n return (original: (...args: unknown[]) => EventEmitter) => {\n const plugin = this;\n return function patchedStream(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n // Since stream internally uses execute, there is no need to add DB_STATEMENT twice\n const span = plugin.startSpan({ op: 'stream' }, this);\n\n const callback = args[3];\n\n const endSpan = (error: Error) => {\n if (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n span.end();\n };\n\n if (callback === undefined) {\n args[3] = endSpan;\n } else if (typeof callback === 'function') {\n const wrappedCallback = function (this: unknown, err: Error) {\n endSpan(err);\n return callback.call(this, err);\n };\n args[3] = wrappedCallback;\n }\n\n return safeExecuteInTheMiddle(\n () => {\n return original.apply(this, args);\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n };\n };\n }\n\n private startSpan(\n { op, query }: { op: string; query?: unknown },\n client: CassandraDriver.Client\n ): Span {\n const attributes: Attributes = {\n [SEMATTRS_DB_SYSTEM]: DBSYSTEMVALUES_CASSANDRA,\n };\n\n if (this._shouldIncludeDbStatement() && query !== undefined) {\n const statement = truncateQuery(query, this._getMaxQueryLength());\n attributes[SEMATTRS_DB_STATEMENT] = statement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const user = (client as any).options?.credentials?.username;\n\n if (user) {\n attributes[SEMATTRS_DB_USER] = user;\n }\n\n if (client.keyspace) {\n attributes[SEMATTRS_DB_NAME] = client.keyspace;\n }\n\n return this.tracer.startSpan(`cassandra-driver.${op}`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private _callResponseHook(span: Span, response: ResultSet) {\n const { responseHook } = this.getConfig();\n if (!responseHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => responseHook(span, { response: response }),\n e => {\n if (e) {\n this._diag.error('responseHook error', e);\n }\n },\n true\n );\n }\n}\n\nfunction failSpan(span: Span, error: Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n}\n\nfunction combineQueries(queries: Array<string | { query: string }>) {\n return queries\n .map(query => (typeof query === 'string' ? query : query.query))\n .join('\\n');\n}\n\nfunction wrapPromise<T>(\n span: Span,\n promise: Promise<T>,\n successCallback?: (span: Span, result: T) => void\n): Promise<T> {\n return promise\n .then(result => {\n return new Promise<T>(resolve => {\n if (successCallback) {\n successCallback(span, result);\n }\n span.end();\n resolve(result);\n });\n })\n .catch((error: Error) => {\n return new Promise<T>((_, reject) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n reject(error);\n });\n });\n}\n\nfunction truncateQuery(query: unknown, maxQueryLength: number) {\n return String(query).substring(0, maxQueryLength);\n}\n"]}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","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\nimport {\n context,\n trace,\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n} from '@opentelemetry/api';\nimport {\n InstrumentationBase,\n InstrumentationNodeModuleDefinition,\n InstrumentationNodeModuleFile,\n isWrapped,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { CassandraDriverInstrumentationConfig, ResultSet } from './types';\nimport {\n DB_SYSTEM_VALUE_CASSANDRA,\n ATTR_DB_NAME,\n ATTR_DB_STATEMENT,\n ATTR_DB_SYSTEM,\n ATTR_DB_USER,\n ATTR_NET_PEER_NAME,\n ATTR_NET_PEER_PORT,\n} from './semconv';\n/** @knipignore */\nimport { PACKAGE_NAME, PACKAGE_VERSION } from './version';\nimport { EventEmitter } from 'events';\nimport type * as CassandraDriver from 'cassandra-driver';\n\nconst supportedVersions = ['>=4.4.0 <5'];\n\nexport class CassandraDriverInstrumentation extends InstrumentationBase<CassandraDriverInstrumentationConfig> {\n constructor(config: CassandraDriverInstrumentationConfig = {}) {\n super(PACKAGE_NAME, PACKAGE_VERSION, config);\n }\n\n protected init() {\n return new InstrumentationNodeModuleDefinition(\n 'cassandra-driver',\n supportedVersions,\n driverModule => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Client = driverModule.Client.prototype as any;\n\n if (isWrapped(Client['_execute'])) {\n this._unwrap(Client, '_execute');\n }\n\n if (isWrapped(Client.batch)) {\n this._unwrap(Client, 'batch');\n }\n\n if (isWrapped(Client.stream)) {\n this._unwrap(Client, 'stream');\n }\n\n this._wrap(Client, '_execute', this._getPatchedExecute());\n this._wrap(Client, 'batch', this._getPatchedBatch());\n this._wrap(Client, 'stream', this._getPatchedStream());\n\n return driverModule;\n },\n driverModule => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Client = driverModule.Client.prototype as any;\n\n if (isWrapped(Client['_execute'])) {\n this._unwrap(Client, '_execute');\n }\n\n if (isWrapped(Client.batch)) {\n this._unwrap(Client, 'batch');\n }\n\n if (isWrapped(Client.stream)) {\n this._unwrap(Client, 'stream');\n }\n },\n [\n new InstrumentationNodeModuleFile(\n 'cassandra-driver/lib/request-execution.js',\n supportedVersions,\n execution => {\n if (isWrapped(execution.prototype['_sendOnConnection'])) {\n this._unwrap(execution.prototype, '_sendOnConnection');\n }\n\n this._wrap(\n execution.prototype,\n '_sendOnConnection',\n this._getPatchedSendOnConnection()\n );\n return execution;\n },\n execution => {\n if (execution === undefined) return;\n this._unwrap(execution.prototype, '_sendOnConnection');\n }\n ),\n ]\n );\n }\n\n private _getMaxQueryLength(): number {\n return this.getConfig().maxQueryLength ?? 65536;\n }\n\n private _shouldIncludeDbStatement(): boolean {\n return this.getConfig().enhancedDatabaseReporting ?? false;\n }\n\n private _getPatchedExecute() {\n return (\n original: (...args: unknown[]) => Promise<CassandraDriver.types.ResultSet>\n ) => {\n const plugin = this;\n return function patchedExecute(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n const span = plugin.startSpan({ op: 'execute', query: args[0] }, this);\n\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n return original.apply(this, args);\n });\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n\n const wrappedPromise = wrapPromise(\n span,\n execPromise,\n (span, result) => {\n plugin._callResponseHook(span, result);\n }\n );\n\n return context.bind(execContext, wrappedPromise);\n };\n };\n }\n\n private _getPatchedSendOnConnection() {\n return (original: (...args: unknown[]) => unknown) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function patchedSendOnConnection(this: any, ...args: unknown[]) {\n const span = trace.getSpan(context.active());\n const conn = this['_connection'];\n\n if (span !== undefined && conn !== undefined) {\n const port = parseInt(conn.port, 10);\n\n span.setAttribute(ATTR_NET_PEER_NAME, conn.address);\n\n if (!isNaN(port)) {\n span.setAttribute(ATTR_NET_PEER_PORT, port);\n }\n }\n\n return original.apply(this, args);\n };\n };\n }\n\n private _getPatchedBatch() {\n return (original: (...args: unknown[]) => unknown) => {\n const plugin = this;\n return function patchedBatch(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n const queries = Array.isArray(args[0]) ? args[0] : [];\n const span = plugin.startSpan(\n { op: 'batch', query: combineQueries(queries) },\n this\n );\n\n const batchContext = trace.setSpan(context.active(), span);\n\n if (typeof args[args.length - 1] === 'function') {\n const originalCallback = args[\n args.length - 1\n ] as CassandraDriver.ValueCallback<CassandraDriver.types.ResultSet>;\n\n const patchedCallback = function (\n this: unknown,\n ...cbArgs: Parameters<typeof originalCallback>\n ) {\n const error = cbArgs[0];\n\n if (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n\n span.end();\n\n return originalCallback.apply(this, cbArgs);\n };\n\n args[args.length - 1] = patchedCallback;\n\n return context.with(batchContext, () => {\n return original.apply(this, args);\n });\n }\n\n const batchPromise = safeExecuteInTheMiddle(\n () => {\n return original.apply(\n this,\n args\n ) as Promise<CassandraDriver.types.ResultSet>;\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n\n const wrappedPromise = wrapPromise(span, batchPromise);\n\n return context.bind(batchContext, wrappedPromise);\n };\n };\n }\n\n private _getPatchedStream() {\n return (original: (...args: unknown[]) => EventEmitter) => {\n const plugin = this;\n return function patchedStream(\n this: CassandraDriver.Client,\n ...args: unknown[]\n ) {\n // Since stream internally uses execute, there is no need to add DB_STATEMENT twice\n const span = plugin.startSpan({ op: 'stream' }, this);\n\n const callback = args[3];\n\n const endSpan = (error: Error) => {\n if (error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n }\n span.end();\n };\n\n if (callback === undefined) {\n args[3] = endSpan;\n } else if (typeof callback === 'function') {\n const wrappedCallback = function (this: unknown, err: Error) {\n endSpan(err);\n return callback.call(this, err);\n };\n args[3] = wrappedCallback;\n }\n\n return safeExecuteInTheMiddle(\n () => {\n return original.apply(this, args);\n },\n error => {\n if (error) {\n failSpan(span, error);\n }\n }\n );\n };\n };\n }\n\n private startSpan(\n { op, query }: { op: string; query?: unknown },\n client: CassandraDriver.Client\n ): Span {\n const attributes: Attributes = {\n [ATTR_DB_SYSTEM]: DB_SYSTEM_VALUE_CASSANDRA,\n };\n\n if (this._shouldIncludeDbStatement() && query !== undefined) {\n const statement = truncateQuery(query, this._getMaxQueryLength());\n attributes[ATTR_DB_STATEMENT] = statement;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const user = (client as any).options?.credentials?.username;\n\n if (user) {\n attributes[ATTR_DB_USER] = user;\n }\n\n if (client.keyspace) {\n attributes[ATTR_DB_NAME] = client.keyspace;\n }\n\n return this.tracer.startSpan(`cassandra-driver.${op}`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private _callResponseHook(span: Span, response: ResultSet) {\n const { responseHook } = this.getConfig();\n if (!responseHook) {\n return;\n }\n\n safeExecuteInTheMiddle(\n () => responseHook(span, { response: response }),\n e => {\n if (e) {\n this._diag.error('responseHook error', e);\n }\n },\n true\n );\n }\n}\n\nfunction failSpan(span: Span, error: Error) {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n}\n\nfunction combineQueries(queries: Array<string | { query: string }>) {\n return queries\n .map(query => (typeof query === 'string' ? query : query.query))\n .join('\\n');\n}\n\nfunction wrapPromise<T>(\n span: Span,\n promise: Promise<T>,\n successCallback?: (span: Span, result: T) => void\n): Promise<T> {\n return promise\n .then(result => {\n return new Promise<T>(resolve => {\n if (successCallback) {\n successCallback(span, result);\n }\n span.end();\n resolve(result);\n });\n })\n .catch((error: Error) => {\n return new Promise<T>((_, reject) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n reject(error);\n });\n });\n}\n\nfunction truncateQuery(query: unknown, maxQueryLength: number) {\n return String(query).substring(0, maxQueryLength);\n}\n"]}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Deprecated, use `db.namespace` instead.
3
+ *
4
+ * @example customers
5
+ * @example main
6
+ *
7
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
8
+ *
9
+ * @deprecated Replaced by `db.namespace`.
10
+ */
11
+ export declare const ATTR_DB_NAME: "db.name";
12
+ /**
13
+ * The database statement being executed.
14
+ *
15
+ * @example SELECT * FROM wuser_table
16
+ * @example SET mykey "WuValue"
17
+ *
18
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
19
+ *
20
+ * @deprecated Replaced by `db.query.text`.
21
+ */
22
+ export declare const ATTR_DB_STATEMENT: "db.statement";
23
+ /**
24
+ * Deprecated, use `db.system.name` instead.
25
+ *
26
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
27
+ *
28
+ * @deprecated Replaced by `db.system.name`.
29
+ */
30
+ export declare const ATTR_DB_SYSTEM: "db.system";
31
+ /**
32
+ * Deprecated, no replacement at this time.
33
+ *
34
+ * @example readonly_user
35
+ * @example reporting_user
36
+ *
37
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
38
+ *
39
+ * @deprecated Removed, no replacement at this time.
40
+ */
41
+ export declare const ATTR_DB_USER: "db.user";
42
+ /**
43
+ * Deprecated, use `server.address` on client spans and `client.address` on server spans.
44
+ *
45
+ * @example example.com
46
+ *
47
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
48
+ *
49
+ * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.
50
+ */
51
+ export declare const ATTR_NET_PEER_NAME: "net.peer.name";
52
+ /**
53
+ * Deprecated, use `server.port` on client spans and `client.port` on server spans.
54
+ *
55
+ * @example 8080
56
+ *
57
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
58
+ *
59
+ * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.
60
+ */
61
+ export declare const ATTR_NET_PEER_PORT: "net.peer.port";
62
+ /**
63
+ * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}.
64
+ *
65
+ * Apache Cassandra
66
+ *
67
+ * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
68
+ */
69
+ export declare const DB_SYSTEM_VALUE_CASSANDRA: "cassandra";
70
+ //# sourceMappingURL=semconv.d.ts.map
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright The OpenTelemetry Authors
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * https://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.DB_SYSTEM_VALUE_CASSANDRA = exports.ATTR_NET_PEER_PORT = exports.ATTR_NET_PEER_NAME = exports.ATTR_DB_USER = exports.ATTR_DB_SYSTEM = exports.ATTR_DB_STATEMENT = exports.ATTR_DB_NAME = void 0;
19
+ /*
20
+ * This file contains a copy of unstable semantic convention definitions
21
+ * used by this package.
22
+ * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv
23
+ */
24
+ /**
25
+ * Deprecated, use `db.namespace` instead.
26
+ *
27
+ * @example customers
28
+ * @example main
29
+ *
30
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
31
+ *
32
+ * @deprecated Replaced by `db.namespace`.
33
+ */
34
+ exports.ATTR_DB_NAME = 'db.name';
35
+ /**
36
+ * The database statement being executed.
37
+ *
38
+ * @example SELECT * FROM wuser_table
39
+ * @example SET mykey "WuValue"
40
+ *
41
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
42
+ *
43
+ * @deprecated Replaced by `db.query.text`.
44
+ */
45
+ exports.ATTR_DB_STATEMENT = 'db.statement';
46
+ /**
47
+ * Deprecated, use `db.system.name` instead.
48
+ *
49
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
50
+ *
51
+ * @deprecated Replaced by `db.system.name`.
52
+ */
53
+ exports.ATTR_DB_SYSTEM = 'db.system';
54
+ /**
55
+ * Deprecated, no replacement at this time.
56
+ *
57
+ * @example readonly_user
58
+ * @example reporting_user
59
+ *
60
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
61
+ *
62
+ * @deprecated Removed, no replacement at this time.
63
+ */
64
+ exports.ATTR_DB_USER = 'db.user';
65
+ /**
66
+ * Deprecated, use `server.address` on client spans and `client.address` on server spans.
67
+ *
68
+ * @example example.com
69
+ *
70
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
71
+ *
72
+ * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.
73
+ */
74
+ exports.ATTR_NET_PEER_NAME = 'net.peer.name';
75
+ /**
76
+ * Deprecated, use `server.port` on client spans and `client.port` on server spans.
77
+ *
78
+ * @example 8080
79
+ *
80
+ * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
81
+ *
82
+ * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.
83
+ */
84
+ exports.ATTR_NET_PEER_PORT = 'net.peer.port';
85
+ /**
86
+ * Enum value "cassandra" for attribute {@link ATTR_DB_SYSTEM}.
87
+ *
88
+ * Apache Cassandra
89
+ *
90
+ * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.
91
+ */
92
+ exports.DB_SYSTEM_VALUE_CASSANDRA = 'cassandra';
93
+ //# sourceMappingURL=semconv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semconv.js","sourceRoot":"","sources":["../../src/semconv.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,cAAuB,CAAC;AAEzD;;;;;;GAMG;AACU,QAAA,cAAc,GAAG,WAAoB,CAAC;AAEnD;;;;;;;;;GASG;AACU,QAAA,YAAY,GAAG,SAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;;;GAQG;AACU,QAAA,kBAAkB,GAAG,eAAwB,CAAC;AAE3D;;;;;;GAMG;AACU,QAAA,yBAAyB,GAAG,WAAoB,CAAC","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\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * Deprecated, use `db.namespace` instead.\n *\n * @example customers\n * @example main\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.namespace`.\n */\nexport const ATTR_DB_NAME = 'db.name' as const;\n\n/**\n * The database statement being executed.\n *\n * @example SELECT * FROM wuser_table\n * @example SET mykey \"WuValue\"\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.query.text`.\n */\nexport const ATTR_DB_STATEMENT = 'db.statement' as const;\n\n/**\n * Deprecated, use `db.system.name` instead.\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `db.system.name`.\n */\nexport const ATTR_DB_SYSTEM = 'db.system' as const;\n\n/**\n * Deprecated, no replacement at this time.\n *\n * @example readonly_user\n * @example reporting_user\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Removed, no replacement at this time.\n */\nexport const ATTR_DB_USER = 'db.user' as const;\n\n/**\n * Deprecated, use `server.address` on client spans and `client.address` on server spans.\n *\n * @example example.com\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.address` on client spans and `client.address` on server spans.\n */\nexport const ATTR_NET_PEER_NAME = 'net.peer.name' as const;\n\n/**\n * Deprecated, use `server.port` on client spans and `client.port` on server spans.\n *\n * @example 8080\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n *\n * @deprecated Replaced by `server.port` on client spans and `client.port` on server spans.\n */\nexport const ATTR_NET_PEER_PORT = 'net.peer.port' as const;\n\n/**\n * Enum value \"cassandra\" for attribute {@link ATTR_DB_SYSTEM}.\n *\n * Apache Cassandra\n *\n * @experimental This enum value is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const DB_SYSTEM_VALUE_CASSANDRA = 'cassandra' as const;\n"]}
@@ -1,3 +1,3 @@
1
- export declare const PACKAGE_VERSION = "0.50.0";
1
+ export declare const PACKAGE_VERSION = "0.51.2";
2
2
  export declare const PACKAGE_NAME = "@opentelemetry/instrumentation-cassandra-driver";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -17,6 +17,6 @@
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
19
19
  // this is autogenerated file, see scripts/version-update.js
20
- exports.PACKAGE_VERSION = '0.50.0';
20
+ exports.PACKAGE_VERSION = '0.51.2';
21
21
  exports.PACKAGE_NAME = '@opentelemetry/instrumentation-cassandra-driver';
22
22
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,iDAAiD,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.50.0';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-cassandra-driver';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,iDAAiD,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.51.2';\nexport const PACKAGE_NAME = '@opentelemetry/instrumentation-cassandra-driver';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentelemetry/instrumentation-cassandra-driver",
3
- "version": "0.50.0",
3
+ "version": "0.51.2",
4
4
  "description": "OpenTelemetry instrumentation for `cassandra-driver` database client library for Apache Cassandra",
5
5
  "main": "build/src/index.js",
6
6
  "types": "build/src/index.d.ts",
@@ -22,7 +22,6 @@
22
22
  "test": "nyc --no-clean mocha 'test/**/*.test.ts'",
23
23
  "test:with-services-env": "cross-env NODE_OPTIONS='-r dotenv/config' DOTENV_CONFIG_PATH=../../test/test-services.env npm test",
24
24
  "//todo": "echo \"add test-all-versions\"",
25
- "test-merge-coverage": "nyc merge .nyc_output coverage/coverage-final.json",
26
25
  "test-services:start": "cd ../.. && npm run test-services:start cassandra",
27
26
  "test-services:stop": "cd ../.. && npm run test-services:stop cassandra",
28
27
  "version:update": "node ../../scripts/version-update.js"
@@ -55,9 +54,10 @@
55
54
  "devDependencies": {
56
55
  "@opentelemetry/api": "^1.3.0",
57
56
  "@opentelemetry/context-async-hooks": "^2.0.0",
58
- "@opentelemetry/contrib-test-utils": "^0.50.0",
57
+ "@opentelemetry/contrib-test-utils": "^0.52.1",
59
58
  "@opentelemetry/sdk-trace-base": "^2.0.0",
60
59
  "@opentelemetry/sdk-trace-node": "^2.0.0",
60
+ "@opentelemetry/semantic-conventions": "^1.27.0",
61
61
  "@types/mocha": "10.0.10",
62
62
  "@types/node": "18.18.14",
63
63
  "@types/semver": "7.5.8",
@@ -70,9 +70,8 @@
70
70
  "typescript": "5.0.4"
71
71
  },
72
72
  "dependencies": {
73
- "@opentelemetry/instrumentation": "^0.204.0",
74
- "@opentelemetry/semantic-conventions": "^1.27.0"
73
+ "@opentelemetry/instrumentation": "^0.205.0"
75
74
  },
76
75
  "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/packages/instrumentation-cassandra-driver#readme",
77
- "gitHead": "0a45ac1b951d2acd2e40834e7ae012c04820faec"
76
+ "gitHead": "931c7b34f53ea625da900726b1f57c5c934b5b28"
78
77
  }