Details
-
Improvement
-
Resolution: Won't Fix
-
Major - P3
-
None
-
None
-
None
-
None
-
Query
Description
SERVER-34975 changes the OID format so the timestamp in the upper four bytes gets treated as an unsigned int, instead of a signed int as it was previously. As a result of that change, the OID::fromTerm() function now has slightly different behavior. This function creates a timestamp with std::numeric_limits<Timestamp>::max() in the upper four bytes, which means those bytes are always 0x7fffffff before SERVER-32975 and always 0xffffffff after.
That difference causes global_snapshot_reads_downgrade_cluster.js to fail when the SERVER-34975 change is applied to 4.0 (which we no longer plan to do). That test has been removed from master, but this discrepancy still has the potential to cause problems in multiversion scenarios involving 4.0 (current does not have the change) and an eventual 4.2 (which will).
It will probably be sufficient to change OID::fromTerm() to use a constant 0x7fffffff instead of trying to use ::max().