diff options
Diffstat (limited to 'src/mongo/db/commands/list_databases.cpp')
-rw-r--r-- | src/mongo/db/commands/list_databases.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/mongo/db/commands/list_databases.cpp b/src/mongo/db/commands/list_databases.cpp index 4c87043f9c9..8a11e595231 100644 --- a/src/mongo/db/commands/list_databases.cpp +++ b/src/mongo/db/commands/list_databases.cpp @@ -88,10 +88,7 @@ namespace mongo { b.append( "sizeOnDisk", (double) size ); totalSize += size; - { - Client::ReadContext rc(txn, *i ); - b.appendBool( "empty", rc.ctx().db()->getDatabaseCatalogEntry()->isEmpty() ); - } + b.appendBool("empty", size == 0); dbInfos.push_back( b.obj() ); @@ -99,24 +96,27 @@ namespace mongo { } set<string> allShortNames; - { - Lock::GlobalRead lk(txn->lockState()); - dbHolder().getAllShortNames(allShortNames); - } + dbHolder().getAllShortNames(allShortNames); for ( set<string>::iterator i = allShortNames.begin(); i != allShortNames.end(); i++ ) { string name = *i; - if ( seen.count( name ) ) + if (seen.count(name)) { continue; + } + + // This should never happen once the write collection locking changes are in + // invariant(false); BSONObjBuilder b; b.append( "name" , name ); b.append( "sizeOnDisk" , (double)1.0 ); { - Client::ReadContext ctx(txn, name); - b.appendBool( "empty", ctx.ctx().db()->getDatabaseCatalogEntry()->isEmpty() ); + // This will open the database, if it was closed + AutoGetDb autoDb(txn, *i, newlm::MODE_S); + Database* db = autoDb.getDb(); + b.appendBool("empty", db->getDatabaseCatalogEntry()->isEmpty()); } dbInfos.push_back( b.obj() ); |