[SERVER-20839] trace_missing_docs_test.js compares Timestamp instances using < operator in mongo shell Created: 09/Oct/15  Updated: 03/Mar/16  Resolved: 09/Oct/15

Status: Closed
Project: Core Server
Component/s: Sharding
Affects Version/s: 2.6.11, 3.0.6, 3.1.9
Fix Version/s: 2.6.12, 3.0.8, 3.2.0-rc0

Type: Bug Priority: Major - P3
Reporter: Max Hirschhorn Assignee: Max Hirschhorn
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-21941 Automatically handle Timestamp compar... Closed
Backwards Compatibility: Fully Compatible
Operating System: ALL
Backport Completed:
Steps To Reproduce:

> var a = Timestamp(1444326827, 10)
> var b = Timestamp(1444326827, 4)
> a < b
true

Participants:

 Description   

Task
Logs

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



 Comments   
Comment by Githook User [ 03/Mar/16 ]

Author:

{u'username': u'visemet', u'name': u'Max Hirschhorn', u'email': u'max.hirschhorn@mongodb.com'}

Message: SERVER-20839 Use bsonWoCompare() to compare optimes in the shell.

(cherry picked from commit c2ae70a7eb2ca553bc56b0d160722591aa7925ea)
(cherry picked from commit 544ab78d2b41139653d453128ed54ca3794335c6)
Branch: v2.6
https://github.com/mongodb/mongo/commit/c434529e96a200aaa259b8fe9a62e902704791f6

Comment by Githook User [ 01/Dec/15 ]

Author:

{u'username': u'visemet', u'name': u'Max Hirschhorn', u'email': u'max.hirschhorn@mongodb.com'}

Message: SERVER-20839 Use bsonWoCompare() to compare optimes in the shell.

(cherry picked from commit c2ae70a7eb2ca553bc56b0d160722591aa7925ea)
Branch: v3.0
https://github.com/mongodb/mongo/commit/544ab78d2b41139653d453128ed54ca3794335c6

Comment by Githook User [ 09/Oct/15 ]

Author:

{u'username': u'visemet', u'name': u'Max Hirschhorn', u'email': u'max.hirschhorn@mongodb.com'}

Message: SERVER-20839 Use bsonWoCompare() to compare optimes in the shell.
Branch: master
https://github.com/mongodb/mongo/commit/c2ae70a7eb2ca553bc56b0d160722591aa7925ea

Generated at Thu Feb 08 03:55:27 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.