diff options
author | Eliot Horowitz <eliot@10gen.com> | 2010-02-25 13:47:59 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2010-02-25 13:47:59 -0500 |
commit | 6d0bc9cc2f21277c893a56062cdd19fa5ca68139 (patch) | |
tree | 61337882351e2013c19c4f93ec340c3b343f8ffe /db/client.cpp | |
parent | b845f5e28eeebb5895e134472279bcee471f1b92 (diff) | |
download | mongo-6d0bc9cc2f21277c893a56062cdd19fa5ca68139.tar.gz |
fix auth recursive lock issue
Diffstat (limited to 'db/client.cpp')
-rw-r--r-- | db/client.cpp | 7 |
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 |