Thursday, 22 June 2017

Cache configuration inheritance: you're no son of mine

Once upon a time Infinispan cache configurations were all orphans.

Actually, it wasn't as sad as that: they all shared a single parent - the default cache. While this gave caches a limited form of inheritance, it led to confusion as users weren't really aware of it and it was impossible to turn it off: the limited gene pool was propagating possibly unwwanted traits to all of its children.

Templates and real configuration inheritance

Infinispan 7.2 finally introduced proper configuration templates and inheritance. But there was a catch. Backwards compatibility dictated that the "default mother of all caches" behaviour survived.

In the above example, the default cache is a replicated cache with a file store. The distributed cache inherits the "transactional" configuration. However, because of default inheritance present up to Infinispan 8.2, the distributed-cache also ended up having a file store. Confusing or what !?!
The best workaround was to never give it a specific configuration, let Infinispan use its internal defaults and essentially avoid it. Just like the black sheep in the family.

Bye bye default cache 

With Infinispan 9.0 we decided it was finally time to cut the umbilical cord between the default cache and all the other caches: if you declare one, it will never be used as default inheritance for every other cache. In the above example, the distributed cache won't have a file store any more.

We've gone even further: unless you declare a default cache, we will not even set one up for you, not even one with default settings!

Aleksandr Sergeevich Serebrovskii, the Russian geneticist  who first formulated the concept of the gene pool and the diversity benefits it brings, would be proud of us.

Wednesday, 21 June 2017

Infinispan 9.0.3.Final and 8.2.7.Final are out!

Dear Infinispanner,

we're proud to announce the release of two new versions of Infinispan for the 9.0 and 8.2 users.

If you're on these branches please check the list of the bugs we've caught and consider to upgrade.

Download, docs and more info are available on the Infinispan Site.

The Infinispan Team

Bugs closed in 9.0.3:
  • [ISPN-6730] - EmbeddedCompatContinuousQueryTest.testContinuousQuery fails with CCE
  • [ISPN-7710] - CompatibilityProtoStreamMarshaller can't be set in server
  • [ISPN-7779] - State transfer does not work with protobuf encoded entities
  • [ISPN-7802] - Use chunked reads/writes in TcpTransport
  • [ISPN-7895] - ArrayIndexOutOfBoundsException when using off heap with expiration
  • [ISPN-7901] - Postgres drop-on-exit remove index fails
  • [ISPN-7906] - Infinispan Query DSL does not handle inheritance of properties/fields correctly
  • [ISPN-7922] - OffHeap stream causes too many entries in memory at once
  • [ISPN-7930] - Remove unnecessary provided dependencies

Bugs closed in 8.2.7:
  • [ISPN-6029] - DDL for JDBC store tables should never allow null
  • [ISPN-6539] - ClassCastException with Remote Cache Loader and GetWithMetadata
  • [ISPN-6766] - hot rod client: RemoteCache.removeClient method does not remove the listener from the list after server restart
  • [ISPN-7430] - Slowdown when using PutAll with transactions
  • [ISPN-7480] - JDBC cache store doesn't work on Sybase
  • [ISPN-7495] - XSD files missing from infinispan-embedded
  • [ISPN-7535] - Cache creation requires specific permissions when using security manager
  • [ISPN-7547] - ISPN-7207 fix swallows JMX exceptions
  • [ISPN-7572] - Infinispan initialization via DirectoryProvider can't use any CacheStore or other extensions
  • [ISPN-7584] - Rolling upgrade fails with "java.lang.ClassCastException: SimpleClusteredVersion cannot be cast to NumericVersion"
  • [ISPN-7622] - Hot Rod Rolling Upgrade throws TimeOutException
  • [ISPN-7779] - State transfer does not work with protobuf encoded entities
  • [ISPN-7838] - JBoss Modules NPE in Domain mode
  • [ISPN-7860] - DataContainerFactory doesn't work with MANUAL eviction mode (CacheConfigurationException: Unknown eviction strategy MANUAL)
  • [ISPN-7906] - Infinispan Query DSL does not handle inheritance of properties/fields correctly

Tuesday, 20 June 2017

Back from Berlin Buzzwords, video already available!

Exactly one week ago I was presenting a talk on big data in action with Infinispan and two days later the video has already been uploaded!! Fastest ever conference video release I've seen! Kudos to Berlin Buzzwords 👏

The slides for the talk can be found here, and the video is here:

Berlin Buzzwords was a very interesting conference. Similar to J On The Beach, it's a conference focused on data related technologies, but Berlin Buzzwords had a more Apache focus. So, you had many talks on Solr, Lucene, Spark, Flink, Kafka, Beam...etc, as well as Apache spinoffs such as ElasticSearch.

The conference was very well organised and the talks were good, although I did miss some demos in the talks I attended. Having been presenting Infinispan for over 8 years, I am fully aware that coming up with data related demos is not an easy task. However, with some many open data streams available these days, there has never been a bigger opportunity to put some of that data to work in a live demo and demonstrate why your tech is so awesome.

From an Infinispan perspective, it was fascinating talking to Flink, Beam...etc developers and learn how Infinispan could be integrated with these projects. We already have Hadoop and Spark integrations, but we're not standing still and we will continue to integrate with other popular data processing technologies.

On a personal level, it was awesome to meet William Benton once again and we had some very interesting discussions about Radanalytics, a project that helps you build data-driven applications on top of OpenShift. I also had some interesting chats with fellow Basel residents working for Baloise insurance group and the University of Basel.


Monday, 19 June 2017

Infinispan 9.1.0.Beta1

Dear Infinispan Community,

the Infinispan 9.1.0.Beta1 is out and can be found on our downloads page.

Full details of the new features and enhancements included in this release can be found here.

Short list of highlights:
  • [ISPN-7114] Consistency Checker, Conflict Resolution and Automatic merge policies
  • [ISPN-5218] Batching for CacheStores
  • [ISPN-7896] On-demand data conversion in caches
  • [ISPN-6676] HTTP/2 suport in the REST endpoint with TLS/ALPN upgrade
  • [ISPN-7841] Add stream operations that can operate upon data exclusively
  • [ISPN-7868] Add encryption and authentication support to the Remote Store
  • [ISPN-7772] Hot Rod Client create/remove cache operations
  • [ISPN-6994] Add an AdvancedCache.withSubject(Subject) method for explicit impersonation
  • [ISPN-7803] Functional commands-based AtomicMaps
  • The usual slew of bug fixes, clean ups and general improvements.
As usual, we will be blogging about each feature and improvement.

Always consult the Upgrading guide to see what has changed. thank you for following us and stay tuned! The Infinispan Team

Cache operations impersonation: do as I say (or maybe as she says)

The implementation of cache authorization in Infinispan has traditionally followed the JAAS model of wrapping calls in a PrivilegedAction invoked through Subject.doAs(). This led to the following cumbersome pattern:

We also provided an implementation which, instead of relying on enabling the SecurityManager, could use a lighter and faster ThreadLocal for storing the Subject:

While this solves the performance issue, it still leads to unreadable code.
This is why, in Infinispan 9.1 we have introduced a new way to perform authorization on caches:

Obviously, for multiple invocations, you can hold on to the "impersonated" cache and reuse it:

We hope this will make your life simpler and your code more readable !

Tuesday, 13 June 2017

Infinispan coming to Berlin Buzzwords 2017

Are you attending Berlin Buzzwords and want to find out more how Infinispan can help your systems react to real-time data quickly, and see the cool stuff we have for data analytics, make sure you come to my talk on Big Data In Action with Infinispan on Tuesday, 13th June at 16:30.