diff options
author | David Storch <david.storch@10gen.com> | 2016-01-26 15:54:32 -0500 |
---|---|---|
committer | David Storch <david.storch@10gen.com> | 2016-01-26 16:00:59 -0500 |
commit | b8a3d87501b15a881e135f45d4ef9de641b191a3 (patch) | |
tree | 124c08337bbc2222ba3d2dc4008efb2478ccee26 | |
parent | 9129d529d647ff8bab798d4572084363b551d05f (diff) | |
download | mongo-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.cpp | 9 |
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; } } |