From 12cc8fb4ae8df0836f73d30ea95354155b757571 Mon Sep 17 00:00:00 2001 From: Eliot Horowitz Date: Sun, 10 Jul 2011 00:25:43 -0400 Subject: [PATCH] better error handling for monogodump --- tools/dump.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/dump.cpp b/tools/dump.cpp index 155f84b8c3555..59bdaf3091552 100644 --- a/tools/dump.cpp +++ b/tools/dump.cpp @@ -333,11 +333,18 @@ class Dump : public Tool { auth( "admin" ); BSONObj res = conn( true ).findOne( "admin.$cmd" , BSON( "listDatabases" << 1 ) ); - BSONObj dbs = res.getField( "databases" ).embeddedObjectUserCheck(); + if ( ! res["databases"].isABSONObj() ) { + error() << "output of listDatabases isn't what we expected, no 'databases' field:\n" << res << endl; + } + BSONObj dbs = res["databases"].embeddedObjectUserCheck(); set keys; dbs.getFieldNames( keys ); for ( set::iterator i = keys.begin() ; i != keys.end() ; i++ ) { string key = *i; + + if ( ! dbs[key].isABSONObj() ) { + error() << "database field not an object key: " << key << " value: " << dbs[key] << endl; + } BSONObj dbobj = dbs.getField( key ).embeddedObjectUserCheck();