From 7e9bc3ddf345f38c2c01eee995590093e12dd08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0brahim=20G=C3=BCrses?= Date: Thu, 16 May 2019 14:38:39 +0300 Subject: [PATCH] Implement error stack trace masking --- .circleci/config.yml | 2 +- README.md | 3 ++- src/Constants.ts | 1 + src/plugins/utils/Utils.ts | 3 +++ test/plugins/utils.test.js | 15 ++++++++++++++- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index db0c724e..3374fe2a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -25,7 +25,7 @@ jobs: - "ES_JAVA_OPTS=-Xms64m -Xmx64m" ports: - "127.0.0.1:9200:9200" - + resource_class: xlarge steps: - checkout - run: npm install diff --git a/README.md b/README.md index 9e081f05..35c0e939 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,8 @@ Check out the [configuration part](https://thundra.readme.io/docs/nodejs-configu | thundra_agent_lambda_trace_integrations_aws_sqs_message_mask | bool | false | | thundra_agent_lambda_trace_integrations_aws_lambda_payload_mask | bool | false | | thundra_agent_lambda_trace_integrations_aws_http_body_mask | bool | false | -| thundra_agent_lambda_report_rest_composite_enabled | bool | false | +| thundra_agent_lambda_report_rest_composite_enabled | bool | false | +| thundra_agent_lambda_error_stacktrace_mask | bool | false | #### 2. Module initialization parameters diff --git a/src/Constants.ts b/src/Constants.ts index 4a1d6b60..aa465df4 100644 --- a/src/Constants.ts +++ b/src/Constants.ts @@ -71,6 +71,7 @@ export const envVariableKeys = { THUNDRA_MASK_SQS_MESSAGE: 'thundra_agent_lambda_trace_integrations_aws_sqs_message_mask', THUNDRA_MASK_LAMBDA_PAYLOAD: 'thundra_agent_lambda_trace_integrations_aws_lambda_payload_mask', THUNDRA_MASK_HTTP_BODY: 'thundra_agent_lambda_trace_integrations_aws_http_body_mask', + THUNDRA_MASK_ERROR_STACK_TRACE: 'thundra_agent_lambda_error_stacktrace_mask', }; export function getTimeoutMargin(region: string) { diff --git a/src/plugins/utils/Utils.ts b/src/plugins/utils/Utils.ts index 40bc8076..a8a62679 100644 --- a/src/plugins/utils/Utils.ts +++ b/src/plugins/utils/Utils.ts @@ -97,6 +97,9 @@ class Utils { error.errorMessage = JSON.stringify(error.errorMessage); } + error.stack = Utils.getConfiguration( + envVariableKeys.THUNDRA_MASK_ERROR_STACK_TRACE) ? '' : error.stack; + return error; } diff --git a/test/plugins/utils.test.js b/test/plugins/utils.test.js index df99d7f6..1981f3fa 100644 --- a/test/plugins/utils.test.js +++ b/test/plugins/utils.test.js @@ -20,7 +20,10 @@ jest.mock('os', () => ({ jest.mock('../../dist/Constants', () => ({ PROC_STAT_PATH: './test/mocks/mock-proc-stat', - PROC_IO_PATH: './test/mocks/mock-proc-io' + PROC_IO_PATH: './test/mocks/mock-proc-io', + envVariableKeys: { + THUNDRA_MASK_ERROR_STACK_TRACE: 'thundra_agent_lambda_error_stacktrace_mask', + } })); describe('getCpuUsage', () => { @@ -132,4 +135,14 @@ describe('parseError', () => { expect(Utils.parseError(error).errorMessage).toEqual(JSON.stringify(error.message)); }); }); + + describe('mask stack trace', () => { + const error = new Error('I am an error'); + + process.env.thundra_agent_lambda_error_stacktrace_mask = 'true'; + + it('should set error.message as string', () => { + expect(Utils.parseError(error).stack).toEqual(''); + }); + }); }); \ No newline at end of file