-
Type: Bug
-
Resolution: Done
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication, Write Ops
-
None
-
Major Change
-
ALL
-
- Startup a replica set.
- launch shell to primary
- Executed db.foo.insert({_id:Timestamp()})
- Secondary dies.
When inserting a document into a collection using a Timestamp as the identifier, if the time and ordinal are both 0, the secondary fails on replication and throws an fassert failure causing mongod to die. In addition, any attempt to restart the secondary will fail as that same op will attempt to replicate and cause the same exception again. This is a change in behavior from the previous 2.4 release line.
I tried this with other combinations of timestamps, both in value and in location in the document and it's always when the timestamp is _id with 0's for both of its components.
2014-01-13T14:03:24.987-0600 [repl writer worker 1] ERROR: writer worker caught exception: :: caused by :: 16836 The _id field cannot be changed from {_id: Timestamp 0|0} to {_id: Timestamp 1389643404000|1}. on: { ts: Timestamp 1389643404000|1, h: -2969864546816060428, v: 2, op: "i", ns: "test.foo", o: { _id: Timestamp 0|0 } } 2014-01-13T14:03:24.987-0600 [repl writer worker 1] Fatal Assertion 16360 2014-01-13T14:03:24.987-0600 [repl writer worker 1] ***aborting after fassert() failure
- causes
-
SERVER-43014 Timestamp(0,0) not filled in for _id field
- Closed
- related to
-
SERVER-12302 Breaking Change: Timestamp(0,0) now replaced on insert
- Closed