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

[SBE][sharding] invariant failure: no 'tsSlot' during resharding_oplog_sync_agg_*.js

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 5.0.0-rc0
    • Querying, Sharding
    • None
    • Fully Compatible
    • Query Execution 2021-04-19, Query Execution 2021-05-03

    Description

      During resharding_oplog_sync_agg_assert_min_oplog.js:

      [js_test:resharding_oplog_sync_agg_assert_min_oplog] [jsTest] ----
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] [jsTest] Run aggregation pipeline on oplog with $_requestReshardingResumeToken set
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] [jsTest] ----
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] 
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] d20770| 2021-04-06T19:17:58.193+00:00 F  -        23079   [conn1] "Invariant failure","attr":{"expr":"tsSlot","file":"src/mongo/db/query/sbe_stage_builder_coll_scan.cpp","line":212}
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] d20770| 2021-04-06T19:17:58.193+00:00 F  -        23080   [conn1] "\n\n***aborting after invariant() failure\n\n"
      [js_test:resharding_oplog_sync_agg_assert_min_oplog] d20770| 2021-04-06T19:17:58.193+00:00 F  CONTROL  4757800 [conn1] "Writing fatal message","attr":{"message":"Got signal: 6 (Aborted).\n"}
      

      The site of the invariant failure is in generateOptimizedOplogScan() :

              // We will be constructing a filter that needs to see the 'ts' field. We name it 'minTsSlot'
              // here so that it does not shadow the 'tsSlot' which we allocated earlier.
              auto&& [fields, minTsSlots, minTsSlot] = makeOplogTimestampSlotsIfNeeded(
                  collection, slotIdGenerator, csn->shouldTrackLatestOplogTimestamp);
       
              // We should always have allocated a 'minTsSlot', and there should always be a 'tsSlot'
              // already allocated for the existing scan that we created previously.
              invariant(minTsSlot);
              invariant(tsSlot);  // <------ fails
      

      Affected tests:

      • resharding_oplog_sync_agg_assert_min_oplog.js
      • resharding_oplog_sync_agg_resume_token.js

      Attachments

        Issue Links

          Activity

            People

              justin.seyster@mongodb.com Justin Seyster
              kyle.suarez@mongodb.com Kyle Suarez
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: