我有一个在 node.js 中构建的 REST 服务,带有 Restify 和 Mongoose,还有一个 mongoDB,它的集合包含大约 30.000 个常规大小的文档。我的节点服务通过 pmx 和 pm2 运行。
昨天,突然,节点开始用消息“MongoError:拓扑被破坏”来解决错误,仅此而已。我不知道这是什么意思,什么可能触发了这个。谷歌搜索时也找不到太多东西。所以我想我会在这里问。
今天重新启动节点服务后,错误停止出现。我也有一个在生产中运行,这让我害怕,这可能在任何给定时间发生在运行在那里的设置的一个非常关键的部分......
我正在使用上述软件包的以下版本:
mongoose: 4.0.3 restify: 3.0.3 node: 0.10.25
这似乎意味着您的节点服务器与 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 问题无关,因为没有安装升级来引发崩溃或“修复”