summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/sort.cpp
diff options
context:
space:
mode:
authorJason Rassi <rassi@10gen.com>2016-01-14 12:58:13 -0500
committerJason Rassi <rassi@10gen.com>2016-01-14 15:12:38 -0500
commit09b89f0986550443a13af16b76ef04d91120bb2f (patch)
tree977b1fa1965ac1cba4e6b39b430e309636832305 /src/mongo/db/exec/sort.cpp
parent225ac6a226bc34bdae716c17f3b49f5a1a279e4e (diff)
downloadmongo-09b89f0986550443a13af16b76ef04d91120bb2f.tar.gz
SERVER-19377 PlanStage: make work() non-virt, add virt method doWork()
Changes PlanStage::work() to be non-virtual. PlanStage::work() now updates _commonStats and calls new pure virtual method doWork().
Diffstat (limited to 'src/mongo/db/exec/sort.cpp')
-rw-r--r--src/mongo/db/exec/sort.cpp13
1 files changed, 1 insertions, 12 deletions
diff --git a/src/mongo/db/exec/sort.cpp b/src/mongo/db/exec/sort.cpp
index b7b6fc0fc86..a621fbe945e 100644
--- a/src/mongo/db/exec/sort.cpp
+++ b/src/mongo/db/exec/sort.cpp
@@ -101,12 +101,7 @@ bool SortStage::isEOF() {
return child()->isEOF() && _sorted && (_data.end() == _resultIterator);
}
-PlanStage::StageState SortStage::work(WorkingSetID* out) {
- ++_commonStats.works;
-
- // Adds the amount of time taken by work() to executionTimeMillis.
- ScopedTimer timer(&_commonStats.executionTimeMillis);
-
+PlanStage::StageState SortStage::doWork(WorkingSetID* out) {
const size_t maxBytes = static_cast<size_t>(internalQueryExecMaxBlockingSortBytes);
if (_memUsage > maxBytes) {
mongoutils::str::stream ss;
@@ -156,7 +151,6 @@ PlanStage::StageState SortStage::work(WorkingSetID* out) {
addToBuffer(item);
- ++_commonStats.needTime;
return PlanStage::NEED_TIME;
} else if (PlanStage::IS_EOF == code) {
// TODO: We don't need the lock for this. We could ask for a yield and do this work
@@ -164,7 +158,6 @@ PlanStage::StageState SortStage::work(WorkingSetID* out) {
sortBuffer();
_resultIterator = _data.begin();
_sorted = true;
- ++_commonStats.needTime;
return PlanStage::NEED_TIME;
} else if (PlanStage::FAILURE == code || PlanStage::DEAD == code) {
*out = id;
@@ -178,10 +171,7 @@ PlanStage::StageState SortStage::work(WorkingSetID* out) {
*out = WorkingSetCommon::allocateStatusMember(_ws, status);
}
return code;
- } else if (PlanStage::NEED_TIME == code) {
- ++_commonStats.needTime;
} else if (PlanStage::NEED_YIELD == code) {
- ++_commonStats.needYield;
*out = id;
}
@@ -201,7 +191,6 @@ PlanStage::StageState SortStage::work(WorkingSetID* out) {
_wsidByDiskLoc.erase(member->loc);
}
- ++_commonStats.advanced;
return PlanStage::ADVANCED;
}