diff options
author | Yunhe (John) Wang <yunhe.wang@mongodb.com> | 2015-10-06 13:41:59 -0400 |
---|---|---|
committer | Yunhe (John) Wang <yunhe.wang@mongodb.com> | 2015-10-08 13:31:20 -0400 |
commit | aaf2969861e882624132c5d6b6141acfafc15aa7 (patch) | |
tree | f411c1634fdd7af47dde1a9cdb0bfe60335e571d /src/mongo/s/query/async_results_merger.cpp | |
parent | 9b984cdc4b58be9002c692cd9ba8af2a3731b748 (diff) | |
download | mongo-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.cpp | 13 |
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() { |