2

以下のコードを使用してセットが挿入されるたびに、何千ものエントリ セットを挿入する長時間実行オペレーションがあります。このコードをしばらく実行すると、collection.Update() メソッドがフリーズし (戻りません)、プロセス全体が停止します。

これについての合理的な説明はどこにも見つかりません。

私はmongodのログを見てきましたが、異常なことは何もありません.このプロセスからのリクエストの受信を停止するだけです.

Mongo バージョン: 2.4.1、C# ドライバー バージョン: 1.8.0

using (_mongoServer.RequestStart(_database))    
{
    var collection = GetCollection<BsonDocument>(collectionName);

    // Iterate over all records
    foreach (var recordToInsert in recordsDescriptorsToInsert)
    {
        var query = new QueryDocument();
        var update = new UpdateBuilder();

        foreach (var property in recordToInsert)
        {
            var field = property.Item1;
            var value = BsonValue.Create(property.Item2);

            if (keys.Contains(field))
                query.Add(field, value);

            update.Set(field, value);
        }

        collection.Update(query, update, UpdateFlags.Upsert); // ** NEVER RETURNS **
    }
}
4

1 に答える 1