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 |