summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2016-01-26 15:54:32 -0500
committerDavid Storch <david.storch@10gen.com>2016-01-26 16:00:59 -0500
commitb8a3d87501b15a881e135f45d4ef9de641b191a3 (patch)
tree124c08337bbc2222ba3d2dc4008efb2478ccee26
parent9129d529d647ff8bab798d4572084363b551d05f (diff)
downloadmongo-b8a3d87501b15a881e135f45d4ef9de641b191a3.tar.gz
SERVER-20829 return no results rather than RUNNER_DEAD from idhack on concurrent delete
-rw-r--r--src/mongo/db/query/idhack_runner.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mongo/db/query/idhack_runner.cpp b/src/mongo/db/query/idhack_runner.cpp
index d587323d5f0..af365e0b37c 100644
--- a/src/mongo/db/query/idhack_runner.cpp
+++ b/src/mongo/db/query/idhack_runner.cpp
@@ -146,6 +146,14 @@ namespace {
_done = true;
return Runner::RUNNER_DEAD;
}
+
+ // Even if we're not dead due to something like a db or collection drop, the
+ // document we're looking for may have already been deleted out from under
+ // us.
+ if (_locFetching.isNull()) {
+ _done = true;
+ return Runner::RUNNER_EOF;
+ }
}
}
@@ -233,7 +241,6 @@ namespace {
if (_done || _killed) { return; }
if (_locFetching == dl && (type == INVALIDATION_DELETION)) {
_locFetching = DiskLoc();
- _killed = true;
}
}