Investigate timeseries default index generation and catalog replication for applyOps

XMLWordPrintableJSON

    • Type: Task
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Storage Execution
    • None
    • 3
    • TBD
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      By default, timeseries collection creation generates a default index on the meta and time field.

       
      The primary generates separate entries for the index and collection creation.

      > db.createCollection(
         "stocks",
         {
            timeseries: {
               timeField: "date",
               metaField: "ticker",
               granularity: "seconds"
            }
         })
      .... 
      // Oplog entries
      {
          op: 'c',
          ns: 'test.$cmd',
          ui: UUID('e4dc4a7a-395c-4c7e-8aa5-3875362225d0'),
          o: {
            createIndexes: 'system.buckets.stocks',
            v: 2,
            name: 'ticker_1_date_1',
            key: { meta: 1, 'control.min.date': 1, 'control.max.date': 1 }
          },
          ts: Timestamp({ t: 1750971747, i: 3 }),
          t: Long('1'),
          v: Long('2'),
          wall: ISODate('2025-06-26T21:02:27.813Z')
        },
        {
          op: 'c',
          ns: 'test.$cmd',
          ui: UUID('e4dc4a7a-395c-4c7e-8aa5-3875362225d0'),
          o: {
            create: 'system.buckets.stocks',
            validator: {
              '$jsonSchema': {
                bsonType: 'object',
                required: [ '_id', 'control', 'data' ],
                properties: {
                  _id: { bsonType: 'objectId' },
                  control: {
                    bsonType: 'object',
                    required: [ 'version', 'min', 'max' ],
                    properties: {
                      version: { bsonType: 'number' },
                      min: {
                        bsonType: 'object',
                        required: [ 'date' ],
                        properties: { date: { bsonType: 'date' } }
                      },
                      max: {
                        bsonType: 'object',
                        required: [ 'date' ],
                        properties: { date: { bsonType: 'date' } }
                      },
                      closed: { bsonType: 'bool' },
                      count: { bsonType: 'number', minimum: 1 }
                    },
                    additionalProperties: false
                  },
                  data: { bsonType: 'object' },
                  meta: {}
                },
                additionalProperties: false
              }
            },
            clusteredIndex: true,
            timeseries: {
              timeField: 'date',
              metaField: 'ticker',
              granularity: 'seconds',
              bucketMaxSpanSeconds: 3600
            }
          },
          ts: Timestamp({ t: 1750971747, i: 2 }),
          t: Long('1'),
          v: Long('2'),
          wall: ISODate('2025-06-26T21:02:27.813Z')
        },
      

      However, we should define expected behavior with respect to timeseries creation via applyOps and replicated catalog identifiers.

              Assignee:
              Unassigned
              Reporter:
              Haley Connelly
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: