c# mongodb driver write concern
Asked Answered
G

1

-1

My web service writes to a mongodb and I notice that under load, the writes are failing a lot. Reading this documentation I see that by default the settings are set to "Acknowledge" and reading this post It seems I need to set it to a higher setting (safe mode - which seems to be deprecated). So my question is , how should I initialize my mongodb such that my web service will "always" write to the db (or throw an error trying) and not fail (assuming it can write :) )

From what I understand I need to set the "write concern" but not clear on how to set it to "Assure success in writing to the db"

The code I am using now to retrieve the Db is :

MongoClient client = new MongoClient(connection_string);
var server = client.GetServer();
Database = _db = server.GetDatabase(dbname);
Gemoets answered 23/6, 2013 at 14:14 Comment(3)
"writes are failing a lot"? How so?Broads
"safe" == "acknowledged" - the terminology was changed and the current default is exactly what SAFE meant before, as Derick says. You need to provide more information as it seems likely that something else is the problem (and therefore a different solution will be needed).Blitzkrieg
Acknowledged should throw an error of it wasn't able to write to the DB, Yet looking at logs I see that all request were OK. Should I look at some result, if not successful try again ??Gemoets
C
0

Your connection string needs to have the option w=1 for this, which is the default in later versions of the driver. This looks like the following in the connection string:

mongodb://localhost/?w=1

But this is the default.

You write that "writes are failing a lot" - how do you see that? By documents not being in the database, or by getting errors? Let me know and I'll update the answer.

Contradistinguish answered 23/6, 2013 at 15:12 Comment(3)
I sent thousands of identical requests and they were all getting 200 response back (No error was thrown). Each request writes to the DB identical data - yet number of successful writes < number of sent requests...Gemoets
MongoDB doesn't send "200" errors. How are you sending things to MongoDB?Contradistinguish
GetCollection<T>().Save<T>(entity);Gemoets

© 2022 - 2024 — McMap. All rights reserved.