summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Neupauer <martin.neupauer@mongodb.com>2017-07-26 10:28:57 -0400
committerMartin Neupauer <martin.neupauer@mongodb.com>2017-07-28 10:22:32 -0400
commite2249895cdb317c6fe466aaadd76d3e5b31bfcda (patch)
tree0c459c4089bfb9ca13ac09e5c4435a19000bcf07
parent8bdcd3ac5fe7f3ba0bc0ddaa70ea6731ef775918 (diff)
downloadmongo-e2249895cdb317c6fe466aaadd76d3e5b31bfcda.tar.gz
SERVER-30174 Add a check for interrupts.
Add the checks to few missing places.
-rw-r--r--src/mongo/db/pipeline/document_source_coll_stats.cpp2
-rw-r--r--src/mongo/db/pipeline/document_source_current_op.cpp2
-rw-r--r--src/mongo/db/pipeline/document_source_merge_cursors.cpp2
-rw-r--r--src/mongo/db/pipeline/document_source_redact.cpp2
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;