Community News

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



Cheers,
Galder
Dear Infinispan Community,

The first Alpha release of Infinispan 9.1 is out and can be found on our downloads page.

Highlights include:



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

Check out the new features and enhancements, download the release and tell us all about it on the forum, on our issue tracker or on IRC on the #infinispan channel on Freenode.

Cheers,
The Infinispan Team
Dear Infinispanners,

we're pleased to announce that 8.1.1.Final release for C++/C# clients is out!

Check the release notes and browse the source code, effort this time has been put in reducing code complexity.

This is the first release built by our new CI Jenkins environment, this is supposed to not affect the binaries but if you feel that something has gone wrong please fill a jira issue.

Enjoy and thanks for reading!

The Infinispan Team
I'm happy to announce that JGroups KUBE_PING 0.9.3 was released. The major changes include:
  • Fixed releasing connections for embedded HTTP Server
  • Fixed JGroups 3/4 compatibility issues
  • Fixed test suite
  • Fixed `Message.setSrc` compatibility issues
  • Updated documentation
The bits might be downloaded from JBoss Repository as soon as the sync completes. Please download them from here in the meantime. 
I would also like to recommend you recent blog post created by Bela Ban. KUBE_PING was completely revamped (no embedded HTTP Server, reduced dependencies) and we plan to use new, 1.0.0 version in Infinispan soon! If you'd like to try it out, grab it from here.
Dear Infinispan Community,

We have just released Infinispan 9.0.1.Final which can be found on our downloads page. Full details of the fixes included in this release can be found here.

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

Cheers,
The Infinispan Team
We are happy to announce that Infinispan Spring Boot Starters 1.0.0.Final have been released.

Change-list:

You can grab the bits from JBoss Repository after the sync is complete. In the meantime, grab them from here.
J On The Beach was a blast! It's only their second year doing the conference, but it was really well managed and it had an amazing lineup of speakers. To top that up, it was in Malaga so the good weather made it possible to stay outside in the garden at La Termica chatting to attendees and speakers.

The evening before the start of the conference, we had a welcome reception at the Ayuntamiento de Malaga learning about IT and Big Data promotion that the major and his team are helping with.

The conference started with a mind-blowing keynote on quantum computing by Eric Ladizinsky. It was a super talk with very interesting information about what the future might hold in terms of computing. The challenges of quantum computing are immense but the possibilities it opens up staggering as well.

That first morning I had the chance to see Kyle Kingsbury's Jepsen talk which was very entertaining. He gave an intro on Jepsen and looked back at the results of different distributed environments. This allowed the audience to get a good overview on what each system is capable of and what guarantees they provide. Also in the first day I attended, Christopher Meiklejohn's talk on Antidote, a geo-replicated NoSQL database with strong guarantees based on Riak. It uses CRDTs and Hight Available Transactions to achieve this.

On the second day I had my presentation on Functional Reactive Programming with Elm, Node.js and Infinispan. It was well received and got good feedback. Slides can be found here, and the demo repository is here. Unfortunately, due to scheduling and preparations for my talk, I couldn't go to Duarte Dunes' ScyllaDB and Tyler Akidau's Apache Beam talks, but I hope to catch those up when the videos are shared.

However, I was able to attend Caitie Mccaffrey's talk on Distributed Sagas, a protocol for coordinating microservices. Even though such protocol would be hard to implement in all situations, e.g. online ticket shop for a very popular artist, it had some interesting characteristics. The talk itself was delivered masterfully.

Finally, I was at Martin Thompson's High Performance Managed Languages talk which was superb! With years of experience and the development of Aeron on his back, he was able to give a interesting overview of the performance characteristics of managed vs unmanaged languages. Flexibility in managed languages, such as in C#, seems to be the best way to achieve the best performance.

All in all it was a fantastic conference, and I was delighted to have been part of it. Valo, the company behind J On The Beach were fantastic hosts and met some amazing people that are or had been part of this company, including: Luis, Justo, Michael, Danielle...etc.

I hope to come up another time :)

Cheers,
Galder
Are you in Malaga for J On The Beach 2017 and want to know more about functional reactive programming with Elm, Node.js and Infinispan? Then, make sure you come to this talk on Friday, 11am at Mollete Hall. It's a fun, live coding talk that you just can't miss :)

Cheers,
Galder
NoSQL Unit is a JUnit extension that helps you write NoSQL unit tests, created by Alex Soto. It brings the ideas first introduced by DBUnit to the world of NoSQL databases.

The essence of DBUnit or NoSQL Unit is that before running each test, the persistence layer is found in a known state. This makes your test repeatable, independent of other test failures or potential database corruptions.
You can use NoSQL Unit for testing embedded or remote Infinispan instances, and since version 1.0.0-rc.5, which was released a few days back, it supports the latest Infinispan 9.0.0.Final.

We have a created a little demo GitHub repository showing you how to test Infinispan using NoSQL Unit. Go and give it a go! :)
Thanks Alex bringing NoSQL Unit to my attention!
Cheers,Galder
Over the past few years we've been blogging a lot on how to use Infinispan in cloud environments based on Docker, Kubernetes or OpenShift.

