Monday, 15 April 2019

Infinispan on tour, March-April 2019


Infinispan has been on tour!!

 I - Katia Aresti - had the chance to present 3 talks in 3 different conferences and countries during the last month:

Breizh Camp 2019 the 22th March, Rennes (France)

BreizhCamp - 9ème édition - 20, 21 et 22 Mars 2019 logo


Greach Conf 2019, 29th March, Madrid (Spain)

Greach 2019

Voxxed Days Milano 2019, 13th April, Milan (Italy)

VoxxedDays Milan


Breizh Camp

2019 has been BreizhCamp's 9th - Code Busters - edition and they sold-out the conference in a matter of hours (wow).

I did not have the time to attend any talk. Unfortunately, due to my personal schedule, I arrived on Thursday night, and I was presenting on Friday after lunch. This was the second time I was giving this presentation, but I did lot's of changes since the first time, including:

Breizh Camp Code Busters Edition, Photo credit @BreizhCamp 2019


On Friday morning I was stressed and I ran my presentation at the hotel. I arrived at the venue, delivered my talk and headed back to Paris. I deeply regretted not spending more time hanging out with other speakers and attendees, but I really couldn't make it this time :(

Greach Conf

Greach Conf is a lovely conference held in Madrid (Spain) for several years now. A 100% international conference, it has been organized by the Groovy community. 
This year they have changed the conference lineup adding an Android/Testing track and focusing on a bigger spectrum of technologies around the JVM.


Greach Conf 2019. Photo credit José Miguel Rodríguez


I learned a bunch of new things, including content related to SDKMan!, Gradle, the future of Grails and of course, Micronaut. As the principal maintainer of Spring-Boot and Infinispan integration, Micronaut felt new and familiar at the same time. I really enjoyed the workshop delivered by Alvaro Sánchez who will be in Devoxx France this week. The framework is really impressive. Give it a try!

You will find on Twitter a complete thread about my Greach Conf impressions:

Voxxed Days Milano

Voxxed Days Milano (Italy) was organizing the first edition this year and I really loved this conference in every aspect of it! Thanks, Mario Fusco and all the team involved for making it possible!

Voxxed Days Milano - Photo credit Sanne Grinovero 


I've written a full thread on Twitter with my impressions. You can find it attached to the tweet where I share all the content I've used in Greach Conf, BreizhCamp and Voxxed Days Milano:


Thanks to Breizh Camp, Greach Conf and Voxxed Days Milano for the opportunity to share around distributed caches and for the amazing time I've had during this month in each of the conferences.

This tour is now over for a while but will continue before summer. I will be presenting this talk (with upgrades, so stay tuned) in Dev Fest Lille in June 2019 (France), in Comunidad CODE (Virtual talk) and Software Crafters Bilbao in Spanish.

Devoxx France 

Devoxx France is taking place this week in Paris. I will be there, so if you want to chat about Distributed caches, Datagrids, NoSQL Key-Value databases, or integration with your favorite framework feel free to reach me on twitter!


There are lot's of new features and Reactive APIs to be done for Infinispan 10, so my main focus will be there for a bit.


Stay Tuned And Happy Coding!


Monday, 8 April 2019

Operator 0.2.1 out with DNS ping and expanded customizations

We've just completed the release of the Infinispan Operator version 0.2.1. In this second minor release, we've added the following features:

DNS Cluster Discovery


Cluster nodes now discover each other using DNS ping, which uses name lookups. Each node publishes a headless service which they use to locate each other. Previously, Kubernetes APIs were queried to discover other nodes, but this required administrator rights. DNS ping does not require admin permissions.

Configurable Image


The Infinispan server image used by the operator is now configurable, e.g.


Configurable XML


You can now provide their own custom Infinispan server XML referencing an existing ConfigMap:

Note that this example requires a ConfigMap with the XML file to be created before hand.

Next Steps


We're already working on version 0.3.0, and in parallel we've been working on our first OperatorHub submission. We hope to have some news for you very soon :)

