1. ホーム
  2. node.js

[解決済み】mongoError: トポロジーが破壊されました

2022-01-22 08:55:46

質問

私は、RestifyとMongooseを使用してnode.jsで構築されたRESTサービスと、約3万件の通常サイズのドキュメントを含むコレクションを持つMongoDBを持っています。 私のnodeサービスは、pmxとpm2を通して実行されています。

昨日、突然、node が "MongoError.というメッセージでエラーを出すようになりました。Topology was destroyed"と表示され、それ以上何も表示されません。 これはどういう意味なのか、何が引き金になったのか、さっぱりわかりませんし、ググってもあまり出てきません。そこで、ここで質問してみようと思いました。

今日、nodeのサービスを再起動したら、エラーが出なくなりました。 私はこのうちの1つを本番で動かしていますが、そこで動いているセットアップのかなり重要な部分にいつでもこれが起こりうるというのは怖いですね...。

私は、前述のパッケージの以下のバージョンを使用しています。

  • mongoose: 4.0.3
  • restify: 3.0.3
  • ノードになります。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 の問題とは関係ないようです。クラッシュや修正を引き起こすようなアップグレードはインストールされていないためです。