This release adds an option that explicitly allows using multiple endpoints in the connection string, but it’s not recommended. Use it at your own risk! Here’s a small explanation:

  • Distributed locks may not provide the safety property (their primary property) in edge cases, for example when failover occurs when NodeA has just acquired a lock, but the lock acquisition wasn’t replicated, so it’s possible for NodeB to re-acquire the same lock. This problem is solved by implementing the RedLock algorithm proposed by Salvatore Sanfilippo (the author of Redis), but it’s not currently implemented.
  • There were problems with subscriptions in the past. StackExchange.Redis doesn’t provide blocking commands like BRPOPLPUSH, that are very important for queue processing, due to it’s multiplexed behavior. The workaround is to use Redis pub/sub to get the blocking semantics, but there were problems when I tried to use them in a cluster environment. Looks like this PR fixed this, but I need to ensure.

AddedAllowMultipleEndPointsWithoutRedLock option that explicitly allows to use multiple endpoints.

Comments