Blogs Infinispan 15.0.0.Dev01

Infinispan 15.0.0.Dev01

Infinispan 15.0.0.Dev01 marks the beginning of a new development cycle, and there are a number of notable changes that we are making that deserve a detailed post.

Bye bye, Java EE, Hello Jakarta EE

We’ve made the decision to drop Java EE support completely and focus solely on Jakarta EE. For 14.0 we provided artifacts for both, but we believe the time has come to move on. All of the leading application servers (like WildFly and OpenLiberty) as well as the most important stacks (like Quarkus and Spring) have adopted Jakarta EE, so we’ve decided it was time for us to make the move too.

JCache changes

The choice to drop Java EE directly impacts our JCache provider implementation. The JCache API (aka JSR 107) is essentially in maintenance mode: it was never adopted by Java EE and there are a number of obstacles (mostly legal) that prevent it from moving to Jakarta EE. We understand the need to have an implementation agnostic caching API, so we are going to continue supporting our JCache provider, but we will drop those parts which require Java EE, most notably the javax.cache.annotation package. Hopefully a modern caching API will emerge as part of Jakarta EE.

Dropping Spring 5 / Spring Boot 2 support

Dropping Java EE also means having to drop Spring 5 and Spring Boot 2 support.


We’ve merged our Quarkus components (embedded, CLI and server) into the main repository and have upgraded them to Quarkus 3.0. Our client extension continues to be part of the Quarkus ecosystem.

Security Manager

The Java Security Manager has been deprecated for removal. It was designed mostly for sandboxing Java applets, but it was somehow (wrongly) co-opted as a way to implement similar functionality for normal Java applications. It was slow and cumbersome, and we’re glad to see it go. Luckily, the removal of SecurityManager support from Infinispan does not affect its authentication and authorization capabilities.

Java 17 and 21

Starting with Infinispan 15, we will baseline on JDK 17 and also offer support for JDK 21, including virtual threads.

But what if I rely on JavaEE, Spring 5, Spring Boot 2 and JCache annotations ?

Don’t worry, we have you covered for quite some time, as we will continue to support Infinispan 14.0 for quite a while, with security patches, bug fixes and improvements that we can backport.

Other features and tentative release date

What you can expect to see in Infinispan 15:

  • many improvements to our Redis-compatible RESP endpoint, including many more commands

  • a completely overhauled Memcached endpoint with support for authentication and the binary protocol

  • improved performance across the board, with particular focus on the remote endpoints and clustering

  • CDC integration, courtesy of our friends over at Debezium

  • Much more!

We hope to have the final release of Infinispan 15 ready for consumption by the end of the year and we will be making regular development releases.

Release notes

Sub-task[ISPN-12152] - Remove the Kryo and Protostuff Marshallers[ISPN-13985] - Test AsyncCache new API.[ISPN-13994] - Pass added SerialAllowList to configuration[ISPN-14016] - Implement HotRodMutinyCaches methods

Feature Request[ISPN-12081] - Weak counter creation[ISPN-13424] - Spring 6 integration[ISPN-13946] - Expose indexes metamodel[ISPN-14085] - Allow to pass new list of indexed entities in update schema API[ISPN-14233] - REST API makes it possible to download any server report[ISPN-14298] - Delete a counter[ISPN-14300] - Add a delta in a value[ISPN-14303] - Reset counter[ISPN-14309] - Improve Counters Table Filtering[ISPN-14344] - StoreMigrator support reading segmented SingleFileStores[ISPN-14361] - Create Hibernate 2LC implementation for Hibernate 6.2.x.[ISPN-14577] - Running tests with alternate JDK[ISPN-14731] - Hot Rod client should support alternate resolution strategies[ISPN-14758] - Add cli command alternative to /rest/v2/caches/{cacheName}/{cacheKey}?extended endpoint