Cheers,
Galder

Friday, 5 April 2019

Infinispan Spring Boot Starter 2.1.5.Final and 1.0.7.Final are out!


Dear Infinispan and Spring Boot users,

We have just released Infinispan Spring Boot Starter 2.1.5.Final and 1.0.7.Final.

2.1.5.Final


2.1.5.Final is using Infinispan 9.4.11.Final and Spring-Boot 2.1.4.RELEASE.

Important Spring-Boot bug fix

Previous versions of Spring-Boot 2.1.x contained a bug related to the multi-release jars. Infinispan contains multi-release jars, in consequence, we could not run our applications using java -jar with Java 11 (Java 8 worked fine). For additional explanations, read here.
Spring-Boot team has fixed this bug and released the correction in Spring-Boot 2.1.4.RELEASE, along with many other features and bug fixes, so consider upgrading soon.

Statistics on Client/Server mode and Actuator

Statistics configuration in client/server mode for the client evolved in the latest Infinispan versions. As a remainder, to activate actuator statistics in client/server mode :
- Configure 'infinispan.remote.statistics=true' in the application.properties
or
- Configure ''infinispan.client.hotrod.statistics=true" in the hotrod-client.properties
or
- Configure by code, for example:

@Bean
public InfinispanRemoteConfigurer infinispanRemoteConfigurer() {
    return () -> new ConfigurationBuilder().statistics().enable().build();
}

JMX

If you want to use Infinispan and JMX, for example on Client/Server mode, set the 'jmx' property 'true' as explained above with the 'statistics' property. However, you might get a javax.management.InstanceAlreadyExistsException because both Infinispan and Spring will try to register the MXBean.

The correction will land on the next starter release. If you need to avoid this error today, you can tell Spring-Boot not to register the bean with the following code (Thanks Stéphane Nicoll for the tip!):


Testcontainers

This version includes an integration test using Testcontainers, JUnit5 and the Infinispan Server. Grab a look here if you are curious.


1.0.7.Final


1.0.7.Final upgrades to 1.5.19.RELEASE and Infinispan 9.4.11.Final.

⭐ Don't forget to star the project in GitHub if you like the starter! ⭐

You can find these releases in the maven central repository.

Please report any issues in our issue tracker and join the conversation in our Zulip Chat to shape up our next release.

Enjoy,

The Infinispan Team

Thursday, 7 March 2019

Subatomic Infinispan Client

Today, the Quarkus project was released as a public beta. https://quarkus.io/ For those of you not familiar, Quarkus allows you to write your enterprise apps as you have done in the past with Hibernate/JAX-RS, but also to compile these applications to a Graal-VM native image. Running in a native image allows for the application to be started up in mere milliseconds, depending upon the app, all while using much less memory.

The Infinispan team is proud to announce that you can use the HotRod Java client in Quarkus and supports being compiled to a native image as well. This can allow you to startup and connect to a remote Infinispan server faster than ever before.

If you want a quick and simple example of how you can get this working you can take a look at the quick start which can be found at https://github.com/quarkusio/quarkus-quickstarts/tree/master/infinispan-client. This example covers configuring the client connection, cache injection and simple get/put operations as a basis.

The Infinispan Client Quarkus extension in addition to providing an easy way to create a Graal-VM native image with Infinispan Client also provides the following features to help the user get stuff done quicker.
  1. Automatically Inject Important Resources
    1. RemoteCache (named)
    2. RemoteCacheManger
    3. CounterManager
  2. User based ProtoStream Marshalling
  3. Querying (Indexed / Non Indexed)
  4. Continuous Query
  5. Near Cache
  6. Authentication/Authorization
  7. Encryption
  8. Counters

More details for these features as well as how to configure them can be found at https://quarkus.io/guides/infinispan-client-guide

Please let us know of any questions, concerns or suggestions at the usual places: forum or chat. We expect to continue enhancing this extension and would love to have any feedback.

