-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Optimization
-
ALL
-
-
None
-
None
-
None
-
None
-
None
-
None
-
None
A test that concurrently adds or removes an array value and drops and recreates indexes , while running join-cache-eligible statements, results in the following tripwire assertion:
"Tripwire assertion","attr":{"error":{"code":3994303,"codeName":"Location3994303","errmsg":"$expr comparison predicates on multikey paths cannot use an index"},"location":"src/mongo/db/query/compiler/optimizer/index_bounds_builder/index_bounds_builder.cpp:1060:75:static void mongo::IndexBoundsBuilder::_translatePredicate
[j0] #0 0x0000af761ca4ee7b in printCppTrace [j0] #1 0x0000af761ca3dc1f in logErrorBlock [j0] #2 0x0000af761ca3fe0b in mongo::error_details::tassertFailed(mongo::Status const&, mongo::WrappedStdSourceLocation) [j0] #3 0x0000af761a80a03b in operator() [j0] #4 0x0000af761a80623b in _translatePredicate [j0] #5 0x0000af761a80397b in translate [j0] #6 0x0000af761a27d83b in makeLeafNode [j0] #7 0x0000af761a28064b in processIndexScans [j0] #8 0x0000af761a281c0f in buildIndexedAnd [j0] #9 0x0000af761a2814a3 in _buildIndexedDataAccess [j0] #10 0x0000af761a28376f in buildIndexedDataAccess [j0] #11 0x0000af761a2a7a43 in planFromCache [j0] #16 0x0000af7619ea3083 in __do_visit<std::__detail::__variant::__deduce_visit_result<std::unique_ptr<mongo::QuerySolutionNode>>, mongo::OverloadedVisitor<(lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:626:13), (lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:653:13), (lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:670:13)>, const std::variant<mongo::CachedAccessPath, mongo::CachedJoinNode, mongo::CachedInljNode> &> [j0] #23 0x0000af7619ea2cff in __do_visit<std::__detail::__variant::__deduce_visit_result<std::unique_ptr<mongo::QuerySolutionNode>>, mongo::OverloadedVisitor<(lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:626:13), (lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:653:13), (lambda at src/mongo/db/query/compiler/optimizer/join/reorder_joins.cpp:670:13)>, const std::variant<mongo::CachedAccessPath, mongo::CachedJoinNode, mongo::CachedInljNode> &> [j0] #25 0x0000af7619ea0c2f in fromCachedJoinPlan [j0] #27 0x0000af7619c46cc3 in getJoinReorderedExecutor [j0] #28 0x0000af7618a7454b in executeResolvedAggregate [j0] #29 0x0000af7618a710a7 in _runAggregate [j0] #33 0x0000af7618a6fb43 in runAggregate [j0] #34 0x0000af7618a1c067 in run [j0] #35 0x0000af761ba9e1bf in runCommandInvocation [j0] #38 0x0000af7618b79bb3 in _runImpl [j0] #40 0x0000af7618b78d0f in run [j0] #44 0x0000af7618b758c7 in executeCommand [j0] #47 0x0000af7618b7258b in handleRequest [j0] #48 0x0000af761b9d617b in _dispatchWork [j0] #52 0x0000af761b9d8afb in operator() [j0] #56 0x0000af761b9d71cf in _doOneIteration [j0] #58 0x0000af761b9d98df in call [j0] #61 0x0000af761b9db793 in run<(lambda at src/mongo/transport/session_workflow.cpp:471:32)> [j0] #63 0x0000af761b9db67b in call [j0] #65 0x0000af761bbab57b in run [j0] #67 0x0000af761bbaadaf in call [j0] #70 0x0000af761bbaceb7 in call [j0] #72 0x0000af761bbacc23 in runFunc [j0] #73 0x0000f3215a690397 in start_thread
This is likely a known issue due to incomplete handling of multikey indexes in the join cache, but I am filing it to preserve the test case
- related to
-
SERVER-134800 Tripwire assertion Location12926305 Could not find index for INLJ collection reorder_joins.cpp:668:65:auto mongo::join_ordering::fromCachedJoinPlan
-
- Closed
-
-
SERVER-130790 Handle bumping CollectionTag/index fingerprints if multikeyness flips due to document write
-
- Backlog
-
-
SERVER-132838 [Join Optimization] Encode multikeyness of every field referenced by a join-opt eligible query into plan cache key
-
- Backlog
-