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

API to get/set lastCommittedOpTime on Shard

    XMLWordPrintableJSON

Details

    • Icon: Task Task
    • Resolution: Fixed
    • Icon: Major - P3 Major - P3
    • 3.7.3
    • None
    • Sharding
    • None
    • Fully Compatible
    • Sharding 2018-02-12, Sharding 2018-02-26, Sharding 2018-03-12

    Description

      Summary:

      Mongos needs to track the highest lastCommittedOpTime it's seen per shard, so new logic needs to be added to the Shard interface.

      Description:

      ShardRemote will get a new private field LogicalTime _lastCommittedOpTime that will be updated / accessed through new methods void updateLastCommittedOpTime(LogicalTime lastCommittedOpTime) and LogicalTime getLastCommittedOpTime(). These methods will be declared in src/mongo/s/client/shard.h, but only implemented in ShardRemote, containing MONGO_UNREACHABLE in ShardLocal. This new field will need to be mutex protected, and we will only store the new time in updateLastCommittedOpTime if the new time is greater than the currently stored one (it's possible a secondary returns a lastCommittedOpTime lower than one returned from an earlier command on a primary or farther ahead secondary).

      void ShardRemote::updateLastCommittedOpTime(LogicalTime time) {
           stdx::lock_guard<stdx::mutex> lk(_lastCommittedOpTimeMutex);
           if (lastCommittedOpTime > _lastCommittedOpTime) {
               _lastCommittedOpTime = lastCommittedOpTime;
           }
      }
       
      LogicalTime ShardRemote::getLastCommittedOpTime() {
          stdx::lock_guard<stdx::mutex> lk(_lastCommittedOpTimeMutex);
          return _lastCommittedOpTime;
      }
       
      mutable stdx::mutex _lastCommittedOpTimeMutex;
      LogicalTime _lastCommittedOpTime;
      

      Open Questions:

      POC: https://mongodbcr.appspot.com/188010001/

      Attachments

        Activity

          People

            jack.mulrow@mongodb.com Jack Mulrow
            misha.tyulenev@mongodb.com Misha Tyulenev
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: