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

Update w/no-op fields results in oplog entry for field

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • 2.6.0-rc0
    • Affects Version/s: 2.5.5
    • Component/s: Write Ops
    • None
    • ALL

      repro:
      ./mongod --replSet foo

      in mongoshell:

      > rs.initiate()
      {
      	"info2" : "no configuration explicitly specified -- making one",
      	"me" : "dannenberg-air.local:27017",
      	"info" : "Config now saved locally.  Should come online in about a minute.",
      	"ok" : 1
      }
      foo:PRIMARY> db.foo.find()
      { "_id" : 1, "a" : 1, "b" : 31 }
      { "_id" : 2, "a" : 73, "b" : 481 }
      { "_id" : 3, "a" : 26, "b" : 974 }
      foo:PRIMARY> db.foo.update({_id: {$gt:0}}, {$max:{'b':456}, $mul:{'a':3}}, {multi:true})
      SingleWriteResult({
      	"writeErrors" : [ ],
      	"writeConcernErrors" : [ ],
      	"nInserted" : 0,
      	"nUpserted" : 0,
      	"nUpdated" : 3,
      	"nModified" : 3,
      	"nRemoved" : 0,
      	"upserted" : [ ]
      })
      foo:PRIMARY> db.foo.find()
      { "_id" : 1, "a" : 3, "b" : 456 }
      { "_id" : 2, "a" : 219, "b" : 481 }
      { "_id" : 3, "a" : 78, "b" : 974 }
      foo:PRIMARY> use local
      foo:PRIMARY> db.oplog.rs.find()
      { "ts" : Timestamp(1391619547, 1), "h" : NumberLong(0), "v" : 2, "op" : "n", "ns" : "", "o" : { "msg" : "initiating set" } }
      { "ts" : Timestamp(1391619586, 1), "h" : NumberLong("-9072134066425298927"), "v" : 2, "op" : "u", "ns" : "test.foo", "o2" : { "_id" : 1 }, "o" : { "$set" : { "b" : 456, "a" : 3 } } }
      { "ts" : Timestamp(1391619586, 2), "h" : NumberLong("4916804790102561797"), "v" : 2, "op" : "u", "ns" : "test.foo", "o2" : { "_id" : 2 }, "o" : { "$set" : { "b" : 456, "a" : 219 } } }
      { "ts" : Timestamp(1391619586, 3), "h" : NumberLong("1732897782215714738"), "v" : 2, "op" : "u", "ns" : "test.foo", "o2" : { "_id" : 3 }, "o" : { "$set" : { "b" : 456, "a" : 78 } } }
      

      as you can see, the updates apply properly, but the oplog entries say to modify b even where it wasnt modified, which will lead to be bad info on the secondaries

            Assignee:
            scotthernandez Scott Hernandez (Inactive)
            Reporter:
            matt.dannenberg Matt Dannenberg
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: