diff options
author | Martin Neupauer <martin.neupauer@mongodb.com> | 2017-07-26 10:28:57 -0400 |
---|---|---|
committer | Martin Neupauer <martin.neupauer@mongodb.com> | 2017-07-28 10:22:32 -0400 |
commit | e2249895cdb317c6fe466aaadd76d3e5b31bfcda (patch) | |
tree | 0c459c4089bfb9ca13ac09e5c4435a19000bcf07 | |
parent | 8bdcd3ac5fe7f3ba0bc0ddaa70ea6731ef775918 (diff) | |
download | mongo-e2249895cdb317c6fe466aaadd76d3e5b31bfcda.tar.gz |
SERVER-30174 Add a check for interrupts.
Add the checks to few missing places.
4 files changed, 8 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/document_source_coll_stats.cpp b/src/mongo/db/pipeline/document_source_coll_stats.cpp index a81ae0db88b..7f025a29606 100644 --- a/src/mongo/db/pipeline/document_source_coll_stats.cpp +++ b/src/mongo/db/pipeline/document_source_coll_stats.cpp @@ -93,6 +93,8 @@ intrusive_ptr<DocumentSource> DocumentSourceCollStats::createFromBson( } DocumentSource::GetNextResult DocumentSourceCollStats::getNext() { + pExpCtx->checkForInterrupt(); + if (_finished) { return GetNextResult::makeEOF(); } diff --git a/src/mongo/db/pipeline/document_source_current_op.cpp b/src/mongo/db/pipeline/document_source_current_op.cpp index b49d7de702c..49f3dfc9d70 100644 --- a/src/mongo/db/pipeline/document_source_current_op.cpp +++ b/src/mongo/db/pipeline/document_source_current_op.cpp @@ -91,6 +91,8 @@ DocumentSource::InitialSourceType DocumentSourceCurrentOp::getInitialSourceType( } DocumentSource::GetNextResult DocumentSourceCurrentOp::getNext() { + pExpCtx->checkForInterrupt(); + if (_ops.empty()) { _ops = _mongod->getCurrentOps(_includeIdleConnections, _includeOpsFromAllUsers, _truncateOps); diff --git a/src/mongo/db/pipeline/document_source_merge_cursors.cpp b/src/mongo/db/pipeline/document_source_merge_cursors.cpp index 5cc2051e3c7..93cd6dd93e7 100644 --- a/src/mongo/db/pipeline/document_source_merge_cursors.cpp +++ b/src/mongo/db/pipeline/document_source_merge_cursors.cpp @@ -152,6 +152,8 @@ Document DocumentSourceMergeCursors::nextSafeFrom(DBClientCursor* cursor) { } DocumentSource::GetNextResult DocumentSourceMergeCursors::getNext() { + pExpCtx->checkForInterrupt(); + if (_unstarted) start(); diff --git a/src/mongo/db/pipeline/document_source_redact.cpp b/src/mongo/db/pipeline/document_source_redact.cpp index a1f211b6bd5..78cae520816 100644 --- a/src/mongo/db/pipeline/document_source_redact.cpp +++ b/src/mongo/db/pipeline/document_source_redact.cpp @@ -61,6 +61,8 @@ static const Value pruneVal = Value("prune"_sd); static const Value keepVal = Value("keep"_sd); DocumentSource::GetNextResult DocumentSourceRedact::getNext() { + pExpCtx->checkForInterrupt(); + auto nextInput = pSource->getNext(); for (; nextInput.isAdvanced(); nextInput = pSource->getNext()) { auto& variables = pExpCtx->variables; |