Skip to content

Commit dc91f30

Browse files
committed
fix(mongo): do not add callback for aggregation
1 parent ecdb03c commit dc91f30

4 files changed

Lines changed: 12 additions & 9 deletions

File tree

lib/instrumentations/index.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ var Shimmer = require('../utils/shimmer')
44

55
describe('The instrumentor module', function () {
66
it('can be created', function () {
7-
var shimmerStub = this.sandbox.stub(Shimmer, 'wrap')
7+
this.sandbox.stub(Shimmer, 'wrap')
88

99
instrumentor.create({
1010
config: {

lib/instrumentations/mongodb.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ module.exports = function (mongodb, agent) {
4747
protocol: consts.PROTOCOLS.MONGODB,
4848
url: _this.collectionName || 'unknown',
4949
host: host,
50-
method: name
50+
method: name,
51+
disableCallback: name === 'aggregate'
5152
})
5253
}
5354
})

lib/instrumentations/mongodb.spec.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ describe('The mongodb wrapper module', function () {
5151
host: 'fakeHost:666',
5252
method: 'find',
5353
protocol: 'mongodb',
54-
url: 'unknown'
54+
url: 'unknown',
55+
disableCallback: false
5556
})
5657
})
5758

@@ -78,18 +79,19 @@ describe('The mongodb wrapper module', function () {
7879

7980
var shimmerWrapStub = this.sandbox.stub(Shimmer, 'wrap', function (nodule, path, name, cb) {
8081
expect(cb).to.be.a('function')
81-
var commandArguments = ['find', {x: 5}]
82+
var commandArguments = ['aggregate', {x: 5}]
8283
var fakeFind = 'not even a function'
83-
cb(fakeFind, 'find').apply(fakeMongo.Collection, commandArguments)
84+
cb(fakeFind, 'aggregate').apply(fakeMongo.Collection, commandArguments)
8485
expect(fakeWrapQuery).to.have.been.calledWith(
8586
fakeFind,
8687
commandArguments,
8788
fakeAgent,
8889
{
8990
host: 'fakeHost:666',
90-
method: 'find',
91+
method: 'aggregate',
9192
protocol: 'mongodb',
92-
url: 'unknown'
93+
url: 'unknown',
94+
disableCallback: true
9395
})
9496
})
9597

lib/instrumentations/utils/wrapQuery.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ function wrapQuery (original, args, agent, params) {
1010
var url = _params.url
1111
var method = _params.method
1212
var returnsPromise = _params.returnsPromise || false
13+
var disableCallback = _params.disableCallback
1314

1415
// custom error parsing depending on the instrumentation
1516
var parseError = _params.parseError || function (err) {
@@ -60,13 +61,12 @@ function wrapQuery (original, args, agent, params) {
6061
}
6162
}
6263
var last = args[args.length - 1]
63-
6464
if (last && typeof last === 'function') {
6565
args[args.length - 1] = wrappedCallback(last)
6666
} else if (Array.isArray(last) && typeof last[last.length - 1] === 'function') {
6767
var lastOfLast = last.length - 1
6868
args[args.length - 1][lastOfLast] = wrappedCallback(last[lastOfLast])
69-
} else {
69+
} else if (!disableCallback) {
7070
args.push(wrappedCallback(function () { }))
7171
}
7272
reportSend()

0 commit comments

Comments
 (0)