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