-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: Backlog
-
Component/s: Querying
-
ALL
-
-
Query 2020-11-30
When I tried to run the "bestbuy_agg_query_comparison.js" benchmark with useAgg=false and with SBE mode enabled, the benchmark failed with mongod crashing due to an invariant failure in IndexScanStage::doRestoreState().
I've developed a simplified repro - see the "Steps To Reproduce" section.
The invariant failure is happening on line 133 of "src/mongo/db/exec/sbe/stages/ix_scan.cpp":
invariant(_opCtx);
Here is what the call stack looks like when the invariant fails:
mongo::sbe::IndexScanStage::doRestoreState() mongo::sbe::CanChangeState<mongo::sbe::PlanStage>::restoreState() mongo::sbe::CanChangeState<mongo::sbe::PlanStage>::restoreState() mongo::sbe::CanChangeState<mongo::sbe::PlanStage>::restoreState() mongo::PlanYieldPolicySBE::yield(mongo::OperationContext*, std::function<void ()>) mongo::PlanYieldPolicy::yieldOrInterrupt(mongo::OperationContext*, std::function<void ()>) mongo::sbe::IndexScanStage::getNext() mongo::sbe::LoopJoinStage::getNext() mongo::sbe::LimitSkipStage::open(bool) mongo::sbe::LoopJoinStage::open(bool) mongo::sbe::LimitSkipStage::open(bool) mongo::sbe::BaseRuntimePlanner::prepareExecutionPlan(mongo::sbe::PlanStage*, mongo::stage_builder::PlanStageData*) const
The goal of this task is to investigate why the invariant is failing and fix the underlying issue.
- duplicates
-
SERVER-52678 [SBE] multi-planner candidate plan may yield before being attached to the OperationContext
- Closed
- is depended on by
-
SERVER-51655 Investigate sys-perf benchmark performance in SBE
- Closed