Bug[ISPN-12224] - Cluster in a confusing state after restarted from graceful shutdown - no hint for waiting on complete restarted[ISPN-13877] - NullPointerException in[ISPN-14090] - Counters client 14 are incompatible with Server 13[ISPN-14112] - REST/CLI command will add a schema definition with 'upload' if the given file does not exists[ISPN-14119] - Cache details page: Queries give error in case of running after entries expiration[ISPN-14210] - Stores that do not return the EXPIRATION Characteristic should not allow expiration[ISPN-14238] - Memcached server: corrupted response[ISPN-14240] - Client certificate authentication doesn't work with HTTP/2[ISPN-14256] - CLI expands `-` filename breaking stdin batch[ISPN-14264] - [Console] Counters page - double click on Strong/Weak select loads all counters[ISPN-14271] - Cache wizard back button not working[ISPN-14278] - [Doc] sql-store examples should be updated[ISPN-14279] - "Divide by 0"-Exception on Cache.getStats()[ISPN-14280] - JSON parser doesn't report error locations correctly[ISPN-14282] - Spring Boot actuator embedded metrics use deprecated code[ISPN-14290] - [Docs] YAML Configuration example with typos[ISPN-14313] - Set different properties and port for cross-site testdriver[ISPN-14315] - Not possible to get server config over REST[ISPN-14316] - '/rest/v2/server/report' throws exception if there are 1+ instances on the host[ISPN-14317] - Not possible to create cluster backup over REST[ISPN-14319] - Use InetSocketAddress.getHostString() instead of getHostName()[ISPN-14323] - Get command blocks in text/plain caches[ISPN-14329] - Availability of caches should be prevented until a cluster is complete after "shutdown cluster"[ISPN-14348] - BytesObjectOutput.writeUTF performance improvements[ISPN-14356] - NPE if not configuring datasource connection pool maxSize[ISPN-14362] - Json escape should use two equality checks instead of HashMap lookup[ISPN-14364] - Yaml parser mishandles lists[ISPN-14368] - CacheInputEntryStream escapes the value for every byte in the value[ISPN-14376] - Web console crashes when cache name has a dot[ISPN-14377] - Stats command inaccurate results[ISPN-14390] - When reading entries from read only store apply expiration[ISPN-14399] - Do not allow read only and passivation to be configured together[ISPN-14406] - Stage returned from reindexing on explicit keys completes earlier than expected[ISPN-14416] - Data Distribution chart size issue[ISPN-14417] - The metrics for misses and retrievals are updated after page reload[ISPN-14421] - CVE-2022-41881 codec-haproxy: HAProxyMessageDecoder Stack Exhaustion DoS [jdg-8][ISPN-14435] - Backwards compatibility broken with InvalidMagicIdException[ISPN-14440] - calling AsyncCache#keys or MutinyCache#keys throws an exception because the ToEmptyBytesKeyValueFilterConverter cannot be found.[ISPN-14453] - Ickl Queries should support BigInteger and BigDecimal[ISPN-14461] - Add missing licence: MPL-1.1[ISPN-14466] - Cache configuration update failure cause not returned in http body[ISPN-14468] - REST: return error if failed to create counter[ISPN-14470] - REST cache configuration comparison returns 204 for different caches[ISPN-14477] - Concurrent Spring session access results in lost session attributes[ISPN-14479] - SQL Cache store initiation fails on Sql type CHAR[ISPN-14491] - Adding entries with putAll does not add metadata version - following replaceWithVersion will end with a timout[ISPN-14510] - org.infinispan.server.cli.CliIT.testCliInteractive failure[ISPN-14511] - RestOperations.testCounter[HTTP_20] failure[ISPN-14512] - Fix *-jakarta modules[ISPN-14516] - Wrong versions in spring-boot-3-tests module[ISPN-14527] - Meta model may not reflect some schema changes[ISPN-14535] - GetCounterNameOperation can fail replay[ISPN-14540] - [Docs]Fix JSON example for Off-heap storage[ISPN-14542] - AsyncStore needs to use SecurityAction when retrieving ComponentRegistry[ISPN-14543] - Build resource filtering corrupts binary files[ISPN-14544] - RESP endpoint cache shouldn't require no expiration configured[ISPN-14545] - SIFS Compactor does not properly shut down but the index thinks it is okay[ISPN-14569] - Protocol parser throws a NPE if all branches of a switch statement or if/else contain a throw clause[ISPN-14573] - AbstractAuthorization.testRestServerNodeReport is failing[ISPN-14574] - [CLI] ClassCastException with get clusters -s option[ISPN-14578] - We should never be using CompletableFuture.completionStage[ISPN-14579] - Various RESP commands are requesting wrong size for buffer[ISPN-14580] - We should use voidPromise for all context writes that don't use a future[ISPN-14583] - RESP endpoint should bundle flush calls to allow pipelining[ISPN-14589] - JdbcStringBasedCacheStorePassivation.testFailoverWithPassivation failures[ISPN-14683] - NPE in configuration reader if resolver is null[ISPN-14685] - EncodingConfiguration matching is too strict[ISPN-14687] - Detect circular references on marshalling[ISPN-14691] - Fix Authorization error in Actuator Metrics Binding[ISPN-14730] - Exclude completely the non jakarta commons dependency[ISPN-14732] - ClasspathURLStreamHandlerProvider should throw FileNotFoundException if it cannot find a resource[ISPN-14733] - Make quarkus modules inherit from Infinispan parent[ISPN-14737] - SoftIndexFileStore Index can become corrupted[ISPN-14738] - RESP endpoint commands don't require previous value[ISPN-14739] - OffHeapConcurrentMap shouldn't require reading previous value on put[ISPN-14744] - RemoteCacheManagerAdmin docs should mention supported config formats[ISPN-14753] - Prevent SoftIndexFileStore Compactor from running multiple times[ISPN-14755] - Empty authorization roles serialized as JSON cannot be parsed[ISPN-14759] - SoftIndexFileStore Index can lag behind LogAppender under heavy load[ISPN-14763] - Users unable to configure StoreMigrator marshaller allow-list via properties[ISPN-14767] - CLI table printer breaks when values have line breaks

