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

mongos should not gossip $logicalTime until admin.system.keys are created

    • Type: Icon: Task Task
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.5.10
    • Affects Version/s: None
    • Component/s: Sharding
    • Labels:
      None
    • Fully Compatible
    • Sharding 2017-06-19, Sharding 2017-07-10

      In shards and config servers the featureCompatibilityVersion is available. This is however not the case for mongos which is currently uses the featureCompatibilityVersion correlated to its binary.

      This causes a problem in causal consistency as mongos will be trying to sign the outgoing requests and will block waiting on the keys. This is not acceptable as the upgrade process may take very long time. Its possible that user upgrade the binaries but never issue setFeatureCompatibilityVersion command. So polling is not a good idea for mongos to discover its version.
      To address that mongos will:
      At startup check for keys. If no keys are found then mongos will eventually be checking for keys every 10 minutes (its already default behavior)
      Check for keys immediately if the incoming messages contains proof to validate (its already default behavior)
      If keys were never found do not add $logicalTime and operationTime to the command Response (its new)

      This way mongos will eventually start using causal consistency within 10 minutes of actual upgrade.

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

              Created:
              Updated:
              Resolved: