• Nick Craver's avatar
    Greatly reduce race condition on .MakeMaster() calls at low-latency. · 88dcf0c9
    Nick Craver authored
    This was breaking integration tests but affects all zero-latency server situations. There's a good description in code, but the basics are a race between a broadcast (which goes first) and the post-SLAVEOF reconfig (which loses) creates a situation where the proper topology isn't seen until the next reconfig time span pass.
    
    We now prevent that broadcast (we're broadcasting to ourselves) from running on ourselves because we're about to run another one anyway. This doesn't 100% eliminate the race because there's a minute chance of a pub/sub landing between the 2 if blocks here in an external Interlock. But the chance is crazy small now, at least.
    
    Note: the logging of *why* a reconfig didn't run is now enhanced as well. We log what was trying to run and what was blocking it in the output for much easier debugging next time.
    88dcf0c9
Name
Last commit
Last update
.vscode Loading commit data...
BasicTest Loading commit data...
ConnectionWatcher Loading commit data...
NRediSearch Loading commit data...
NRediSearch.Test Loading commit data...
RedisConfigs Loading commit data...
StackExchange.Redis Loading commit data...
StackExchange.Redis.Modules Loading commit data...
StackExchange.Redis.StrongName Loading commit data...
StackExchange.Redis.Tests Loading commit data...
docs Loading commit data...
.editorconfig Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
Directory.build.props Loading commit data...
LICENSE Loading commit data...
NuGet.Config Loading commit data...
README.md Loading commit data...
StackExchange.Redis.sln Loading commit data...
StackExchange.Redis.sln.DotSettings Loading commit data...
StackExchange.Redis.snk Loading commit data...
StrongName.ps1 Loading commit data...
appveyor.yml Loading commit data...
build.cmd Loading commit data...
build.ps1 Loading commit data...
monobuild.bash Loading commit data...
monobuild.cmd Loading commit data...
semver.txt Loading commit data...