Task[ISPN-11701] - Add store migration capabilities to the CLI[ISPN-14263] - Restrict most JGroupsTransport INFO logging when using a ForkChannel.[ISPN-14287] - Remove extended-statistics module[ISPN-14288] - Remove kryo and protostuff marshallers[ISPN-14375] - Remove all uses of SecurityManager/AccessControlContext[ISPN-14414] - REST API retrieve caches in initializing state[ISPN-14424] - [Docs] Fix errors in the REST guide[ISPN-14426] - Disable tracing propagation on HotRod client using a system property[ISPN-14492] - Build Infinispan with JDK 17[ISPN-14541] - [Docs] Use Java serialization or JBoss Marshalling with cyclic objects[ISPN-14575] - Remove properties attribute from indexing configuration[ISPN-14591] - Add exception to the BlockHound for the registering of a proto file[ISPN-14705] - Expose indexing failures statistics using Infinispan indexing failure handler[ISPN-14713] - Include new api dependency in Spring Boot 3 modules[ISPN-14742] - Remove GeronimoTransactionManager[ISPN-14756] - Remove JCache support[ISPN-14769] - Replace completedExceptionFuture with failedFuture[ISPN-14771] - Change PrivateMetadata in OffHeap to use a flag for presence instead of 4 bytes for length[ISPN-14786] - Remove Wildfly modules[ISPN-14787] - Remove Spring5 and Spring Boot 2 support[ISPN-14789] - Fix port number in exam,ples of property files in SB starter docs[ISPN-14792] - Remove Security Integration tests with WildFly

