[SERVER-35539] Updated OID format may cause problems in multiversion elections Created: 11/Jun/18  Updated: 06/Dec/22  Resolved: 15/Jun/18

Status: Closed
Project: Core Server
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Justin Seyster Assignee: Backlog - Query Team (Inactive)
Resolution: Won't Fix Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Assigned Teams:
Query
Participants:

 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().



 Comments   
Comment by David Storch [ 15/Jun/18 ]

Instead of pursuing this fix, we plan to revert the changes for SERVER-34975.

Generated at Thu Feb 08 04:40:09 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.