[DRIVERS-815] Snapshot reads on Secondaries Created: 28/Jan/20  Updated: 15/Feb/23  Resolved: 15/Nov/21

Status: Closed
Project: Drivers
Component/s: None
Fix Version/s: None

Type: Epic Priority: Blocker - P1
Reporter: Backlog - Core Eng Program Management Team Assignee: Unassigned
Resolution: Done Votes: 1
Labels: MDBL21
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by SERVER-48460 Snapshot "distinct" support in the shell Closed
Initiative
Issue split
split to CDRIVER-3891 Snapshot reads on Secondaries Closed
split to CSHARP-3395 Snapshot reads on Secondaries Closed
split to CXX-2182 Snapshot reads on Secondaries Closed
split to GODRIVER-1866 Snapshot reads on Secondaries Closed
split to JAVA-3992 Snapshot reads on secondaries Closed
split to MOTOR-664 Snapshot reads on Secondaries Closed
split to NODE-3081 Snapshot reads on Secondaries Closed
split to PHPC-1761 Snapshot Reads Closed
split to PYTHON-2552 Snapshot reads on Secondaries Closed
split to RUBY-2524 Snapshot reads Closed
split to RUST-661 Snapshot reads on Secondaries Closed
Related
Driver Changes: Needed
Server Compat: 4.9
Quarter: FY22Q2
Upstream Changes Summary:

Specific changes and impacts documented on the downstream Docs ticket

Downstream Changes Summary:

NA

Cost Threshold %: 100
Detailed Project Statuses:

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

Driver Compliance:
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

 Description   
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


 Comments   
Comment by Jeremy Mikola [ 13/Jul/21 ]

boris.dogadov: Can the ticket description be updated to link to the published specification and clearly specify what prose/spec tests drivers should sync to? The work appears to have been split across a few tickets/PRs (DRIVERS-1607, DRIVERS-1819, and DRIVERS-1820). Those issues can likely also be closed out if all of the spec work is complete.

I realize Java and Python have wrapped up this work, but this would be helpful for the remaining languages working on the feature.

Comment by Deepti Hasija [ 31/Jan/21 ]

esha.bhargava/ alexander.golin, as discussed offline please confirm eng weeks for this project. This project is targeted for early Q2 and for 5.0 release which is targeted for May 18, 2021.

Comment by Bernie Hackett [ 28/Jan/21 ]

Setting back to needs triage.

Comment by Esha Bhargava [ 28/Jan/21 ]

No Driver changes needed.

Comment by Esha Bhargava [ 31/Mar/20 ]

esha.bhargava to create a WRITING ticket for the scope

Comment by Steven Vannelli [ 10/Mar/20 ]

Moving this ticket back to Needs Triage because the linked PM ticket has been moved to Ready for Work

Generated at Thu Feb 08 08:22:26 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.