私は、Restify と Mongoose を使用して node.js で構築された REST サービスと、約 30,000 個の通常サイズのドキュメントを含むコレクションを持つ mongoDB を持っています。ノード サービスは pmx と pm2 を介して実行されています。
昨日、突然、ノードが「MongoError: Topology was broken」というメッセージとともにエラーを出し始めました。それ以上のことはありません。これが何を意味するのか、何が原因なのか全く分かりません。また、これを Google 検索してもあまり見つかりません。そこで、ここで質問しようと思いました。
今日、ノード サービスを再起動すると、エラーが発生しなくなりました。私も、このうちの 1 つを本番環境で実行していますが、そこで実行されているセットアップの非常に重要な部分にいつでもこのようなことが起こる可能性があると思うと、不安になります...
上記のパッケージの以下のバージョンを使用しています:
- マングース: 4.0.3
- レストファイ: 3.0.3
- ノード: 0.10.25
ベストアンサー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の問題とは関係がないようです。クラッシュや「修正」を引き起こすアップグレードはインストールされていないためです。