Skip to content

Commit 8633498

Browse files
committed
fix(instrumentation): pass undefined if cannot parse number
1 parent 5e05126 commit 8633498

4 files changed

Lines changed: 24 additions & 17 deletions

File tree

lib/instrumentations/trace-instrumentation-amqplib.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var microtime = require('../optionalDependencies/microtime')
77
var debug = require('../utils/debug')('instrumentation')
88
var format = require('util').format
99

10-
function parseNumberOrUndefined (string) {
10+
function tryParseInt (string) {
1111
if (!string) { return }
1212
var n = parseInt(string, 10)
1313
return isNaN(n) ? undefined : n
@@ -17,12 +17,10 @@ function consumerWrapper (agent, original) {
1717
return function (queue, callback, options, cb0) {
1818
var orig = callback
1919
var wrapped = function (msg) {
20-
var originTimestamp = parseInt(get(msg, 'properties.headers[\'x-client-send\']'), 10)
21-
var parentServiceKey = parseNumberOrUndefined(get(msg, 'properties.headers[\'x-parent\']'))
22-
var timestamp = microtime.now()
23-
var transportDelay = isNaN(originTimestamp) ? undefined : timestamp - originTimestamp
24-
debug.info('amqplib.consumerWrapper',
25-
format('incomingEdge [%s %s %s]', 'amqp', parentServiceKey, transportDelay))
20+
var originTimestamp = tryParseInt(get(msg, 'properties.headers[\'x-client-send\']'))
21+
var parentServiceKey = tryParseInt(get(msg, 'properties.headers[\'x-parent\']'))
22+
var transportDelay = originTimestamp == null ? undefined : microtime.now() - originTimestamp
23+
debug.info('amqplib.consumerWrapper', format('incomingEdge [%s %s %s]', 'amqp', parentServiceKey, transportDelay))
2624
agent.incomingEdgeMetrics.report({
2725
serviceKey: parentServiceKey,
2826
protocol: 'amqp',
@@ -44,8 +42,7 @@ function sendMessageWrapper (agent, original) {
4442
'x-client-send': String(microtime.now()),
4543
'x-parent': String(agent.getServiceKey())
4644
}
47-
debug.info('amqplib.sendMessageWrapper',
48-
'sending instrumented message...')
45+
debug.info('amqplib.sendMessageWrapper', 'sending instrumented message...')
4946
defaults(fields.headers, traceHeaders)
5047

5148
return original.apply(this, arguments)

lib/instrumentations/trace-instrumentation-http/request.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ var microtime = require('../../optionalDependencies/microtime')
55
var util = require('./util')
66
var format = require('util').format
77

8+
function tryParseInt (string) {
9+
if (!string) { return }
10+
var n = parseInt(string, 10)
11+
return isNaN(n) ? undefined : n
12+
}
13+
814
function httpClient (originalHttpRequest, agent) {
915
var whiteListHosts = agent.getConfig().whiteListHosts
1016
var config = agent.getConfig()
@@ -105,10 +111,8 @@ function httpClient (originalHttpRequest, agent) {
105111
? collector.mustCollectSeverity
106112
: collector.defaultSeverity
107113

108-
var ssTimestamp = incomingMessage.headers['x-server-send']
109-
? Number(incomingMessage.headers['x-server-send']) : undefined
110-
var serviceKey = incomingMessage.headers['x-parent']
111-
? Number(incomingMessage.headers['x-parent']) : undefined
114+
var ssTimestamp = tryParseInt(incomingMessage.headers['x-server-send'])
115+
var serviceKey = tryParseInt(incomingMessage.headers['x-parent'])
112116

113117
var duffelBag = {
114118
severity: severity,

lib/instrumentations/trace-instrumentation-http/server.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ function isStatusCodeIgnored (ignoreStatusCodes, statusCode) {
3333
return false
3434
}
3535

36+
function tryParseInt (string) {
37+
if (!string) { return }
38+
var n = parseInt(string, 10)
39+
return isNaN(n) ? undefined : n
40+
}
41+
3642
function httpServer (listener, agent) {
3743
var config = agent.getConfig()
3844
var collector = agent.tracer.collector
@@ -69,9 +75,9 @@ function httpServer (listener, agent) {
6975
? collector.mustCollectSeverity
7076
: collector.defaultSeverity
7177

72-
var parentServiceKey = headers['x-parent'] && Number(headers['x-parent'])
73-
var timestamp = headers['x-client-send'] && Number(headers['x-client-send'])
74-
var communicationId = headers['x-span-id']
78+
var parentServiceKey = tryParseInt(headers['x-parent'])
79+
var timestamp = tryParseInt(headers['x-client-send'])
80+
var communicationId = headers['x-span-id'] || undefined
7581

7682
var duffelBag = {
7783
severity: severity,

test/instrumentations/redis/redis.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ var expect = require('chai').expect
77
var Shimmer = require('../../../lib/utils/shimmer')
88
var Module = require('module')
99

10-
describe.only('The redis wrapper module', function () {
10+
describe('The redis wrapper module', function () {
1111
var sandbox = sinon.sandbox.create()
1212
var fakeAgent = {
1313
incomingEdgeMetrics: {

0 commit comments

Comments
 (0)