MongoDB WriteConcern Java Driver

I have a simple mongo application that happens to be async (using Akka). I send a message to an actor, which in turn write 3 records to a database. I'm using WriteConcern.SAFE because I want to be sure the write happened (also tried WriteConcern.FSYNC_SAFE).

I pause for a second to let the writes happen then do a read--and get nothing.

So my write code might be: myObj, WriteConcern.SAFE )
println("--1--") myObj, WriteConcern.SAFE )
println("--2--") myObj, WriteConcern.SAFE )

then in my test code (running outside the actor--in another thread) I print out the # of records I find:

println( collection.findAll(...) )

My output looks like this:


Indeed if I look in the database I see no records. Sometimes I actually do see data there and the test works. Async code can be tricky and it's possible the test code is being hit before the writes happen, so I also tried printing out timestamps to ensure these are being executed in the order presented--they are. The data should be there. Sample output below w/timestamps:

Saved: brand_1 / dev  1375486024040
Saved: brand_1 / dev2 1375486024156
Saved: brand_1 / dev3 1375486024261
                      1375486026593 0 found

So the 3 saves clearly happened (and should have written) a full 2 seconds before the read was attempted.

I understand for more liberal WriteConcerns you could get this behavior, but I thought the two safest ones would assure me the write actually happened before proceeding.


Subtle but simple problem. I was using a def to create my connection... which I then proceeded to call twice as if it was a val. So I actually had 2 different writers so that explained the sometimes-difference in my results. Refactored to a val and all was predictable. Agonizing to identify, easy to understand/fix.

Need Your Help

multidimensional associative array - difference


How to compare multidimensional associative arrays.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.