summaryrefslogtreecommitdiff
path: root/src/mongo/s/query/async_results_merger.cpp
diff options
context:
space:
mode:
authorYunhe (John) Wang <yunhe.wang@mongodb.com>2015-10-06 13:41:59 -0400
committerYunhe (John) Wang <yunhe.wang@mongodb.com>2015-10-08 13:31:20 -0400
commitaaf2969861e882624132c5d6b6141acfafc15aa7 (patch)
treef411c1634fdd7af47dde1a9cdb0bfe60335e571d /src/mongo/s/query/async_results_merger.cpp
parent9b984cdc4b58be9002c692cd9ba8af2a3731b748 (diff)
downloadmongo-aaf2969861e882624132c5d6b6141acfafc15aa7.tar.gz
SERVER-20720 mongos now returns dead tailable cursor over an empty capped collection
Diffstat (limited to 'src/mongo/s/query/async_results_merger.cpp')
-rw-r--r--src/mongo/s/query/async_results_merger.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mongo/s/query/async_results_merger.cpp b/src/mongo/s/query/async_results_merger.cpp
index d7e8edf0dcd..d8a47c23eaa 100644
--- a/src/mongo/s/query/async_results_merger.cpp
+++ b/src/mongo/s/query/async_results_merger.cpp
@@ -62,15 +62,22 @@ AsyncResultsMerger::AsyncResultsMerger(executor::TaskExecutor* executor,
AsyncResultsMerger::~AsyncResultsMerger() {
stdx::lock_guard<stdx::mutex> lk(_mutex);
+ invariant(remotesExhausted_inlock() || _lifecycleState == kKillComplete);
+}
- bool allExhausted = true;
+bool AsyncResultsMerger::remotesExhausted() {
+ stdx::lock_guard<stdx::mutex> lk(_mutex);
+ return remotesExhausted_inlock();
+}
+
+bool AsyncResultsMerger::remotesExhausted_inlock() {
for (const auto& remote : _remotes) {
if (!remote.exhausted()) {
- allExhausted = false;
+ return false;
}
}
- invariant(allExhausted || _lifecycleState == kKillComplete);
+ return true;
}
bool AsyncResultsMerger::ready() {