Infinispan 12.0.0.Dev03 released, distributed cluster cache system

Infinispan is an extremely scalable, highly available key/value data store and data grid platform. It is 100% open source and written in Java. The purpose of Infinispan is to expose a data structure that is distributed, highly concurrent and designed ground-up to make the most of modern multi-processor and multi-core architectures. It is often used as a distributed cache, but also as a NoSQL key/value store or object database.

Feature

In-memory local and clustered cache

  • Local, Invalidation, Replicated and Distributed cache modes
  • Specify how many copies of the data you want
  • Choose between storing object references or compact binary representations
  • Store data on-heap or off-heap

Clustering

  • UDP and TCP clustering
  • Multiple discovery algorithms for elastic node provisioning
  • Partition handling detects split brain scenarios and reduces availability to provide consistency in such situations
  • Cross-site clustering for geographic multiple site / disaster recovery scenarios
  • High-speed serialization built on JBoss Marshalling
  • Group entries so that they are co-located on the same node
  • Tune consistent hashing so that entries are stored on specific nodes

Expiration

  • Store immortal and mortal entries in the same cache
  • Entry mortality defined by lifespan or maximum idle time

Eviction

  • Define the maximum number of entries to be kept in memory
  • Define the maximum size of entries to be kept in memory
  • High performance LFU eviction strategy
  • Passivate evicted entries to a persistent store

Listeners

  • Register listeners to detect cache events
  • Support for local or clustered listeners
  • Pre- and post-notifications

Transactions

  • Concurrency control based on optimistic and pessimistic locks and total order
  • Support for XA and synchronization models
  • Support for Recovery
  • Integration with JTA/JTS

Persistence

  • Store data both in the cache and in an external persistent store
  • File, JDBC, JPA, Infinispan Remote Server, RocksDB stores available out-of-the-box

Indexing and querying

  • Indexed and indexless queries
  • Ickle, a query language with full-text capabilities
  • Grouping and aggregation
  • Continuous queries
  • Optionally stores indexes in the caches
  • Synchronous and asynchronous indexing engine
  • Lucene-based indexing powered by Hibernate Search
  • Elastic Search backend

Code execution

  • Distributed streams based on java.util.stream
  • Distributed executor
  • Server-side deployable tasks and scripts

Hot Rod Remote Protocol

  • High-performance, language-independent binary protocol
  • Topology-aware: Dynamically reacts to changes in the server nodes
  • Consistent-hash-aware: goes directly to the primary owner
  • Language-independent marshalling of data via ProtoBuf
  • Clients for Java, C++, C#, Python

Remote Server

  • HotRod, REST, Memcached and WebSocket
  • Compatibility mode ensures data portability between protocols
  • Deployable filters, converters and cache stores
  • Server-side code execution
  • Based on WildFly server code for performance, manageability and flexibility

Security

  • Cache and CacheManager authorization with support for custom auditing, optionally integrated with the JDK SecurityManager.
  • Remote client authentication based on SASL and integrated with the Security Realms in the server.
  • Clustering authentication and authorization integrated with the Security Realms in the server.

Configuration / Development

  • Fluent programmatic configuration API
  • Declarative XML configuration
  • Configuration templates
  • Single-jar for ease of integration
  • Atomic object factory supports other types of collections on top of Infinispan

Management and monitoring

  • Local and clustered statistics
  • Manage both embedded and server via JMX, RHQ and CLI
  • Web-based administration console for server

Integrations

  • JCache (JSR-107)
  • Hibernate second-level Cache
  • WildFly modules
  • Apache Lucene directory backed by Infinispan
  • Directory Provider for Hibernate Search
  • Spring Cache 3.x and 4.x
  • Spring Session
  • CDI
  • OSGi
  • Apache Spark
  • Apache Hadoop

Container/Cloud integrations

  • EC2
  • OpenShift/Kubernetes
  • Azure
  • Docker

Changelog v12.0.0.Dev03

Component Upgrade

Enhancement

  • [ISPN-10092] – a README is cited but doesn’t exist
  • [ISPN-11723] – Cluster Backup/Restore Tool
  • [ISPN-11802] – Create SPI for Cross-Site Replication conflict resolution
  • [ISPN-11868] – Docs: Update Spring Session for defining caches
  • [ISPN-11950] – Create a new module called server-integration module into integrationtests module
  • [ISPN-11992] – Convert RemoteStore to use new SPI
  • [ISPN-12165] – Change RemoteStore to handle media types and verify segments
  • [ISPN-12173] – Explanation for eviction leads confusion
  • [ISPN-12195] – Make a About page in the console
  • [ISPN-12204] – Add JDBC Meta Table
  • [ISPN-12205] – Add RocksDB Meta Column Family
  • [ISPN-12217] – Docs: Ports and Protocols
  • [ISPN-12232] – CLI persistent configuration
  • [ISPN-12233] – Server requirements link
  • [ISPN-12234] – Remove Rest store
  • [ISPN-12240] – CLI manpage reference update
  • [ISPN-12242] – BlockingManager add reentrant blocking scheduler
  • [ISPN-12248] – Upgrade Patternfly version to latest
  • [ISPN-12258] – Operator Docs: Doc edits for xsite and creating caches
  • [ISPN-12260] – Don’t use JMX to compute protocols server global connection count
  • [ISPN-12267] – CacheIgnoreManager should use global config cache
  • [ISPN-12271] – Allow different servers for server integration test suite
  • [ISPN-12272] – Docs: Cross-Site updates for clarity
  • [ISPN-12280] – Failfast if lsof is not present in unix

Feature Request

Bug

  • [ISPN-10365] – PreferAvailabilityStrategy assertion failure
  • [ISPN-11754] – Console creates a local cache if no configuration is provided
  • [ISPN-11821] – Be able to arrive to a detail cache directly from the console
  • [ISPN-12088] – Property realm groups file format is wrong
  • [ISPN-12161] – Clean recent activiy table
  • [ISPN-12174] – Custom Store cannot configure segmented via xml
  • [ISPN-12200] – Fix direct landing to to configuration page
  • [ISPN-12230] – Deprecate client keySizeEstimate and valueSizeEstimate attributes
  • [ISPN-12231] – Cache fails to start with IllegalStateException: We already had a newer topology
  • [ISPN-12249] – Better exception handling for cross-site requests
  • [ISPN-12251] – HotRodClientJmxTest.testRemoteCacheManagerMBean fails on Java 14
  • [ISPN-12252] – Default hibernate cache configurations use unspecified media type
  • [ISPN-12254] – NullPointerException in CheckAddressTask
  • [ISPN-12255] – spring-boot-starter tests do not run
  • [ISPN-12256] – InfinispanServerExtensionContainerTest fails to start
  • [ISPN-12257] – RemoteSpringSessionTest.testCreatingSessionWhenUsingREST always fails
  • [ISPN-12263] – RemoteCacheMetricBinderTest fails
  • [ISPN-12264] – Template or custom configuration should be required to create a cache
  • [ISPN-12273] – Potential race condition during wiring of EncoderCache
  • [ISPN-12284] – InfinispanRuleBasicTest thread leak
  • [ISPN-12285] – LicenseTest should check the licenses links

Task

  • [ISPN-12169] – Avoid to wrap the SearchMapping
  • [ISPN-12237] – Add Blockhound exclusion for ForkJoinPool
  • [ISPN-12244] – Remove RxJavaInterop duplication from core
  • [ISPN-12276] – Bump Testcontainers 1.14.3

Download