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

findAndModify with upsert=true generates duplicate key errors

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Major - P3
    • Resolution: Duplicate
    • 4.2.9
    • None
    • None
    • None
    • ALL

    Description

      This is very similar to SERVER-14322 however I'm in a case where the auto retry should happen from what I understand but it does not.

       

      Error:

      E11000 duplicate key error collection: dbName.collectionName index: a_1_b_1 dup key: { a: 31910, b: "2021-09-02T00:00:00Z" }
      

      Indexes

       

      > db.collectionName.getIndexes()
      [
      	{
      		"v" : 2,
      		"key" : {
      			"_id" : 1
      		},
      		"name" : "_id_",
      		"ns" : "databaseName.collectionName"
      	},
      	{
      		"v" : 2,
      		"unique" : true,
      		"key" : {
      			"a" : 1,
      			"b" : 1
      		},
      		"name" : "a_1_b_1",
      		"ns" : "databaseName.collectionName",
      		"sparse" : true
      	}
      ]
      

       

       

      Commands run (though ReactiveMongo Scala):

      > db.collectionName.findAndModify(
        query: { a: 31910, b: "2021-09-02T00:00:00Z" },
        update: { $inc: { c: 1 } },
        new: true
        upsert: true
      )
      

       

      In our use case, 8 commands are sent at the same time and sometimes we get 1 such error (not always).

       

      Current document matching:

      > db.collectionName.find({a:31910, b: "2021-09-02T00:00:00Z"})
      { "_id" : ObjectId("613062a3a00a6ac1f7687e5e"), "b" : "2021-09-02T00:00:00Z", "a" : 31910, "c" : 389723 }
      

      Is this expected? Am I missing something?

      We can add some retry mechanism in our code but I'd like to understand why the auto retry does not work.

       

      Any comment will be appreciated.

      Attachments

        Issue Links

          Activity

            People

              backlog-server-triage Backlog - Triage Team
              gjourdanweil@gmail.com Gaël Jourdan-Weil
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: