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

Make direct writes against the config primary from a JS test throw in the continuous stepdown suite

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major - P3
    • Resolution: Won't Do
    • None
    • None
    • Sharding
    • Sharding EMEA

    Description

      Courtesy of max.hirschhorn,

      diff --git a/jstests/libs/override_methods/sharding_continuous_config_stepdown.js b/jstests/libs/override_methods/sharding_continuous_config_stepdown.js
      index 638dc8b..7d3039e 100644
      --- a/jstests/libs/override_methods/sharding_continuous_config_stepdown.js
      +++ b/jstests/libs/override_methods/sharding_continuous_config_stepdown.js
      @@ -251,6 +251,29 @@ tracking: {verbosity: 0} }";
       
               // Start the continuous config server stepdown thread
               this.configRS.startContinuousFailover();
      +
      +        // We override the functions on Mongo.prototype that send data over the wire to prevent a
      +        // test from running a command directly against the config servers and causing a spurious
      +        // network error if it coincided with a stepdown.
      +        this.configRS.nodes.forEach(function overrideConnectionMethods(node) {
      +            var methodsToOverride = [
      +                "find",
      +                "insert",
      +                "remove",
      +                "runCommand",
      +                "runCommandWithMetadata",
      +                "update",
      +            ];
      +
      +            methodsToOverride.forEach(function overrideMethod(name) {
      +                node[name] = function throwError() {
      +                    throw new Error(
      +                        "Cowardly refusing to talk directly to the config servers while running" +
      +                        " with the sharding_continuous_config_stepdown.js override enabled since" +
      +                        " it may lead to a spurious network error.");
      +                };
      +            });
      +        });
           };
       
           Object.extend(ShardingTest, originalShardingTest);
      

      This would catch future JS test additions that can lead to BFs – these operations directly against the config primary, rather than via the mongos, are currently not retriable.

      Attachments

        Issue Links

          Activity

            People

              backlog-server-sharding-emea Backlog - Sharding EMEA
              dianna.hohensee@mongodb.com Dianna Hohensee (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: