Thursday, 18 February 2016

Infinispan Javascript client 0.1.0 is out!

Over the past few months we've been working on a Javascript client based on Node.js which can talk to Infinispan Server instances and today we can announce the first public release, version 0.1.0 which can easily be installed with the following command:

$ npm install infinispan

The client is still under heavy development but here's a summary of its current capabilities:

  • Full CRUD operation support, e.g. put, get, remove, containsKey...etc.
  • Compare-And-Swap operation support, e.g. putIfAbsent, getWithVersion/getWithMetadata, replace, replaceWithVersion, removeWithVersion...etc.
  • Expiration with absolute lifespan or relative maximum idle time is supported. This expiration parameters as passed as optional parameters to create/update methods and they support multiple time units, e.g. {lifespan: '1m', maxIdle: '1d'}.
  • Update and remove operations can optionally return previous values by passing in{previous: true} option.
  • Bulk store/retrieve/delete operations are supported, e.g. putAll, getAll, getBulk, getBulkKeys, clear...etc.
  • Cache contents can be iterated over using the iterator method.
  • Cache size can be determined using the size method.
  • Remote cache listeners can be plugged using the addListener method, which takes the event type (create, modify, remove or expiry) and the function callback as parameter.
Sample code showing how to use the Infinispan Javascript client can be found in the client's README file.

In future versions we'll be adding remote execution support as well as cluster topology handling, including consistent-hash based request routing.

If you're a Javascript user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.


Wednesday, 17 February 2016

Infinispan 8.2.0.Beta2 and 8.1.2.Final

Dear Infinispan community,

we're proud to announce two fresh releases today.
First off is 8.2.0.Beta2, from our development branch. It is packed with a bunch of goodies:

  • lots of enhancements and additions to the administration console for Infinispan Server, such as cluster event views, task management, container administration and deployments. Some of these will be further refined before the upcoming Final release. If you prefer to manage your servers from the good ol' command-line, the CLI commands have also been similarly enhanced.
  • performance improvements for clustered reads, bulk and stream ops, and a sensible reduction in memory allocation rate. More improvements will come as we are rewriting some parts of the core to allow further optimizations.
  • a new distributed executor, ClusterExecutor which does not require an existing distributed cache and which comes complete with Java 8 goodness such as CompletableFutures and lambda support. This nicely complements our existing Streams support.
  • a new, experimental index manager to store indexes on Infinispan with better scalability and indexing throughput. Additionally we've upgraded Lucene to 5.4.1 and Hibernate Search to 5.6.0.Alpha1
  • the ability to indicate a number of nodes for initial cluster formation
  • lots of bug fixes
We're still on track for a Final release at the end of the month.

We've also been fixing bugs in our stable 8.1 stream, which means we have a freshly released 8.1.2.Final.

Check out the development release notes, the stable release notes, download the releases and tell us all about it on the forum, on our issue tracker or on IRC on the #infinispan channel on Freenode.

Wednesday, 3 February 2016

The return of the Cassandra CacheStore

Ever since we spruced up our Cache Store SPI in Infinispan 6.0, some of our "extra" cache stores have lied in a state of semi-abandonment, waiting for a kind soul with time and determination to bring them back to life.
I'm glad to announce that such a kind soul, in the form of Jakub Markos, had the necessary qualities to accomplish the resurrection of the Cassandra Cache Store.

Apache Cassandra is a database with a distributed architecture which can be used to provide a virtually unlimited, horizontally scalable persistent store for Infinispan's caches. The new Cassandra Cache Store leverages the Datastax Cassandra client driver instead of the old Thrift client approach, which makes it much more robust and reliable.


In order to use this cache store you need to add the following dependency to your project:
You will also need to create an appropriate keyspace on your Cassandra database, or configure the auto-create-keyspace to create it automatically.
The following CQL commands show how to configure the keyspace manually (using cqlsh for example):

You then need to add an appropriate cache declaration to your `infinispan.xml`
(or whichever file you use to configure Infinispan):

It is important the the shared property on the cassandra-store element is set to true
because all the Infinispan nodes will share the same Cassandra cluster.


The cache store uses Cassandra's own expiration mechanisms (time to live = TTL) to handle expiration of entries. Since TTL is specified in seconds, expiration lifespan and maxIdle values are handled only with seconds-precision.

In addition to this, when both lifespan and maxIdle are used, entries in the cache store effectively behave as if their lifespan = maxIdle, due to an existing bug

So, try it out and let us know about your experience !

Monday, 1 February 2016

'Infinispan 8 Tour' video available

The recording of the talk presented last Wednesday in London is available! Thanks to everyone who joined and to the London JBUG organizers for the awesome new venue!


Infinispan 8.2.0.Beta1 and 8.1.1.Final are out!

Dear all,

We are proud to announce two releases today:

Infinispan 8.2.0.Beta1 is the first release in the 8.2 cycle. It doesn't have big new features, but there are a few significant changes in addition to the usual bug fixes:
  • SyncConsistentHashFactory is now the default consistent hash factory (ISPN-4851). This means the owners of a key are going to be the same in all the caches, as long as the caches have the same members and the same number of owners.
  • We now have a new way for applications to determine the location of keys: the KeyPartitioner interface (ISPN-5465). In spirit it is very similar to the existing Grouper interface, but it is segment-aware. Note that none of the HotRod clients support Keypartitioner in this release.
  • We improved the rolling upgrade performance (ISPN-6046).
  • We added a new event logger that records cluster membership, cache topology, and cache availability changes (ISPN-5816). In the next release, it will also be accessible through the server's management console.
Infinispan 8.1.1.Final includes a number of bug fixes. All users of 8.1.0.Final are encouraged to upgrade.

You can get both releases from our download page. If you are new to Infinispan, you can learn how to use it, and help us continually improve it.