diff --git a/arangod/Aql/ExecutionBlock.cpp b/arangod/Aql/ExecutionBlock.cpp index e6b5ae93a9..cb007fac80 100644 --- a/arangod/Aql/ExecutionBlock.cpp +++ b/arangod/Aql/ExecutionBlock.cpp @@ -3756,6 +3756,8 @@ AqlItemBlock* RemoveBlock::work (std::vector& blocks) { for (auto it = blocks.begin(); it != blocks.end(); ++it) { auto res = (*it); auto document = res->getDocumentCollection(registerId); + + throwIfKilled(); // check if we were aborted size_t const n = res->size(); @@ -3886,6 +3888,8 @@ AqlItemBlock* InsertBlock::work (std::vector& blocks) { auto document = res->getDocumentCollection(registerId); size_t const n = res->size(); + throwIfKilled(); // check if we were aborted + // loop over the complete block for (size_t i = 0; i < n; ++i) { AqlValue a = res->getValue(i, registerId); @@ -4020,6 +4024,8 @@ AqlItemBlock* UpdateBlock::work (std::vector& blocks) { auto document = res->getDocumentCollection(docRegisterId); decltype(document) keyDocument = nullptr; + throwIfKilled(); // check if we were aborted + if (hasKeyVariable) { keyDocument = res->getDocumentCollection(keyRegisterId); } @@ -4193,6 +4199,8 @@ AqlItemBlock* ReplaceBlock::work (std::vector& blocks) { if (hasKeyVariable) { keyDocument = res->getDocumentCollection(keyRegisterId); } + + throwIfKilled(); // check if we were aborted size_t const n = res->size();