Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't close a MongoDB connection with Node.js?

It seems that I can't close a MongoDB connection with Node.js native driver. When I run node replica.js the script never ends, hence the connection can't be closed for some reason.

Here is the code. It's a replica set but I don't think that it's a problem:

var mongodb = require('mongodb')
  , Db      = mongodb.Db
  , Server  = mongodb.Server
  , ReplSet = mongodb.ReplSet;

// Replica set
var replSet = new ReplSet( [
    new Server('localhost', 27017), // Primary
    new Server('localhost', 27018), // Secondary
    new Server('localhost', 27016), // Secondary
  ],
  { rs_name: 'replica', read_secondary: true }
);

var db = new Db('test', replSet, { native_parser: true, w: 1 });

// Opening
db.open(function (err, db) {
    if (err) console.error(err);

    db.close();
});

Connecting to a single mongod instance works just fine, connection get closed and the script ends, without the need (suggested by robertklep) of process.exit() call:

var mongodb = require('mongodb')
  , Db      = mongodb.Db
  , Server  = mongodb.Server;

// Single instance
var server = new Server('localhost', 27017):
var db = new Db('test', server, { native_parser: true, w: 1 });

// Opening
db.open(function (err, db) {
    if (err) console.error(err);

    db.close();
});
like image 954
gremo Avatar asked May 17 '13 16:05

gremo


1 Answers

It turns out that it was a bug, now fixed in 1.3.6. Look at this issue I opened few days ago. The funny thing is that it's my first time with MongoDB...

like image 131
gremo Avatar answered Sep 29 '22 19:09

gremo