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

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Open
    • Priority: Major - P3
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Backlog
    • Component/s: Sharding
    • Labels:
      None

      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

              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated: