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

Fatal assertion (duplicate key error) when replicating insert on capped collection

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.1.6
    • Component/s: Storage
    • Labels:
    • Backwards Compatibility:
      Fully Compatible
    • Operating System:
      ALL
    • Steps To Reproduce:
      Hide

      Run with `python buildscripts/smoke.py repro.js`

      'use strict';
       
      load('jstests/libs/parallelTester.js');
       
      function cappedWorkload() {
          var conn = new Mongo();
          var db = conn.getDB('test');
       
          while (true) {
              try {
                  if (Random.randInt(100) === 0) {
                      db.foo.drop();
                  }
                  db.createCollection('foo', {capped: true, size: 4096});
       
                  db.foo.ensureIndex({value: 1});
                  for (var i = 0; i < 10; ++i) {
                      db.foo.insert({_id: i, value: 0});
                  }
              } catch (e) {
                  // ignore
              }
          }
      }
       
      // start the replica set
      var rs = new ReplSetTest({nodes: 3, startPort: 27017});
      rs.startSet();
      rs.initiate();
      rs.awaitSecondaryNodes();
       
      // start the workload threads
      var threads = [];
      for (var i = 0; i < 20; i++) {
          var t = new ScopedThread(cappedWorkload);
       
          threads.push(t);
          t.start();
      }
       
      threads.forEach(function(t) {
          t.join();
      });
      

      Show
      Run with `python buildscripts/smoke.py repro.js` 'use strict';   load('jstests/libs/parallelTester.js');   function cappedWorkload() { var conn = new Mongo(); var db = conn.getDB('test');   while (true) { try { if (Random.randInt(100) === 0) { db.foo.drop(); } db.createCollection('foo', {capped: true, size: 4096});   db.foo.ensureIndex({value: 1}); for (var i = 0; i < 10; ++i) { db.foo.insert({_id: i, value: 0}); } } catch (e) { // ignore } } }   // start the replica set var rs = new ReplSetTest({nodes: 3, startPort: 27017}); rs.startSet(); rs.initiate(); rs.awaitSecondaryNodes();   // start the workload threads var threads = []; for (var i = 0; i < 20; i++) { var t = new ScopedThread(cappedWorkload);   threads.push(t); t.start(); }   threads.forEach(function(t) { t.join(); });
    • Sprint:
      Quint Iteration 5, Quint Iteration 6
    • Linked BF Score:
      0

      Description

      Versions affected: recent versions of master (i.e., versions after the bump for 3.1.4)

      From some preliminary bisecting, this bug seems to have been introduced since 3.1.4. It only seems to affect the WiredTiger storage engine:

       m27019| 2015-06-10T15:06:40.940-0400 I INDEX    [repl writer worker 15] build index on: test.foo properties: { v: 1, key: { value: 1.0 }, name: "value_1", ns: "test.foo" }
       m27019| 2015-06-10T15:06:40.940-0400 I INDEX    [repl writer worker 15] 	 building index using bulk method
       m27019| 2015-06-10T15:06:40.946-0400 I INDEX    [repl writer worker 15] build index done.  scanned 0 total records. 0 secs
       m27019| 2015-06-10T15:06:40.996-0400 E REPL     [repl writer worker 10] writer worker caught exception:  :: caused by :: 11000 E11000 duplicate key error collection: test.foo index: _id_ dup key: { : 8.0 } on: { ts: Timestamp 1433963200000|13, t: 0, h: -3679832681211329472, v: 2, op: "i", ns: "test.foo", o: { _id: 8.0, value: 0.0 } }
       m27019| 2015-06-10T15:06:40.996-0400 I -        [repl writer worker 10] Fatal Assertion 16360
       m27019| 2015-06-10T15:06:40.996-0400 I -        [repl writer worker 10] 
       m27019| 
       m27019| ***aborting after fassert() failure
      


      Versions

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: