Resharding fails to abort on setFCV on a cluster with config shard

XMLWordPrintableJSON

    • Cluster Scalability
    • ALL
    • Cluster Scalability Priorities
    • None
    • 3
    • TBD
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      In a cluster with config shard, and with allFeatureFlagTests (I don't know which feature flag triggers it) setFCV can get indefinitely stuck waiting for resharding operations to abort. The following jstest reproduces the issue very reliably:

      /**
       * @tags: [
       *   requires_sharding,
       *   multiversion_incompatible,
       *  ]
       */
      
      import {
          uniformDistTransitions
      } from "jstests/concurrency/fsm_workload_helpers/state_transition_utils.js";
      
      export const $config = (function() {
          let states = {
              insert: function(db, collName, connCache) {
                  jsTestLog('Executing insert state');
                  const bulk = db.getSiblingDB("DB_" + Random.randInt(10))["coll_" + Random.randInt(10)]
                                   .initializeUnorderedBulkOp();
                  for (let i = 0; i < 100; ++i) {
                      bulk.insert({x: i});
                  }
                  assert.commandWorked(bulk.execute());
                  jsTestLog('Finishing insert state');
              },
              setFCV: function(db, collName, connCache) {
                  const fcvValues = [lastLTSFCV, lastContinuousFCV, latestFCV];
                  const targetFCV = fcvValues[Random.randInt(3)];
                  jsTestLog('Executing setFCV state, setting to:' + targetFCV);
                  try {
                      assert.commandWorked(
                          db.adminCommand({setFeatureCompatibilityVersion: targetFCV, confirm: true}));
                  } catch (e) {
                      // Just ignore
                      jsTestLog(e);
                  }
      
                  jsTestLog('setFCV state finished');
              },
          };
      
          return {
              threadCount: 8,
              iterations: 64,
              startState: 'insert',
              data: {},
              states: states,
              transitions: uniformDistTransitions(states),
              setup: function(db, collName, connCache) {},
              passConnectionCache: true
          };
      })();
      

      Run in a suite with balancer, like this:

      buildscripts/resmoke.py run --suites=concurrency_sharded_with_balancer_and_auto_bootstrap --runAllFeatureFlagTests jstests/concurrency/fsm_workloads/ddl/random_ddl/test.js

            Assignee:
            Unassigned
            Reporter:
            Aitor Esteve Alvarado
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: