一尘不染

mongoError:topology已被破坏

node.js

我有一个用Restify和Mongoose在node.js中构建的REST服务,以及一个mongoDB,它的集合包含大约30.000个常规大小的文档。我的节点服务通过pmx和pm2运行。

昨天,节点突然开始通过消息“
MongoError:拓扑已被破坏”消除错误,仅此而已。我不知道这是什么意思,可能触发了什么。谷歌搜索时也没有太多发现。所以我想在这里问。

今天重新启动了节点服务后,错误停止了出现。我也有其中一个正在生产中运行,这使我感到害怕,这可能在任何给定时间发生在运行在那里的设置的相当关键的部分…

我正在使用以下版本的提及的软件包:

  • Mongoose:4.0.3
  • Readjustment:3.0.3
  • node:0.10.25

阅读 314

收藏
2020-07-07

共1个答案

一尘不染

看来这意味着您的节点服务器与MongoDB实例的连接在尝试写入时已中断。

看一下产生该错误Mongo源代码

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);
}

这似乎与注释中引用的Sails问题无关,因为未安装任何升级来加速崩溃或“修复”

2020-07-07