Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-71525

Rewrite or eliminate tests relying on "failOnPoisonedFieldLookup"

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.0.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
    • Query Execution
    • Fully Compatible
    • QE 2023-02-20

      The failOnPoisonedFieldLookup fail point, when enabled, causes an exception to be thrown when a field named "POISON" is looked up in a document in the SBE VM. There are only two integration tests which make use of this fail point:

      Both of these tests are about short-circuiting. They are trying to show that if short-circuiting takes place and skips an expression that depends on "POISON".

      The problem is that this is somewhat dependent on the internals of the implementation. There's nothing to prevent the system from choosing to extract the "POISON" dependency earlier, and reuse a slot containing the resulting value later. In fact, it may be beneficial to do so for performance. Indeed, andrew.paroski@mongodb.com had to inject some special logic when working on SERVER-70972 in order to keep the failOnPoisonedFieldLookup fail point working.

      I propose that we wiggle out of the current situation by using this ticket to either delete the tests which rely on "failOnPoisonedFieldLookup", or rewrite them so that they depend less on the internal details of how an SBE plan is structured.

            Assignee:
            projjal.chanda@mongodb.com Projjal Chanda
            Reporter:
            david.storch@mongodb.com David Storch
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: