Blogs Infinispan 14.0.0.Dev03

Infinispan 14.0.0.Dev03

Dear Infinispan community,

Infinispan 14 development release 03 is here! We plan to release Infinispan 14 Final this summer, so we want to share a preview of what’s coming.

Java 11

Infinispan now requires Java 11 to run (it was only needed to build it before). This means we can use and expose all of the great new APIs that were added, such as java.util.concurrent.Flow which provides a standard interface for all things reactive. Which brings us to the…​

New API

We have finalized the design of our new user-facing API, which brings the following, much-needed, features:

  • a common API for both embedded and remote

  • clean separation between sync and async APIs, as well as a Mutiny variant which blends beautifully with all the great things happening over in Quarkus.

  • a single entry-point to access all of the data-structures that we support (caches, counters, locks, multimaps, etc)

  • our own annotations for indexing entity fields (see below for details)

We are now working on implementing this API for the remote Hot Rod client, while the implementation for embedded will be available in Infinispan 15.

JGroups 5

Upgrading to Java 11 also allows us to upgrade to JGroups 5.x, which brings a bunch of improvements:

  • Improved failure-detection protocols (FD_ALL3, FD_SOCK2)

  • The Random Early Drop protocol (RED), which starts dropping messages on the send side when the queue becomes full to prevent message storms caused by unneeded retransmissions.

  • Lots more.

Grouping

The grouping API has a small improvement when searching for keys belonging to a group. The old code was inefficient because it iterates over all keys in the local nodes but that was changed in this release by iterating over a single segment.

Transactional caches

The internal codeis now non-blocking, reducing the overall threads spawning and making better use of resources when transactions are committed.

Cross-site replication

The asynchronous cross-site replication updates are batched in the sender improving the overall resources utilization.

Jakarta EE

JavaEE is dead. Long-live JakartaEE. Wherever we used to depend on javax APIs, we now depend on their jakarta equivalent. We still provide compatibility artifacts for legacy deployments.

Hibernate ORM 6.0 compatibility

Infinispan’s Hibernate ORM second-level cache (2LC) implementation has been upgraded to work with Hibernate 6.0.

Indexing and Query

Lots has been happening in the land of indexing and querying.

  • Upgraded Hibernate Search to 6.1 and Lucene 8.11.

  • Brand-new annotations for indexing annotations in place of the old Hibernate annotations.

  • Schema index update to acquire ProtoBuf schema backward-compatible changes without touching the pre-existing index data.

  • The removal of the @ProtoDoc annotation to wrap indexing annotations for ProtoBuf generation.

  • New indexing startup mode configuration, to trigger purge or reindex automatically when the cache starts.

  • Support pagination for unbounded result size queries with the HotRod client.

  • Support query parameters for full-text analyzed fields.

  • Support normalizers with the HotRod client.

  • Improve the Hybrid query system.

Micrometer

We’ve replaced our use of SmallRye Metrics (an implementation of Microprofile Metrics), with the much better Micrometer.

Server

  • RESP endpoint: a Redis-compatible endpoint connector (implementing the RESP 3 protocol) with support for a subset of commands: set, get, del, mget, mset, incr, decr, publish, subscribe, auth, ping. The connector integrates with our security and protocol auto-detections, so that it is easily usable from our single-port endpoint. The implemented commands should be enough for basic usage. If you would like to see more, reach out via our community.

  • Support for FIPS environments (PKCS#11)

  • Support for masked and external credentials

Console

The console now sports a cache-creation wizard: a feature-driven approach to configuring caches just the way you need them.

Documentation

As always, the Infinispan team hope you find the documentation useful and complete. We’d love to hear from you and really value feedback from our community. If you think something is missing from the docs or spot a correction, please get in touch and we’ll get on it straight away.

Release notes

You can look at the release notes to see what has changed.

Other releases

We’ve also just recently updated our stable releases with important fixes:

Get them from our download page.

Get it, Use it, Ask us!

We’re hard at work on new features, improvements and fixes, so watch this space for more announcements!

Please, download and test the latest release.

The source code is hosted on GitHub. If you need to report a bug or request a new feature, look for a similar one on our GitHub issues tracker. If you don’t find any, create a new issue.

If you have questions, are experiencing a bug or want advice on using Infinispan, you can use GitHub discussions. We will do our best to answer you as soon as we can.

The Infinispan community uses Zulip for real-time communications. Join us using either a web-browser or a dedicated application on the Infinispan chat.

Tristan Tarrant

Tristan has been leading the Infinispan Engineering Team at Red Hat for quite a while now, as well as being Principal Architect for Red Hat Data Grid. He's been a passionate open-source advocate and contributor for over three decades.