-
Type: Bug
-
Resolution: Won't Fix
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
-
ALL
-
QE 2021-11-29, QE 2021-12-13, QE 2021-12-27, QE 2022-01-10, QE 2022-01-24
-
15
Occasionally, during multiplanning, a $expr will fail nondeterministically during execution of the candidate plans. In the classic engine, we used ExprMatchExpressionMatchesReturnsFalseOnException as a failpoint to deal with these types of errors. However, since SBE cannot easily simulate a try/catch, we decided in SERVER-56152 to instead relax the fuzzers to handle these types of errors.
In agg_compare_results.js, we relax the fuzzers by checking if both sides used SBE, and if there was a failure in a $expr, we ignore it. However, the way we check if both sides used SBE is to examine the explain output. In some cases, such as BF-23057, the failure happens before the explain output has a chance to be generated. Therefore, it is not caught that both sides are using SBE, and the failure is not ignored by the fuzzer.
SERVER-60848, currently in-progress, will add logging and easier ways to check if SBE was used in a particular query. I propose that, rather than examining the explain output to check if both sides used SBE, we simply modify the check to access this information more directly, presumably checking a value that will be set/created in SERVER-60848.
However, there has been a lot of discussion surrounding this BF, and I am open to discussion and alternative approaches to this ticket.
- depends on
-
SERVER-62345 Consider re-evaluating fuzzer testing philosophy
- Closed