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

Add readConcern::readAfterClusterTime

    • Type: Icon: Task Task
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 3.5.5
    • Affects Version/s: None
    • Component/s: Sharding
    • Labels:
      None
    • Fully Compatible
    • Sharding 2017-03-06, Sharding 2017-03-27

      1. The BSON argument type of the readConcern::readAfterClusterTime will be a Timestamp, but internally it will be converted and used as LogicalTime. The command reply returns the operationTIme also in the Timestamp format.

      2. Add support for optional LogicalTime _clusterTime member to ReadConcernArgs.

      • add a getter
      • Modify appendInfo(), toString(), toJSON()

      3. in initialize() Add a restriction that afterClusterTime is only supported for level::majority

      4. Add ReplicationCoordinatorImpl::waitUntilClusterTime - it may result in refactoring the ReplicationCoordinatorImpl::waitUntilOptimeForRead to factor out the common part
      rename waitUntilOptimeForRead to waitUntilOptimeForReadDeprecated due to planned switch to the clusterTime everywhere once it supports local level.

      5. Modify waitForClusterTime() to support the afterClusterTime

      if (level == majority) 
          waitUntilClusterTime(max(readAfterClusterTime, readAfterOptime[timestamp]))
      else 
          waitUntilOptimeForRead(readAfterOptime)
      
      

      6. Unit tests related to readConcernArgs parsing

      7. Unit tests for waiting

            Assignee:
            misha.tyulenev@mongodb.com Misha Tyulenev (Inactive)
            Reporter:
            misha.tyulenev@mongodb.com Misha Tyulenev (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: