vlad_vega
vlad_vega

Reputation: 21

New Relic with node-mongo-native GridFS instrumentation error

When I NewRelic= require('newrelic'); and execute

var NewRelic= require('newrelic'),
    mongo_native = require('mongodb'),
    Express= require('express'),
    http= require('http');
    GridStore =  mongo_native.GridStore;

process.on('uncaughtException', function(err) {
    console.log('Uncaught Exception', err);
});
mongo_native.connect(mongoLabUri, {}, function(err, db){
    var app= Express();
    var server= http.createServer(app).listen(5009, function(err){
        console.log('listening on 6000, err:',err);
        app.get('/', function(){
            console.log('received request to /');
            var gs = new GridStore(db, 'RandomFileName'+Math.random(), "w" );
            console.log('initalized gridstore');
            gs.open(function(err, gs) {
               console.log('gridstore opened successfully')
            });
        });
    });

});

Output:

listening on 6000, err: undefined
received request to /
initalized gridstore
Uncaught Exception { [TypeError: Cannot read property 'collectionName' of undefined]
   domain: 
   { domain: null,
    _events: { error: undefined },
    _maxListeners: 10,
    members: [] },
domainThrown: true }

node v0.10.x Latest express, new relic, mongo

Same thing happens on nodejitsu, heroku node deploys

If I take out New Relic, everything works fine. Can anyone at help me out?

Stack trace:

TypeError: Cannot read property \'collectionName\' of undefined\n at /Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/lib/instrumentation/mongodb.js:51:45\n at b (domain.js:183:18)\n at /Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/node_modules/continuation-local-storage/context.js:57:17\n at /Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/lib/transaction/tracer.js:239:22\n at ErrorTracer.monitor (/Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/lib/error.js:188:12)\n at Tracer.monitor (/Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/lib/transaction/tracer.js:237:28)\n at wrapCallbackInvocation (/Users/vlad/Development/nodejitsu/zooplr/node_modules/newrelic/lib/transaction/tracer.js:179:17)\n at /Users/vlad/Development/nodejitsu/zooplr/node_modules/mongodb/lib/mongodb/cursor.js:738:35\n at Cursor.close (/Users/vlad/Development/nodejitsu/zooplr/node_modules/mongodb/lib/mongodb/cursor.js:959:5)\n at Cursor.nextObject (/Users/vlad/Development/nodejitsu/zooplr/node_modules/mongodb/lib/mongodb/cursor.js:738:17)',

Upvotes: 2

Views: 520

Answers (1)

othiym23
othiym23

Reputation: 166

This is a bug in New Relic for Node.js that was introduced by the advent of version 1.3.20 of the MongoDB driver. There is also a ticket open on the module for this. We have a solution under testing within New Relic, and a new version of the module that addresses this should be published to npm in the near term.

Upvotes: 2

Related Questions