Wednesday, 6 March 2019

Triple cachestore release: Cloud, MongoDB and Cassandra

Today we present to you a trifecta of cache store releases which align to Infinispan 9.x

Cassandra Cache Store

The Cassandra cache store now implements the publishEntries/publishKeys methods.

Cloud Cache Store

The Cloud cache store uses the Apache jclouds library to store data on cloud storage providers such as Amazon’s S3, Rackspace’s Cloudfiles or any other such provider supported by JClouds.
The store has been updated to Infinispan 9.x's persistence SPI and uses jclouds 2.1.x

MongoDB Cache Store

This cache store has also been updated to the Infinispan 9.x persistence SPI.

You can get documentation and maven coordinates from our Cache Store page

Tuesday, 5 March 2019

Enhanced JGroups configuration

Infinispan uses JGroups as its underlying clustering layer. In order to configure the finer details of clustering (discovery, flow control, cross-site, etc) you have to provide a separate XML file with the desired configuration and reference it from your Infinispan XML file as follows:


For simple configurations this is usually fine, but configuring complex setups, such as cross-site replication, means juggling multiple files (one for the local stack, one for the cross-site stack and one for the relay configuration).

Starting with Infinispan 10 Alpha2 we have introduced a number of changes to make your life with JGroups configurations a lot easier.

Default stacks

Infinispan now comes with two pre-declared stacks: tcp and udp. Using them is as simple as just referencing their names in the <transport> element.

Inline stacks

Inlining a stack means you can put the JGroups configuration inside the Infinispan one as follows:

You can use the full JGroups schema, and by using XML namespaces you get full validation.

Stack inheritance

Most of the time you want to reuse one of the pre-declared stacks but just override some of the parameters (e.g. discovery) to suit your environment. The following example creates a new tcpgossip stack which is based on the default tcp stack but replaces the discovery protocol with TCPGOSSIP:


In the above example you can see that we have enhanced the JGroups protocol declarations with two new attributes: ispn:stack.combine and ispn:stack.position which affect how and where protocol changes are applied on the parent configuration to obtain a new configuration. stack.combine can be one of COMBINE (the default, possibly overriding any specified attributes), REPLACE (which completely replaces the protocol and resets all attributes), REMOVE (removes the protocol) and INSERT_AFTER (which places this protocol in the stack immediately after the protocol specified by stack.position).

Multiple stacks and Cross-site

The inline configuration really shows its usefulness in cross-site configurations. In fact, the JGroups stack declaration has been extended with a special element which replaces the need for a separate relay XML file and can reference other stacks just by name. The following configuration uses the default udp stack for the local cluster transport and uses the default tcp stack for connecting to a remote site:

Having the entire configuration in a single place greatly simplifies management. Of course you can combine all of the above features to obtain the configuration you need for your environment. You can find more details and examples in the documentation.
Enjoy !
Tristan

Monday, 4 March 2019

First OpenShift Operator pre-release for Infinispan is here!

Infinispan Operator is a new method of packaging, deploying and managing Infinispan clusters on OpenShift. You can think of the Infinispan Operator as the runtime that manages Infinispan clusters on OpenShift.

We've just done our first Infinispan Operator pre-release, version 0.1.0, which allows you to easily boot up an Infinispan cluster on OpenShift.

Using the operator is as simple as installing the Infinispan Operator (requires admin access) on OpenShift, and then create a YAML descriptor that defines the Infinispan cluster. The example below shows how to create a 3-node Infinispan cluster:

And then call:

$ oc apply -f example-infinispan.yaml

A more detailed tutorial on using the Infinispan Operator can be found here. We highly recommend you give it a go and let us know what you think.

Over the next few versions we'll be adding more features that make the most of the capabilities the Operator framework offers to automatically manage the health and status of running Infinispan clusters.

Please also note that as we work towards the 1.0 release, some things might change :)

Cheers
Galder