summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2011-09-22 23:37:41 -0400
committerEliot Horowitz <eliot@10gen.com>2011-09-22 23:38:23 -0400
commit2250ff90c53e486a21ee1f3f2a9de71fdd7743ca (patch)
treef2d5aac1d0c69eefbe654987d9c7945c203dae8b
parent692f4ec8dfbb75c5d2f5a28b70231f8f95d4b95e (diff)
downloadmongo-2250ff90c53e486a21ee1f3f2a9de71fdd7743ca.tar.gz
fix crash in filemd5 without correct index SERVER-3913
-rw-r--r--db/dbcommands.cpp4
-rw-r--r--jstests/filemd5.js11
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) )
+