Continuing with this series of blog posts, Bela Ban, chief-in-charge of JGroups, posted an unmissable blog post yesterday not only how to run Infinispan with Kubernetes on Google Container Engine (GKE), but also how to load test it with IspnPerfTest.

If any of these topics interests you, don't miss out and head to Bela's blog to read all about it!

Thanks Bela for the blog post!!!

Cheers,
Galder
Thanks a lot to everyone who attended the Infinispan sessions I gave in Great Indian Developer Summit! Your questions after the talks were really insightful.

One of the talks I gave was titled Big Data In Action with Infinispan (slides are available here), where I was looking at how Infinispan based in-memory data grids can help you deal with the problems of real-time big data and how to do big data analytics.
During the talk I live coded a demo showing both real-time and analytics parts, running on top of OpenShift and using Vert.x for joining the different parts. The demo repository contains background information on instructions to get started with the demo, but I thought it'd be useful to get focused step-by-step instructions in this blog post.
Set Up
Before we start with any of the demos, it's necessary to run some set up steps:
    1. Check out git repository:            git clone https://github.com/galderz/swiss-transport-datagrid
    2. Install OpenShift Origin or Minishift to get an OpenShift environment running in your own         machine. I decided to use OpenShift Origin, so the instructions below are tailored for that         environment, but similar instructions could be used with Minishift.
    3. Install Anaconda for Python 3, this is required to run Jupyter notebook for plotting.
Demo Domain
Once the set up is complete, it's time to talk about the demos before we run them.
Both demos shown below work with the same application domain: swiss rail transport systems. In this domain, we differentiate between physical stations, trains, station boards which are located in stations, and finally stops, which are individual entries in station boards.
Real Time Demo
The first demo is about working with real-time data from station boards around the country and presenting a centralised dashboard of delayed trains around the country. The following diagrams shows how the following components interact with each other to achieve this:


Infinispan, which provides the in-memory data grid storage, and Vert.x, which provides the glue for the centralised delayed dashboard to interact with Infinispan, all run within OpenShift cloud. 
Within the cloud, the Injector verticle cycles through station board data and injects it into Infinispan. Also within the cloud, a Vert.x verticle that uses Infinispan's Continuous Query to listen for station board entries that are delayed, and these are pushed into the Vert.x event bus, which in turn, via a SockJS bridge, get consumed via WebSockets from the dashboard. The centralised dashboards is written with JavaFX and runs outside the cloud.
To run the demo, do the following:
    1. Start OpenShift Origin if you've not already done so:
        oc cluster up --public-hostname=127.0.0.1
    2. Deploy all the OpenShift cloud components:
        cd ~/swiss-transport-datagrid        ./deploy-all.sh
    3. Open the OpenShift console and verify that all pods are up.
    4. Load github repository into your favourite IDE and run        delays.query.continuous.fx.FxApp Java FX application. This will load the        centralised dashboard. Within seconds delayed trains will start appearing. For example:

Analytics Demo
The first demo is focused on how you can use Infinispan for doing offline analytics. In particular, this demo tries to answer the following question:
Q. What is the time of the day when there is the biggest ratio of delayed trains?
Once again, this demo runs on top of OpenShift cloud, uses Infinispan as in-memory data grid for storage and Vert.x for glueing components together.
To answer this question, Infinispan data grid will be loaded with 3 weeks worth of data from station boards using a Vert.x verticle. Once the data is loaded, the Jupyter notebook will invoke an HTTP restful endpoint which will invoke an Vert.x verticle called AnalyticsVerticle
This verticle will invoke a remote server task which will use Infinispan Distributed Java Streams to calculate the two pieces of information required to answer the question: per hour, how many trains are going through the system, and out of those, how many are delayed.
An important aspect to bear in mind about this server tasks is that it will only be executed in one of the nodes in the cluster. It does not matter which one. In turn, this node will will ship the lambdas required to do the computation to each of the nodes so that they can executed against their local data. The other nodes will reply with the results and the node where the server task was invoked will aggregate the results.
The results will be sent back to the originating invoker, the Jupyter notebook which will plot the results. The following diagrams shows how the following components interact with each other to achieve this:



Here is the demo step-by-step guide:
    1. Start OpenShift Origin and deploy all components as shown in previous demo.
    2. Start the Jupyter notebook:
        cd ~/swiss-transport-datagrid/analytics/analytics-jupyter        ~/anaconda/bin/jupyter notebook
    3.  Once the notebook opens, click open live-demo.ipynb notebook and execute each of the cells in order. You should end up seeing a plot like this:

So, the answer to the question:
Q. What is the time of the day when there is the biggest ratio of delayed trains?
is 2am! That's because last connecting trains of the day wait for each other to avoid leaving passengers stranded.
Conclusion
This has been a summary of the demos that I presented at Great Indian Developer Summit with the intention of getting you running these demos as quickly as possible. The repository contains more detailed information of these demos. If there's anything unclear or any of the instructions above are not working, please let us know!
Once again, a very special thanks to Alexandre Masselot for being the inspiration for these demos. Merci @Alex!!
Over the next few months we will be enhancing the demo and hopefully we'll be able to do some more live demonstrations at other conferences.
Cheers,Galder