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

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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Done
    • None
    • 3.1.6
    • Storage
    • Fully Compatible
    • ALL
    • 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(); });
    • Quint Iteration 5, Quint Iteration 6
    • 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

              mathias@mongodb.com Mathias Stearn
              kamran.khan Kamran K.
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: