The ZooKeeper server will expire a client connection session if it does not receive a heartbeat within a specified deadline.
When this happens, the ZooKeeper handle used by ReentrantDistributedZookeeperLock is invalidated and no longer usable.
Previously, this was irrecoverable and resolution required a full restart of the Spring application.
With the latest changes, ReentrantDistributedZookeeperLock now interacts with ZooKeeper through SolrZkClient instead of ZooKeeper directly.
SolrZkClient transparently recycles the ZooKeeper connection when it detects expiration, which ensures subsequent retries will not run into the same issue and a full application restart is not required.
|
Important
|
This is technically a code-level (not API level) breaking change, since references to However, it likely will not affect most clients, since most will not have overridden logic in For those who have, migration is very simple, as |