From e013f2359cd63a6e080ae303a9b9d2af2187d08e Mon Sep 17 00:00:00 2001 From: Thomas Hunter II Date: Tue, 13 Jun 2023 14:23:18 -0700 Subject: [PATCH] make tracer config available to plugins --- packages/dd-trace/src/plugin_manager.js | 8 +++----- packages/dd-trace/src/plugins/database.js | 10 +++++++--- packages/dd-trace/src/plugins/plugin.js | 4 +++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/dd-trace/src/plugin_manager.js b/packages/dd-trace/src/plugin_manager.js index dd5f7ed9099..7057045872b 100644 --- a/packages/dd-trace/src/plugin_manager.js +++ b/packages/dd-trace/src/plugin_manager.js @@ -68,7 +68,7 @@ module.exports = class PluginManager { if (!Plugin) return if (!this._pluginsByName[name]) { - this._pluginsByName[name] = new Plugin(this._tracer) + this._pluginsByName[name] = new Plugin(this._tracer, this._tracerConfig) } if (!this._tracerConfig) return // TODO: don't wait for tracer to be initialized @@ -76,6 +76,7 @@ module.exports = class PluginManager { enabled: this._tracerConfig.plugins !== false } + // extracts predetermined configuration from tracer and combines it with plugin-specific config this._pluginsByName[name].configure({ ...this._getSharedConfig(name), ...pluginConfig @@ -127,8 +128,7 @@ module.exports = class PluginManager { serviceMapping, queryStringObfuscation, site, - url, - dbmPropagationMode + url } = this._tracerConfig const sharedConfig = {} @@ -141,8 +141,6 @@ module.exports = class PluginManager { sharedConfig.queryStringObfuscation = queryStringObfuscation } - sharedConfig.dbmPropagationMode = dbmPropagationMode - if (serviceMapping && serviceMapping[name]) { sharedConfig.service = serviceMapping[name] } diff --git a/packages/dd-trace/src/plugins/database.js b/packages/dd-trace/src/plugins/database.js index d7bb5183760..69f1f3f1bd3 100644 --- a/packages/dd-trace/src/plugins/database.js +++ b/packages/dd-trace/src/plugins/database.js @@ -38,13 +38,17 @@ class DatabasePlugin extends StoragePlugin { } injectDbmQuery (query, serviceName, isPreparedStatement = false) { - if (this.config.dbmPropagationMode === 'disabled') { + const mode = this.config.dbmPropagationMode || this._tracerConfig.dbmPropagationMode + + if (mode === 'disabled') { return query } + const servicePropagation = this.createDBMPropagationCommentService(serviceName) - if (isPreparedStatement || this.config.dbmPropagationMode === 'service') { + + if (isPreparedStatement || mode === 'service') { return `/*${servicePropagation}*/ ${query}` - } else if (this.config.dbmPropagationMode === 'full') { + } else if (mode === 'full') { this.activeSpan.setTag('_dd.dbm_trace_injected', 'true') const traceparent = this.activeSpan._spanContext.toTraceparent() return `/*${servicePropagation},traceparent='${traceparent}'*/ ${query}` diff --git a/packages/dd-trace/src/plugins/plugin.js b/packages/dd-trace/src/plugins/plugin.js index a5cff11b498..2b8dc9c9c5d 100644 --- a/packages/dd-trace/src/plugins/plugin.js +++ b/packages/dd-trace/src/plugins/plugin.js @@ -26,10 +26,12 @@ class Subscription { } module.exports = class Plugin { - constructor (tracer) { + constructor (tracer, tracerConfig) { this._subscriptions = [] this._enabled = false this._tracer = tracer + this.config = {} // plugin-specific configuration, unset until .configure() is called + this._tracerConfig = tracerConfig // global tracer configuration } get tracer () {