-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Replication
-
None
-
Fully Compatible
-
ALL
-
-
Repl 2017-10-02, Repl 2017-10-23
In rs_rollback.cpp, we resync metadata from certain collections if we need to, and then we update the CollectionOptions of our local collections here. It is possible for options validator, validationAction, validationLevel to be empty, but we don't check for that. So, if we call setValidationAction, for example, with an empty string, it actually sets it to the default validationAction, making our local collection options inconsistent with the upstream rollback node.
For all collection options, we should only be setting them locally if the option we re-synced was non-empty.
This seems to affect both the rollbackViaRefetch and the rollbackViaRefetchNoUUID algorithms. The rollbackViaRefetchNoUUID algorithm contains the same core logic as the 3.4 rollback algorithm, so it should affect v3.4 as well.
- related to
-
SERVER-31988 RollbackViaRefetch makes CollectionImpl validator out of sync with CollectionCatalogEntry
- Closed
-
SERVER-31805 rollbackViaRefetchNoUUID fails if rollback occurs during upgrade
- Closed