summaryrefslogtreecommitdiff
path: root/db/client.cpp
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2010-02-25 13:47:59 -0500
committerEliot Horowitz <eliot@10gen.com>2010-02-25 13:47:59 -0500
commit6d0bc9cc2f21277c893a56062cdd19fa5ca68139 (patch)
tree61337882351e2013c19c4f93ec340c3b343f8ffe /db/client.cpp
parentb845f5e28eeebb5895e134472279bcee471f1b92 (diff)
downloadmongo-6d0bc9cc2f21277c893a56062cdd19fa5ca68139.tar.gz
fix auth recursive lock issue
Diffstat (limited to 'db/client.cpp')
-rw-r--r--db/client.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/db/client.cpp b/db/client.cpp
index 1447ab49da0..a7d068453a4 100644
--- a/db/client.cpp
+++ b/db/client.cpp
@@ -114,6 +114,13 @@ namespace mongo {
_db = dbHolder.getOrCreate( _ns , _path , _justCreated );
assert( _db );
}
+ else if ( dbMutex.getState() < -1 ){
+ // nested read lock :(
+ assert( _lock );
+ _lock->releaseAndWriteLock();
+ _db = dbHolder.getOrCreate( _ns , _path , _justCreated );
+ assert( _db );
+ }
else {
// we have a read lock, but need to get a write lock for a bit
// we need to be in a write lock since we're going to create the DB object