非常に奇妙な問題が発生しています。いくつかの大きな xml ファイルをインポートして、それらを mongoDB に保存しています。アルゴリズムは、典型的な非同期ループです。
doLoop = function( it, callback_loop ) {
if( it < no_of_items ) {
storeToMongo( ..., function( err, result ) {
...
doLoop( it+1, callback_loop );
});
} else {
callback_loop();
}
};
doLoop( 0, function() {
...
});
今(突然、コードに目立った変更はありません)ループの実行中に次のエラーが発生します。
events.js:72
throw er; // Unhandled 'error' event
^
Error: connect EADDRNOTAVAIL
at errnoException (net.js:901:11)
at connect (net.js:764:19)
at net.js:842:9
at dns.js:72:18
at process._tickCallback (node.js:415:13)
エラーは約 1 分後に発生します。その間に処理されるアイテムの数は常にまったく同じですが、正確ではありません。
connect/net
エラーの原因を突き止めようとしましたが、わかりません。私のコードにはソケット接続がありません。redis に接続していますが、問題ありません。mongoDB 接続ですか? しかし、なぜ突然失われるのでしょうか。
ループ全体を実行するのに役立つ唯一のことは、次のように mongo-callback 内で再帰ループ呼び出しを実行することです。
setTimeout( function() {
doLoop( it+1, callback_loop );
},1);
ここで何がうまくいかないのか考えている人はいますか?
ありがとう、ヘイノブ