Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 36 additions & 22 deletions packages/core/src/config/configNormalizers/disable.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,48 +19,62 @@ exports.init = function init(_config) {
* Handles environment variables, and array inputs.
*
* Precedence order (highest to lowest):
* 1. `tracing.disable`
* 2. Environment variables (`INSTANA_TRACING_DISABLE*`)
* 1. Environment variables (`INSTANA_TRACING_DISABLE`)
* 2. In-code config (`tracing.disable`)
*
* @param {import('../../config').InstanaConfig} config
*/
exports.normalize = function normalize(config) {
if (!config?.tracing) config.tracing = {};
try {
// Disable all tracing if explicitly set 'disable' to true
// Check environment variables
const envDisableConfig = getDisableFromEnv();
if (envDisableConfig) {
if (envDisableConfig === true) {
return true;
}
// Normalize instrumentations and groups from env
if (envDisableConfig?.instrumentations) {
envDisableConfig.instrumentations = normalizeArray(envDisableConfig.instrumentations);
}
if (envDisableConfig?.groups) {
envDisableConfig.groups = normalizeArray(envDisableConfig.groups);
}
return envDisableConfig;
}

// Check in-code config
if (config.tracing.disable === true) {
logger?.info('Tracing has been disabled via "tracing.disable: true" configuration.');
return true;
}
const hasDisableConfig = isDisableConfigNonEmpty(config);

const hasDisableConfig = isDisableConfigNonEmpty(config);
if (hasDisableConfig) {
logger?.info(
`Tracing selectively disabled as per "tracing.disable" configuration: ${JSON.stringify(config.tracing.disable)}`
);
}

// Fallback to environment variables if `disable` is not explicitly configured
const disableConfig = isDisableConfigNonEmpty(config) ? config.tracing.disable : getDisableFromEnv();
const disableConfig = config.tracing.disable;

if (!disableConfig) return {};

if (disableConfig === true) return true;
// Handle if tracing.disable is an array
if (Array.isArray(disableConfig)) {
return categorizeDisableEntries(disableConfig);
}

// Normalize instrumentations and groups
if (disableConfig?.instrumentations) {
disableConfig.instrumentations = normalizeArray(disableConfig.instrumentations);
}
if (disableConfig?.groups) {
disableConfig.groups = normalizeArray(disableConfig.groups);
}
// Normalize instrumentations and groups
if (typeof disableConfig === 'object' && disableConfig !== null) {
if (disableConfig.instrumentations) {
disableConfig.instrumentations = normalizeArray(disableConfig.instrumentations);
}
if (disableConfig.groups) {
disableConfig.groups = normalizeArray(disableConfig.groups);
}
}

// Handle if tracing.disable is an array
if (Array.isArray(disableConfig)) {
return categorizeDisableEntries(disableConfig);
return disableConfig;
}

return disableConfig || {};
return {};
} catch (error) {
// Fallback to an empty disable config on error
logger?.debug(`Error while normalizing tracing.disable config: ${error?.message} ${error?.stack}`);
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/config/configNormalizers/stackTrace.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ exports.normalizeStackTraceMode = function (config) {

/**
* Normalizes stack trace length configuration based on precedence.
* Precedence: global config > config > env var > default
* Precedence: env var > global config > config > default
Copy link
Contributor

Choose a reason for hiding this comment

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

👍

* @param {import('../../config').InstanaConfig} config
* @returns {number} - Normalized value
*/
Expand Down
Loading