Broadleaf Microservices
  • v1.0.0-latest-prod

Search Services Release Notes for 1.8.16-GA

New Features & Notable Changes

Add resiliency against ZooKeeper client session expiration

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.


This is technically a code-level (not API level) breaking change, since references to ZooKeeper now point to SolrZkClient.

However, it likely will not affect most clients, since most will not have overridden logic in DefaultZooKeeperDistributedLockService or ReentrantDistributedZookeeperLock.

For those who have, migration is very simple, as SolrZkClient contains almost all the same methods as ZooKeeper albeit with slight differences in arguments (like the addition of a boolean retryOnConnLoss parameter). Furthermore, SolrZkClient does expose its internal ZooKeeper instance with a getter if direct use of it is still required (though it should be used with care, as it may be recycled as described above).

Bug Fixes

  • Fixed bug where non-USD totals appeared as USD in the Order Fulfillment browse grid by adding search field definition for currency under Order Fulfillment