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

checkMetadataConsistency() fails on mixed version shards with 'expireAfterSeconds' as double

    • Type: Icon: Bug Bug
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Catalog and Routing
    • ALL
    • v8.0
    • Hide

      On the current 8.0 branch, before sharding 'fooColl' on {a: 1}, create the index as TTL with an 'expireAfterSeconds' of type double in migration_between_mixed_version_mongods.js.

      assert.commandWorked(fooColl.createIndex({a: 1}, {expireAfterSeconds: 12.44})); 

      When the test completes and stops the ShardingTest, checkMetadataConsistency() fails.

       

      Show
      On the current 8.0 branch, before sharding 'fooColl' on {a: 1}, create the index as TTL with an 'expireAfterSeconds' of type double in migration_between_mixed_version_mongods.js . assert .commandWorked(fooColl.createIndex({a: 1}, {expireAfterSeconds: 12.44})); When the test completes and stops the ShardingTest, checkMetadataConsistency() fails.  

      7.0 and 8.0 handle 'createIndexes' with 'expireAfterSeconds': <double> differently. Starting 7.3, the 'expireAfterSeconds' field is truncated to an integral value. 

      Thus, a sharded collection in a mixed version cluster will persist 'expireAfterSeconds' as double in 7.0, but integral in 8.0. 

            Assignee:
            Unassigned Unassigned
            Reporter:
            haley.connelly@mongodb.com Haley Connelly
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: