From eceec3b0be4a65eb37b10a2c31a2fdb1ec72b26c Mon Sep 17 00:00:00 2001 From: karnem <mikhail.karnevskiy@desy.de> Date: Tue, 30 Jan 2024 12:47:36 +0100 Subject: [PATCH] Try to crate/get auto_id again in case of problem. This does happen when several receivers create new collection. --- common/cpp/src/database/mongodb_client.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index 815c911a9..6fcd19d94 100644 --- a/common/cpp/src/database/mongodb_client.cpp +++ b/common/cpp/src/database/mongodb_client.cpp @@ -366,6 +366,15 @@ Error MongoDBClient::GetNextId(const std::string& stream, uint64_t* id) const { mongoc_find_and_modify_flags_t(MONGOC_FIND_AND_MODIFY_UPSERT | MONGOC_FIND_AND_MODIFY_RETURN_NEW)); success = mongoc_collection_find_and_modify_with_opts ( collection, &query, opts, &reply, &error); + + // E11000 duplicate key error collection + // This does happen when several receivers create new collection + // Just try again + if (!success && error.code == 11000){ + success = mongoc_collection_find_and_modify_with_opts ( + collection, &query, opts, &reply, &error); + } + Error err; if (success) { bson_iter_t iter; -- GitLab