If an arbiter sends a durableOpTimeAndWalltime (e.g due to SERVER-56619), that OpTimeAndWallTime can remain in the system indefinitely, passed around in replSetUpdatePosition commands, even after the arbiter has been corrected. This is because replSetUpdatePosition only advances the optime, and a correct arbiter always has a null optime. Thus for arbiters we should explicitly clear the arbiter's durableOpTimeAndWallTime when we get a heartbeat, to avoid "ghost" optimes staying in the system.
We should also LOG_WARNING if we get a non-null durable optime from an arbiter.
- split from
-
SERVER-54876 Upgrade mongodb 4.4.4 from 4.2.12 failed
- Closed