Details
Description
The compareOps function in trace_missing_docs.js compares the optimes of two oplog entries using the JavaScript < operator. This (probably) coerces the objects to strings and compares their string representations.
var compareOps = function( opA, opB ) { |
if ( opA.ts < opB.ts ) return -1; |
if ( opB.ts < opA.ts ) return 1; |
else return 0; |
}
|
|
allOps.sort( compareOps );
|
The test fails because it expects the insert operation to be first for this shard key, but '10' < '4' causes the delete operation to come first. bsonWoCompare(Timestamp(1444326827, 10), Timestamp(1444326827, 4)) returns 1 as expected, so the fix should be to use the bsonWoCompare() function instead.
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.938+0000 ----
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.939+0000 Using shard key : { "sk" : 67890 }
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.939+0000 ----
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.939+0000
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.939+0000
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.941+0000 Ops found for doc { "_id" : 12345, "sk" : 67890 } on each shard:
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.941+0000
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.941+0000 {
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "ts" : Timestamp(1444326827, 10),
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "h" : NumberLong(0),
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "v" : 2,
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "op" : "d",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "ns" : "foo.bar",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "o" : {
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.942+0000 "_id" : 12345
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 },
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 "shard" : "shard0000",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 "realTime" : ISODate("2015-10-08T17:53:47Z")
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 }
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 {
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 "ts" : Timestamp(1444326827, 4),
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 "h" : NumberLong(0),
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.943+0000 "v" : 2,
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "op" : "i",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "ns" : "foo.bar",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "o" : {
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "_id" : 12345,
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "sk" : 67890,
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "hello" : "world"
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 },
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.944+0000 "shard" : "shard0000",
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.945+0000 "realTime" : ISODate("2015-10-08T17:53:47Z")
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.945+0000 }
|
...
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 2015-10-08T17:53:47.943+0000 E QUERY [thread1] Error: ["d"] != ["i"] are not equal : undefined :
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 doassert@src/mongo/shell/assert.js:15:14
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 assert.eq@src/mongo/shell/assert.js:43:5
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 testDocMissing@jstests/sharding/trace_missing_docs_test.js:39:1
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 @jstests/sharding/trace_missing_docs_test.js:49:1
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000
|
[js_test:trace_missing_docs_test] 2015-10-08T17:53:47.950+0000 failed to load: jstests/sharding/trace_missing_docs_test.js
|
Attachments
Issue Links
- related to
-
SERVER-21941 Automatically handle Timestamp comparisons in assert helpers
-
- Closed
-