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

[v7.0] bucketRoundingSeconds param is accepted by nodes on fCV 6.0, binary 7.0

    • Type: Icon: Bug Bug
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 7.0.7
    • Affects Version/s: None
    • Component/s: None
    • Labels:
    • Storage Execution
    • Fully Compatible
    • ALL
    • Execution Team 2024-02-19
    • 112

      The bucketRoundingSeconds param for timeseries doesn't exist on FCV 6.0. It is nowhere to be found in the 6.0 docs, and we can see that SERVER-67595, which introduced it, has a fix version of 6.1-rc0.

      However, when you run the following command on a mongod with binary version 7.0, but with FCV 6.0, it succeeds:

          db.createCollection("mycoll1", {
              timeseries: {
                  timeField: 'x',
                  bucketRoundingSeconds: 7,
                  bucketMaxSpanSeconds: bucketMaxSpanSecondsTime

      This is problematic because when we're running a mixed version replica set with 7.0 and 6.0 binaries, if the primary with bin version 7.0 accepts the command, the secondaries with bin version 6.0 won't understand the param during oplog application and will crash.

      The purpose of FCV is to help with such cases: all nodes should behave according to their FCV. Therefore, if a node with bin version 7.0 but FCV 6.0 sees this param, it should reject it - in this case, it means the primary should have rejected the command.

            dan.larkin-york@mongodb.com Dan Larkin-York
            vishnu.kaushik@mongodb.com Vishnu Kaushik
            0 Vote for this issue
            6 Start watching this issue