findAndModify deletes unconditionally write preImage no-op oplog entries, leading to crash during chunk migration

XMLWordPrintableJSON

    • Fully Compatible
    • ALL
    • v5.0, v4.4
    • Repl 2021-05-03, Repl 2021-06-14
    • 127
    • None
    • 3
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      OpObserverImpl::onDelete() is always called with engaged deletedDoc value for findAndModify deletes.

      The consequences of this are two-fold:

      1. findAndModify deletes within a multi-statement transaction write preImage no-op oplog entries, even when the recordPreImages collection option is set to false (the default). This leads to write amplification akin to SERVER-45442.
      2. preImage no-oplog entries from multi-statement transaction deletes do not include session information. This leads donor shards in chunk migrations to crash when parsing them.

              Assignee:
              Daniel Gottlieb (Inactive)
              Reporter:
              Max Hirschhorn
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: