Expose atClusterTime parameter in snapshot sessions

XMLWordPrintableJSON

    • Type: Improvement
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Component/s: Sessions
    • $i18n.getText("admin.common.words.hide")
      Key Status/Resolution FixVersion
      CDRIVER-6098 Needs Triage
      CXX-3350 Needs Triage
      CSHARP-5736 Needs Triage
      GODRIVER-3663 In Code Review
      JAVA-5968 Needs Triage
      NODE-7162 Needs Triage
      PYTHON-5559 Needs Triage
      PHPLIB-1725 Needs Triage
      RUBY-3712 Needs Triage
      RUST-2279 Needs Triage
      PHPC-2658 Needs Triage
      $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 */ } #scriptField td.willNotDo { background-color: #FF0000; /* Red color code */ } /* Center-align the first row headers */ #scriptField th { text-align: center; } Key Status/Resolution FixVersion CDRIVER-6098 Needs Triage CXX-3350 Needs Triage CSHARP-5736 Needs Triage GODRIVER-3663 In Code Review JAVA-5968 Needs Triage NODE-7162 Needs Triage PYTHON-5559 Needs Triage PHPLIB-1725 Needs Triage RUBY-3712 Needs Triage RUST-2279 Needs Triage PHPC-2658 Needs Triage

      Summary

      The snapshot session specification states that drivers should store the atClusterTime value in a private field, but there are many instances where an application may want to set/access the value.

      Motivation

      Who is the affected end user?

      Users of a driver that would like to take advantage of snapshot reads.

      How does this affect the end user?

      There are a few snapshot sessions usages that are not possible to do today given the current limitation. e.g.

      1. Perform a snapshot read and then start a changestream from the snapshot's timestamp.
      2. Perform a snapshot read in one thread, and then perform another read in a separate thread using the same snapshot timestamp.
      3. Perform a write and then perform a snapshot read using the operation time of the write.

       

      How likely is it that this problem or use case will occur?

      Main path? Edge case?

      If the problem does occur, what are the consequences and how severe are they?

      Minor annoyance at a log message? Performance concern? Outage/unavailability? Failover can't complete?

      Is this issue urgent?

      Does this ticket have a required timeline? What is it?

      Is this ticket required by a downstream team?

      It is required for Device Sync. In the meantime, we had to expose this field in our fork of the go driver: https://github.com/mongodb-forks/mongo-go-driver/commit/5cd00b584fc0e0019f20822274214110b2f55ab2

      Is this ticket only for tests?

      No

      Acceptance Criteria

      1. Ability to set the snapshot timestamp for a session
      2. Ability to retrieve the snapshot timestamp from a session

      Additional note

      Downstream ticket implementer need to remember to implement getSnapshotTime in their test runners. 
       

            Assignee:
            Ferdinando Papale
            Reporter:
            Kiro Morkos
            Boris Dogadov Boris Dogadov
            Rishit Bhatia Rishit Bhatia
            Votes:
            0 Vote for this issue
            Watchers:
            11 Start watching this issue

              Created:
              Updated: