Uploaded image for project: 'Drivers'
  1. Drivers
  2. DRIVERS-815

Snapshot reads on Secondaries

    • Type: Icon: Epic Epic
    • Resolution: Done
    • Priority: Icon: Blocker - P1 Blocker - P1
    • None
    • Component/s: None
    • Hide

      NA

      Show
      NA
    • To Do
    • Snapshot reads on Secondaries
    • 100
    • Hide

      Summary: Earlier this year the server added support for a readConcern level “snapshot” on read operations outside of multi-document transactions for both primaries and secondaries. This project covers any work that needs to be done across MongoDB drivers to ensure completeness of this feature for our users.

      Author: Boris Dogadov

      2021-08-25

      • C, .NET, Go, Java, Python, Node, Rust, PHP implementations are done
      • CXX, Ruby has prioritized this for Q3

      2021-08-10

      • C, .NET, Go, Java, Python, Node, Rust implementations are done
      • PHP in progress
      • CXX has prioritized this for Q3

      2021-07-27

      • C, .NET, Go, Java, Python, Node, Rust implementations are done
      • CXX and PHP have prioritized this for Q3

      2021-07-12:

      • Java, Python implementations done
      • C, C# wrapping up (main implementation done)
      • Go, Rust in code review
      • Node in progress

      2021-06-28:

      • Major spec changes in. Two more small spec change tickets were created last week and Shane will be working on them since Boris is OOO
      • C, C# implementation in review. Java, Python in progress. This is next up for Go

      2021-06-15:

      • Re-implemented tests using the Sessions API proposal. Once that is complete will write up the specification itself. Expected to be in review in the next few days
      • Go and C implementations up next

      Show
      Summary: Earlier this year the server added support for a readConcern level “snapshot” on read operations outside of multi-document transactions for both primaries and secondaries. This project covers any work that needs to be done across MongoDB drivers to ensure completeness of this feature for our users. Author: Boris Dogadov 2021-08-25 C, .NET, Go, Java, Python, Node, Rust, PHP implementations are done CXX, Ruby has prioritized this for Q3 2021-08-10 C, .NET, Go, Java, Python, Node, Rust implementations are done PHP in progress CXX has prioritized this for Q3 2021-07-27 C, .NET, Go, Java, Python, Node, Rust implementations are done CXX and PHP have prioritized this for Q3 2021-07-12: Java, Python implementations done C, C# wrapping up (main implementation done) Go, Rust in code review Node in progress 2021-06-28: Major spec changes in. Two more small spec change tickets were created last week and Shane will be working on them since Boris is OOO C, C# implementation in review. Java, Python in progress. This is next up for Go 2021-06-15: Re-implemented tests using the Sessions API proposal. Once that is complete will write up the specification itself. Expected to be in review in the next few days Go and C implementations up next
    • Needed
    • Hide

      Specific changes and impacts documented on the downstream Docs ticket

      Show
      Specific changes and impacts documented on the downstream Docs ticket
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      RUST-661 Fixed 2.0.0-beta.3
      JAVA-3992 Fixed 4.3.0
      RUBY-2524 Fixed 2.17.0
      CDRIVER-3891 Done 1.19.0
      GODRIVER-1866 Done 1.7.0
      CSHARP-3395 Fixed 2.13.0
      CXX-2182 Fixed 3.7.0
      PHPC-1761 Done
      NODE-3081 Done
      PYTHON-2552 Fixed 3.12, 4.0
      MOTOR-664 Duplicate
      SWIFT-1102 Fixed 1.2.0
      $i18n.getText("admin.common.words.show")
      #scriptField, #scriptField *{ border: 1px solid black; } #scriptField{ border-collapse: collapse; } #scriptField td { text-align: center; /* Center-align text in table cells */ } #scriptField td.key { text-align: left; /* Left-align text in the Key column */ } #scriptField a { text-decoration: none; /* Remove underlines from links */ border: none; /* Remove border from links */ } /* Add green background color to cells with FixVersion */ #scriptField td.hasFixVersion { background-color: #00FF00; /* Green color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion RUST-661 Fixed 2.0.0-beta.3 JAVA-3992 Fixed 4.3.0 RUBY-2524 Fixed 2.17.0 CDRIVER-3891 Done 1.19.0 GODRIVER-1866 Done 1.7.0 CSHARP-3395 Fixed 2.13.0 CXX-2182 Fixed 3.7.0 PHPC-1761 Done NODE-3081 Done PYTHON-2552 Fixed 3.12, 4.0 MOTOR-664 Duplicate SWIFT-1102 Fixed 1.2.0

      Downstream Change Summary

      Scope Document

      Description of Linked Ticket

      Epic Summary

      Summary

      Support readConcern level "snapshot" (non-speculative) for read commands outside of transactions, including on secondaries.

      Motivation

      Once durable history is implemented in WiredTiger, MongoDB will be able to support long-running snapshot reads. By supporting snapshot reads on secondaries, this feature can be used for analytics queries. It's important to use non-speculative behavior so that queries do not need to consume all results and wait for a transaction to commit in order to know that the data read was majority committed.

      Documentation

      Scope Document
      Technical Design Document


      SPEC Ticket Description
      // This block of HTML and the script in it auto-populate the SPEC ticket description on page load. Script Target - If you can read this text, the script has failed

            Assignee:
            Unassigned Unassigned
            Reporter:
            backlog-server-pm Backlog - Core Eng Program Management Team
            Votes:
            1 Vote for this issue
            Watchers:
            10 Start watching this issue

              Created:
              Updated:
              Resolved: