Search code examples
node.jsmongodbmongooserestifypm2

mongoError: Topology was destroyed


I have a REST service built in node.js with Restify and Mongoose and a mongoDB with a collection with about 30.000 regular sized documents. I have my node service running through pmx and pm2.

Yesterday, suddenly, node started crapping out errors with the message "MongoError: Topology was destroyed", nothing more. I have no idea what is meant by this and what could have possibly triggered this. there is also not much to be found when google-searching this. So I thought I'd ask here.

After restarting the node service today, the errors stopped coming in. I also have one of these running in production and it scares me that this could happen at any given time to a pretty crucial part of the setup running there...

I'm using the following versions of the mentioned packages:

  • mongoose: 4.0.3
  • restify: 3.0.3
  • node: 0.10.25

Solution

  • It seems to mean your node server's connection to your MongoDB instance was interrupted while it was trying to write to it.

    Take a look at the Mongo source code that generates that error

    Mongos.prototype.insert = function(ns, ops, options, callback) {
        if(typeof options == 'function') callback = options, options = {};
        if(this.s.state == DESTROYED) return callback(new MongoError(f('topology was destroyed')));
        // Topology is not connected, save the call in the provided store to be
        // Executed at some point when the handler deems it's reconnected
        if(!this.isConnected() && this.s.disconnectHandler != null) {
          callback = bindToCurrentDomain(callback);
          return this.s.disconnectHandler.add('insert', ns, ops, options, callback);
        }
    
        executeWriteOperation(this.s, 'insert', ns, ops, options, callback);
    }
    

    This does not appear to be related to the Sails issue cited in the comments, as no upgrades were installed to precipitate the crash or the "fix"