Unselectable flag race fix by NickCraver · Pull Request #1773 · StackExchange/StackExchange.Redis (original) (raw)

In short, we could get in a state where IsReplica could be true, but we couldn't use it because it was unselectable via this path, especially on a reconnect race. This caused failures in other Sentinel testing, specifically the NoConnectionAvailable variety on DemandMaster sanity check gets, because we had a replica, it was connected, but the flags said we couldn't use it. That should never be the case and this additional check at the flag set site ensures it.

In testing, it looked like this (local changes here are logging this condition):

image