commit e52d4a9ec7184c98f01b92a4f9cb243f92e11b92
Author: Charlie Swanson <charlie.swanson@mongodb.com>
Date:   Thu Sep 29 16:00:51 2016 -0400

    Repro for BF-3037

diff --git a/buildscripts/resmokeconfig/suites/concurrency_replication.yml b/buildscripts/resmokeconfig/suites/concurrency_replication.yml
index 8c9d272..7c4ee09 100644
--- a/buildscripts/resmokeconfig/suites/concurrency_replication.yml
+++ b/buildscripts/resmokeconfig/suites/concurrency_replication.yml
@@ -9,4 +9,8 @@ executor:
     config:
       shell_options:
         nodb: ''
+        global_vars:
+          TestData:
+            enableMajorityReadConcern: ''
+        eval: "var testingReplication = true; load('jstests/libs/override_methods/set_majority_read_and_write_concerns.js');"
         readMode: commands
diff --git a/jstests/concurrency/fsm_all_replication.js b/jstests/concurrency/fsm_all_replication.js
index 31770af..0e4a746 100644
--- a/jstests/concurrency/fsm_all_replication.js
+++ b/jstests/concurrency/fsm_all_replication.js
@@ -14,6 +14,6 @@ var blacklist = [
 });
 
 runWorkloadsSerially(ls(dir).filter(function(file) {
-    return !Array.contains(blacklist, file);
+    return !Array.contains(blacklist, file) && file.indexOf('insert_a_bunch.js') !== -1;
 }),
                      {replication: true});
diff --git a/jstests/concurrency/fsm_libs/cluster.js b/jstests/concurrency/fsm_libs/cluster.js
index 5deada6..c02b462 100644
--- a/jstests/concurrency/fsm_libs/cluster.js
+++ b/jstests/concurrency/fsm_libs/cluster.js
@@ -120,7 +120,8 @@ var Cluster = function(options) {
     Object.freeze(options);
 
     this.setup = function setup() {
-        var verbosityLevel = 0;
+        var verbosityLevel = 1;  // This is not critical to reproducing, but helped verify the
+                                 // readConcern and writeConcern were being set appropriately.
         const REPL_SET_INITIATE_TIMEOUT_MS = 5 * 60 * 1000;
 
         if (initialized) {
diff --git a/jstests/concurrency/fsm_workloads/insert_a_bunch.js b/jstests/concurrency/fsm_workloads/insert_a_bunch.js
new file mode 100644
index 0000000..8c88c14
--- /dev/null
+++ b/jstests/concurrency/fsm_workloads/insert_a_bunch.js
@@ -0,0 +1,76 @@
+'use strict';
+
+load('jstests/libs/override_methods/set_majority_read_and_write_concerns.js');
+
+var $config = (function() {
+
+    function insert(db, unusedCollName) {
+        var collName = 'coll' + this.tid;
+        db[collName].drop();
+        db[collName].insert({});
+        assert.eq(db[collName].find().itcount(), 1, 'Failed to read my own write!');
+    }
+
+    var states = {
+        insert: insert,
+    };
+
+    var transitions = {insert: {insert: 1}};
+
+    return {
+        threadCount: 2,
+        iterations: 10,
+        startState: 'insert',
+        states: states,
+        transitions: transitions,
+    };
+
+})();
+
+/*
+NOTE: This similar test does not cause any failures, implying that the drop is a critical part of
+the reproduction.
+
+var $config = (function() {
+
+    var data = {numThreads: 2, numIterations: 10};
+
+    function update(db, unusedCollName) {
+        var collName = 'coll' + this.tid;
+        const initialCount = db[collName].find().toArray()[0].counter;
+        db[collName].update({}, {$inc: {counter: 1}});
+        assert.eq(initialCount + 1,
+                  db[collName].find().toArray()[0].counter,
+                  'Failed to see my own update');
+    }
+
+    var states = {
+        update: update,
+    };
+
+    var transitions = {update: {update: 1}};
+
+    function setup(db, collName, cluster) {
+        for (var i = 0; i < $config.data.numThreads; ++i) {
+            db['coll' + i].insert({counter: 0});
+        }
+    }
+
+    function teardown(db, collName, cluster) {
+        for (var i = 0; i < $config.data.numThreads; ++i) {
+            assert.eq(db['coll' + i].find().toArray()[0].counter, $config.data.numIterations);
+        }
+    }
+
+    return {
+        threadCount: data.numThreads,
+        iterations: data.numIterations,
+        startState: 'update',
+        states: states,
+        transitions: transitions,
+        setup: setup,
+        data: data
+    };
+
+})();
+*/