Component Upgrade[ISPN-14270] - Update to Spring Boot 3[ISPN-14320] - Update Patternfly to 2022.14 Release[ISPN-14342] - Apache SSHD 2.9.2[ISPN-14343] - Jackson 2.14.1[ISPN-14346] - Upgrade JGroups to 5.2.10.Final[ISPN-14365] - JBoss Marshalling 2.1.1[ISPN-14372] - Update Patternfly to 2022.15 Release[ISPN-14401] - Protostream 4.6.0.Final[ISPN-14437] - Update XStream to 1.4.20 to fix CVEs[ISPN-14442] - Update to 2.19.0 log4j[ISPN-14444] - Update Patternfly to 2022.16 Release[ISPN-14448] - Surefire 3.0.0-M8[ISPN-14462] - Upgrade assertj-core to 3.24.1[ISPN-14476] - Bump JGroups to 5.2.12.Final[ISPN-14513] - Upgrade Narayana to 5.13.1.Final[ISPN-14523] - Log4j 2.20.0[ISPN-14525] - Elytron 2.1.0.Final[ISPN-14550] - Upgrade Patternfly Dependencies to Release 2023.01 (2023-02-02)[ISPN-14553] - Spring and Spring Boot dependencies[ISPN-14681] - Surefire 3.0.0[ISPN-14694] - Upgrade Patternfly Dependencies to Release 2023.02 (2023-03-24)[ISPN-14711] - Updates latests SB 3 and 2[ISPN-14734] - Quarkus 3.0.0.CR2[ISPN-14745] - Narayana 6.0.0.Final[ISPN-14746] - Fabric8 kubernetes-client 6.5.1[ISPN-14747] - jboss-threads 3.5.0.Final[ISPN-14764] - Upgrade to plexus-utils 3.5.1

Enhancement[ISPN-12106] - Add a refresh button in the cache detail[ISPN-12223] - Confusing behaviour in case of joining nodes if a partition is DEGRADED[ISPN-12484] - Explicit Locks should throw AvailabilityException during ClusterPartition instead of Timeouts[ISPN-14092] - Cache Configuration Wizard Direct Link[ISPN-14142] - Transport: add option to skip flow control[ISPN-14204] - Standardize NYC and LON for XSite tests[ISPN-14205] - InfinispanGenericContainer::getNetworkIpAddress fail fast if container is not running[ISPN-14213] - [Docs]: Add a statement why we provide no performance numbers[ISPN-14223] - Create Redis cache on first access[ISPN-14244] - Don't pretty print XML/JSON by default[ISPN-14246] - Query Statistics Tooltip[ISPN-14247] - Drop snakeyaml dependency[ISPN-14259] - Support benchmark CLI as a batch command[ISPN-14322] - Number of owners is 2 by default[ISPN-14327] - Overlays should be able to replace endpoint configuration[ISPN-14341] - Allow injecting a MeterRegistry instance into Infinispan[ISPN-14374] - Env variable for max_site_masters[ISPN-14394] - Cache Configuration Wizard indexing startup mode[ISPN-14415] - Expose REST endpoint to compare two cache configurations[ISPN-14423] - Improve configuration parser error reporting[ISPN-14451] - Set Hot Rod protocol version to AUTO via properties[ISPN-14456] - Validation for delta (counter)[ISPN-14467] - Suppressed exceptions should be sent over the wire[ISPN-14472] - Maven Shade 3.4.1[ISPN-14473] - Improve REST API error reporting[ISPN-14474] - Add a transcoder for 'application/x-www-form-urlencoded'[ISPN-14482] - Provide a single executor for all caches to execute indexing commands[ISPN-14490] - Add blocking scheduled tasks to BlockingManager[ISPN-14507] - [docs] REST updates[ISPN-14517] - Generate test certificates from code[ISPN-14528] - Configuration conversion should support templates[ISPN-14552] - Statistics reset REST API[ISPN-14570] - Protocol Parser should allow for code to be provided before the decode is invoked[ISPN-14585] - Convert RESP endpoint to use parser generator[ISPN-14680] - Reuse image in Server testsuite[ISPN-14689] - Handle RESP SET optional arguments[ISPN-14690] - Rework virtual thread detection and make it optional[ISPN-14720] - RESP endpoint should be able to parse commands as enum[ISPN-14722] - Expose auto/manual indexing mode[ISPN-14723] - Allow to configure index sharding[ISPN-14724] - Create a simple DSL to build Protocol Buffers schema[ISPN-14735] - Move to JakartaEE packages[ISPN-14761] - Add marshalling info in the entries tab for not protostream[ISPN-14765] - Java serialization to JSON transcoder[ISPN-14784] - Build with JDK 21

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 JIRA 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.