[SERVER-48106] Remove all callers of FCV isVersionInitialized() Created: 11/May/20  Updated: 06/Dec/22  Resolved: 23/Jul/20

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

Type: Improvement Priority: Major - P3
Reporter: Louis Williams Assignee: Backlog - Storage Execution Team
Resolution: Won't Do Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
related to SERVER-48054 4.2 nodes that use auth and initial ... Closed
Assigned Teams:
Storage Execution
Participants:

 Description   

The FCV not being initialized during startup and initial sync has caused numerous bugs. See SERVER-48054, SERVER-45374, and SERVER-48050.

For example, we do not initialize the FCV during startup until well near the end, and before indexes are rebuilt.

During initial sync, we clone admin.system.users and admin.system.roles before admin.system.version.

The end result of this ticket should be to remove all callers of isVersionInitialized().



 Comments   
Comment by Connie Chen [ 23/Jul/20 ]

There is no easy way to invariant this, potentially a process change to happen during releases to check the callers.

Comment by Louis Williams [ 21/Jul/20 ]

Additionally, SERVER-48050 should fix many of the problems facing callers of isVersionInitialized, like index builds.

Comment by Louis Williams [ 21/Jul/20 ]

I had a conversation with lingzhi.deng about this. The approach that Replication is taking with SERVER-49070 is to replace isVersion, which currently bypasses the isVersionInitialized check, with a helper that invariants the version is initialized. As a result, there will be more callers of isVersionInitialized. These callers have legitimate reasons to call the function in situations where the FCV is not available (e.g. heartbeats, before startup, etc), and using the downgraded behavior is not necessarily problematic.

I think we should just reschedule this to evaluate callers of isVersionInitialized before the next release. That is: ensure callers of isVersionInitialized are not defaulting to a downgraded version behavior would cause unexpected behavior when the FCV changes to the upgraded version.

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