Commit 3e5e3476 authored by Marc Gravell's avatar Marc Gravell

fix race conditions around ActiveMultiplexers

parent 72a46ec0
......@@ -275,7 +275,10 @@ protected IServer GetAnyMaster(ConnectionMultiplexer muxer)
}
handle = GCHandle.Alloc(muxer);
ActiveMultiplexers.Add(handle);
lock (ActiveMultiplexers)
{
ActiveMultiplexers.Add(handle);
}
muxer.InternalError += OnInternalError;
muxer.ConnectionFailed += OnConnectionFailed;
......@@ -296,11 +299,18 @@ protected IServer GetAnyMaster(ConnectionMultiplexer muxer)
muxer.Resurrecting += (e, t) => Writer.WriteLine($"Resurrecting {Format.ToString(e)} as {t}");
muxer.Closing += complete =>
{
Writer.WriteLine((complete ? "Closed (" : "Closing... (") + ActiveMultiplexers.Count.ToString() + " remaining)");
if (complete)
int count;
lock(ActiveMultiplexers)
{
ActiveMultiplexers.Remove(handle);
count = ActiveMultiplexers.Count;
if (complete)
{
ActiveMultiplexers.Remove(handle);
}
}
Writer.WriteLine((complete ? "Closed (" : "Closing... (") + count.ToString() + " remaining)");
};
return muxer;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment