It has been decided that the fcvLock should only be utilized by operations that must do a network call while ensuring the FCV doesn't change.
config.databases writes can simply be protected by the global IX lock, which ensures a conflict with setFCV's global S lock acquisition here and here. Combined with an upgrade/downgrade process for config.databases schema, this is sufficient to ensure config.databases entries will have version fields in FCV 4.0.
This work is further necessary to ensure better concurrency between setFCV and sharding createDatabase command, because the fcvLock will continue to be held for the duration of setFCV, which currently would prevent createDatabase during upgrade/downgrade.
- is depended on by
-
SERVER-34550 [post-branch] Remove database versioning logic from setFCV command
- Closed
-
SERVER-35391 Remove FCV logic in forceDatabaseRefresh()
- Closed
- related to
-
SERVER-35538 unblacklist database_versioning.js workload from non-stepdown concurrency suites
- Closed