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

Off-by-one comparison in checkForInterruptFail fail point

    • Type: Icon: Bug Bug
    • Resolution: Won't Fix
    • Priority: Icon: Trivial - P5 Trivial - P5
    • None
    • Affects Version/s: None
    • Component/s: Testing Infrastructure
    • ALL
    • None
    • 0
    • None
    • None
    • None
    • None
    • None
    • None

      This seems extremely minor, but I believe the checkForInterruptFail fail point (introduced in SERVER-11695) can incorrectly fail when chance is set to 0 and the random number also happens to be 0:

      https://github.com/mongodb/mongo/blob/419be507ff3ccafd1a5dcda9a40144ed6fb4901e/src/mongo/db/kill_current_op.cpp#L155-L161

      double next = static_cast<double>(std::abs(checkForInterruptPRNG.nextInt64()));
      double upperBound =
          std::numeric_limits<int64_t>::max() * failPointInfo["chance"].numberDouble();
      if (next > upperBound) {
          return false;
      }
      return true;
      

      I would expect chance: 0 to never reach the return true statement.


      Version:
      419be507ff3ccafd1a5dcda9a40144ed6fb4901e

            Assignee:
            rassi J Rassi (Inactive)
            Reporter:
            kamran.khan Kamran K. (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: