diff options
author | Eliot Horowitz <eliot@10gen.com> | 2011-09-22 23:37:41 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2011-09-22 23:38:23 -0400 |
commit | 2250ff90c53e486a21ee1f3f2a9de71fdd7743ca (patch) | |
tree | f2d5aac1d0c69eefbe654987d9c7945c203dae8b | |
parent | 692f4ec8dfbb75c5d2f5a28b70231f8f95d4b95e (diff) | |
download | mongo-2250ff90c53e486a21ee1f3f2a9de71fdd7743ca.tar.gz |
fix crash in filemd5 without correct index SERVER-3913
-rw-r--r-- | db/dbcommands.cpp | 4 | ||||
-rw-r--r-- | jstests/filemd5.js | 11 |
2 files changed, 15 insertions, 0 deletions
diff --git a/db/dbcommands.cpp b/db/dbcommands.cpp index 1445c4dd04e..97472ab8fb5 100644 --- a/db/dbcommands.cpp +++ b/db/dbcommands.cpp @@ -1104,6 +1104,10 @@ namespace mongo { BSONObj sort = BSON( "files_id" << 1 << "n" << 1 ); shared_ptr<Cursor> cursor = bestGuessCursor(ns.c_str(), query, sort); + if ( ! cursor ) { + errmsg = "need an index on { files_id : 1 , n : 1 }"; + return false; + } auto_ptr<ClientCursor> cc (new ClientCursor(QueryOption_NoCursorTimeout, cursor, ns.c_str())); int n = 0; diff --git a/jstests/filemd5.js b/jstests/filemd5.js new file mode 100644 index 00000000000..41d03a1bb30 --- /dev/null +++ b/jstests/filemd5.js @@ -0,0 +1,11 @@ +
+db.fs.chunks.drop();
+db.fs.chunks.insert({files_id:1,n:0,data:new BinData(0,"test")})
+
+x = db.runCommand({"filemd5":1,"root":"fs"});
+assert( ! x.ok , tojson(x) )
+
+db.fs.chunks.ensureIndex({files_id:1,n:1})
+x = db.runCommand({"filemd5":1,"root":"fs"});
+assert( x.ok , tojson(x) )
+
|