diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index 815c911a97350fcae692c465c40d28219fc42cea..6fcd19d949bcf45dda2b64d5a640ff80f601e763 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;