Tuesday, 08 December 2015
Infinispan 8.1.0.Final is out!
Dear all,
We are proud to announce the release of Infinispan 8.1.0.Final, codenamed “Mahou”, the culmination of four months of active development.
This release brings many enhancements but most of all we would like to highlight the new Infinispan Web Management Console which is finally ready for prime time. We have gone through quite a few iterations in UI/UIX design to make sure the majority of use case scenarios are covered. In 8.2 release we are going to add further enhancements to configuring and managing endpoints, server tasks, cache containers and others. Until then, have a look, try it out and do not forget to provide us with your feedback. As a teaser, we provide you with the following video showcasing the new admin console.
Discover all the cool new features here or read the full release notes here. You can get this release from ourhttp://infinispan.org/download/[ download page] as usual. If you are new to Infinispan you can learn how to use it and help us continually improve it.
Enjoy and stay tuned for more posts covering the new features!
The Infinispan team
Tags: release console final
Wednesday, 25 November 2015
Infinispan 8.1.0.CR1 (and 8.0.2.Final)
Dear all,
we have two releases for you today:
Infinispan 8.1.0.CR1 brings more refinement to the server management console, many improvements to query, statistics, management, security improvements and more.
Infinispan 8.0.2.Final brings a number of stabilization bug fixes. Upgrading is highly recommended.
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.
Tags: release
Tuesday, 10 November 2015
Infinispan 8.1.0.Beta1
Dear all,
The first Beta release of Infinispan 8.1 is now available for use. Our new admin console has gone through quite a lot of changes recently. As mentioned before the new console allows for administration of Infinispan cluster nodes and now we would like to show some screenshots of a running server in the below gallery.
We would greatly appreciate your feedback regarding the admin console web application, let’s shape it together!
For all other improvements as well as bug fixes you can see the release notes. Infinispan 8.1 Final is still on track for the end of this month. If you are new to Infinispan you can learn how to use it, and help us continually improve it.
Cheers! Will
Tags: beta release console
Monday, 19 October 2015
Infinispan 8.1.0.Alpha2
Dear all,
The second Alpha release of Infinispan 8.1 is now available for use. Our new admin console has gone through quite a lot of changes recently. As mentioned before the new console allows for administration of Infinispan cluster nodes and now we would like to show some screenshots of a running server in the below gallery.
We would greatly appreciate your feedback regarding the admin console web application, let’s shape it together!
For all other improvements as well as bug fixes you can see the release notes. Infinispan 8.1 Final is still on track for the end of this month. If you are new to Infinispan you can learn how to use it, and help us continually improve it.
Cheers! Will
Tags: release alpha
Wednesday, 23 September 2015
Infinispan 8.1.0.Alpha1
Dear all,
release early release often ! The first Alpha release of Infinispan 8.1 is out. As is traditional, it is codenamed after a beer. This time it is "Mahou" !
The highlights for 8.1.0.Alpha1 are:
ISPN-5781 - Upgrade server to WildFly 10.0.0.CR1 ISPN-5742 - Add global persistent state path configuration
Read the complete release notes
We’re working on lots of cool things for 8.1 Final due at the end of November, so be sure to check our roadmap to see what’s coming.
Enjoy !
The Infinispan team
Tags: release alpha
Monday, 14 September 2015
New Redis Cache Store Introduced in Infinispan 8
A new cache store for storage of cache data within the Redis key/value server has been introduced with Infinispan 8. This allows all storage of cache data to be stored in a centralised Redis deployment which all Infinispan clients access.
The cache store supports 3 Redis deployment topologies. They are, single server, Sentinel and cluster (Redis v3 required). Redis versions 2.8+ and 3.0+ are currently supported.
Data expiration and purging is handled via Redis itself, reducing workload from Infinispan servers to manually delete cache entries.
Topologies
Single Server
In a single server deployment, the cache store is given the location of a Redis master server with which it connects to directly to handle all data storage. Using this topology, Redis has no fault tolerance unless a custom solution is built on top of Redis. To declare a single server local cache store:
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd
urn:infinispan:config:store:redis:8.0 http://www.infinispan.org/schemas/infinispan-cachestore-redis-config-8.0.xsd"
xmlns="urn:infinispan:config:8.0"
xmlns:redis="urn:infinispan:config:store:redis:8.0" >
<cache-container>
<local-cache>
<persistence passivation="false">
<redis-store xmlns="urn:infinispan:config:store:redis:8.0"
topology="server" socket-timeout="10000" connection-timeout="10000">
<redis-server host="server1" />
<connection-pool min-idle="6" max-idle="10" max-total="20" min-evictable-idle-time="30000" time-between-eviction-runs="30000" />
</redis-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
Note the topology attribute is declared as server. This is needed to ensure a single server Redis topology is applied by the cache store. Only a single Redis server need be declared (only the first server will be used if multiple servers are declared) and the port will default to the Redis port 6379, but can be overridden using the port attribute. All connections are handled via a connection pool, which can optionally also test the validity of a connection on creation, lease, return from and when idling in the connection the pool.
Sentinel
The Sentinel topology relies on Redis Sentinel servers to connect to a Redis master server. Here, Infinispan connects to Redis Sentinel servers, requesting a master server name, then gets forwarded on to the correct location of the Redis master server. This topology gives resilience via Redis Sentinel, providing failure detection and automatic failover of Redis servers.
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd
urn:infinispan:config:store:redis:8.0 http://www.infinispan.org/schemas/infinispan-cachestore-redis-config-8.0.xsd"
xmlns="urn:infinispan:config:8.0"
xmlns:redis="urn:infinispan:config:store:redis:8.0" >
<cache-container>
<local-cache>
<persistence passivation="false">
<redis-store xmlns="urn:infinispan:config:store:redis:8.0"
topology="sentinel" master-name="mymaster" socket-timeout="10000" connection-timeout="10000">
<sentinel-server host="server1" />
<sentinel-server host="server2" />
<sentinel-server host="server3" />
<connection-pool min-idle="6" max-idle="10" max-total="20" min-evictable-idle-time="30000" time-between-eviction-runs="30000" />
</redis-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
For a Sentinel deployment, the topology attribute changes to sentinel. A master name must also be specified to select the correct Redis master required as Sentinel can monitor multiple Redis master servers. The Sentinel server is declared using a sentinel-server XML tag, which you’ll notice is different to the main Redis servers used in single server and cluster topologies. This is to allow defaulting of the Sentinel port to 26379 if not declared. At least one Sentinel server must be declared, though if you run more Sentinel servers, they should all be declared too for the benefit of failure detection of the Sentinel servers themselves.
Cluster
A cluster topology gives Infinispan the ability to connect to a Redis cluster. One or more cluster nodes are declared to infinispan (the more the better) which are then used to store all data. Redis cluster supports failure detection so if a master node in the cluster fails, a slave takes over. Redis v3 is required to run a Redis cluster.
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd
urn:infinispan:config:store:redis:8.0 http://www.infinispan.org/schemas/infinispan-cachestore-redis-config-8.0.xsd"
xmlns="urn:infinispan:config:8.0"
xmlns:redis="urn:infinispan:config:store:redis:8.0" >
<cache-container>
<local-cache>
<persistence passivation="false">
<redis-store xmlns="urn:infinispan:config:store:redis:8.0"
topology="cluster" socket-timeout="10000" connection-timeout="10000">
<redis-server host="server1" port="6379" />
<redis-server host="server2" port="6379" />
<redis-server host="server3" port="6379" />
<connection-pool min-idle="6" max-idle="10" max-total="20" min-evictable-idle-time="30000" time-between-eviction-runs="30000" />
</redis-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
For cluster deployments, the topology attribute must change to cluster. One or more Redis cluster nodes must be declared to access the cluster which uses the redis-server XML tag. Note that when operating a cluster, database IDs are not supported.
Multiple Cache Stores, Single Redis Deployment
Redis single server and Sentinel deployments support the option of database IDs. A database ID allows a single Redis server to host multiple individual databases, referenced via an integer ID number. This allows Infinispan to support multiple cache stores on the same Redis deployment, isolating the data between the stores. Redis cluster does not support the database ID. A database ID is defined using the database attribute on the redis-store XML tag.
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd
urn:infinispan:config:store:redis:8.0 http://www.infinispan.org/schemas/infinispan-cachestore-redis-config-8.0.xsd"
xmlns="urn:infinispan:config:8.0"
xmlns:redis="urn:infinispan:config:store:redis:8.0" >
<cache-container>
<local-cache>
<persistence passivation="false">
<redis-store xmlns="urn:infinispan:config:store:redis:8.0"
topology="sentinel" master-name="mymaster" socket-timeout="10000" connection-timeout="10000" database="5">
<sentinel-server host="server1" />
<sentinel-server host="server2" />
<sentinel-server host="server3" />
<connection-pool min-idle="6" max-idle="10" max-total="20" min-evictable-idle-time="30000" time-between-eviction-runs="30000" />
</redis-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
Redis Password Authentication
In order to secure access to a Redis server, a password can optionally be used in Redis. This then requires the cache store to declare the password when connecting. The password is added via a password attribute on the redis-store XML tag.
<?xml version="1.0" encoding="UTF-8"?>
<infinispan
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:8.0 http://www.infinispan.org/schemas/infinispan-config-8.0.xsd
urn:infinispan:config:store:redis:8.0 http://www.infinispan.org/schemas/infinispan-cachestore-redis-config-8.0.xsd"
xmlns="urn:infinispan:config:8.0"
xmlns:redis="urn:infinispan:config:store:redis:8.0" >
<cache-container>
<local-cache>
<persistence passivation="false">
<redis-store xmlns="urn:infinispan:config:store:redis:8.0"
topology="sentinel" master-name="mymaster" socket-timeout="10000" connection-timeout="10000" password="mysecret">
<sentinel-server host="server1" />
<sentinel-server host="server2" />
<sentinel-server host="server3" />
<connection-pool min-idle="6" max-idle="10" max-total="20" min-evictable-idle-time="30000" time-between-eviction-runs="30000" />
</redis-store>
</persistence>
</local-cache>
</cache-container>
</infinispan>
Tags: release redis cache store
Thursday, 10 September 2015
Infinispan 8.0.1.Final (and 7.2.5.Final)
Dear all,
we’ve just cooked two new point releases of Infinispan to address a number of issues.
The highlights for 8.0.1.Final are:
-
ISPN-5717 Notify continuous query also when entry expires
-
ISPN-5591 Simple local cache without interceptor stack. This is an extremely fast cache with very few features (no transactions, no indexing, no persistence, etc). Its primary intendend usage is as a 2nd-level cache for Hibernate, but we’re sure you can find lot’s of other applications for it, provided you don’t require all the bells and whistles that come with our fully-fledged caches.
-
Bump Hibernate Search to 5.5.0.CR1 and Lucene to 5.3.0
-
A number of query fixes, including indexing and searching of null non-string properties, aggregation expressions in orderBy, filter with both 'where' and 'having' in the same query
-
ISPN-5731 Cannot use aggregation expression in orderBy
-
Read the complete release notes
The highlights for 7.2.5.Final are:
-
ISPN-5607 Preemptively invalidate near cache after writes
-
ISPN-5670 Hot Rod server sets -1 for lifespan or maxIdle as default
-
ISPN-5677 RemoteCache async methods use flags
-
ISPN-5684 Make getAll work with compatibility mode in DIST
-
Read the complete release notes
Enjoy !
The Infinispan team
Tags: release
Monday, 31 August 2015
Infinispan 8.0.0.Final
Dear all,
it is with the greatest pleasure that we announce the first stable release of Infinispan 8.
The number "8" is quite special for Infinispan for two reasons:
-
it has been embedded in our logo, disguised as the infinity symbol, since the very beginning
-
it marks the move of the Infinispan code-base to Java 8
So without further ado, let’s see what Infinispan 8 brings to the table:
-
A new functional-style API for interacting with caches which takes advantage of all the language goodies introduced by Java 8, such as lambdas, Optional, CompletableFuture, etc. We have already started a blog series describing the API, and the reasoning behind it and we want your opinion too.
-
Support for the Java 8’s Streams API which, in the context of Infinispan, becomes fully distributed: parallel streams become truly parallel !
-
Indexing and querying received a host of new features: Continuous querying, grouping and aggregation, simultaneous querying on both indexed and non-indexed fields.
-
Expired entries now trigger events, thus allowing your applications to perform operations like refresh from an external datasource, archiving, etc.
-
Eviction is now memory size-aware, so you can define the maximum amount of memory you want a cache to grow to, before entries are removed or passivated to an external store.
-
Infinispan Server now fully supports domain mode, and that is now the recommended way for clustered operations.
-
We have a new management console for Infinispan Server which will greatly simplify configuration and monitoring without requiring an external console. This is evolving rapidly and we will be adding quite a lot of functionality in the following months.
-
We are working hard to reduce the number of resources used by Infinispan and removing many internal locks and increasing concurrency. This work is ongoing and you will see further improvements during the 8.x series.
-
We now provide integrations with Spark and Hadoop so that you can use all of the wonderful processing tools from those ecosystem against data stored in Infinispan.
-
Both the declarative and programmatic configuration API have been enhanced to support templates and configuration inheritance. It should make your life easier when you need many caches configured in the same way.
-
A cache store for Redis implemented by Simon Paulger. Thanks for the contribution !
-
Lots more… Look at the resolved issues to find out what else we’ve fixed.
We have also made some significant changes to our website:
-
clearer layout
-
brand new use-case-driven examples
-
the download page for cache stores are now clearly divides core cache stores (i.e. the ones included in Infinispan release), extra stores (i.e. ones that need to be downloaded separately) and the version compatibility
-
project references, i.e. other open-source projects which use Infinispan
The 8.0 release marks only the beginning of a number of exciting things we will be working on, so please check out our roadmap.
An important note: we will be maintaining the 7.2 branch of Infinispan for quite a while, so, if you are still stuck with Java 7, you shouldn’t worry about upgrading just yet… unless you want to use the new stuff :)
Tags: release
Monday, 17 August 2015
Infinispan Spark connector 0.1 released!
Dear users,
The Infinispan connector for Apache Spark has just been made available as a Spark Package!
What is it?
The Infinispan Spark connector allows tight integration with Apache Spark, allowing Spark jobs to be run against data stored in the Infinispan Server, exposing any cache as an RDD, and also writing data from any key/value RDD to a cache. It’s also possible to create a DStream backed by cache events and to save any key-value DStream to a cache.
The minimum version required is Infinispan 8.0.0.Beta3.
Giving it a spin with Docker
A handy docker image that contains an Infinispan cluster co-located with an Apache Spark standalone cluster is the fastest way to try the connector. Start by launching the container that hosts the Spark Master:
And then run as many worker nodes as you want:
Using the shell
The Apache Spark shell is a convenient way to quickly run jobs in an interactive fashion. Taking advantage of the fact that Spark is already installed in the docker containers (and thus the shell), let’s attach to the master:
Once inside, a Spark shell can be launched by:
That’s all it’s needed. The shell grabs the Infinispan connector and its dependencies from spark-packages.org and exposes them in the classpath.
Generating data and writing to Infinispan
Let’s obtain a list of words from the Linux dictionary, and generate 1k random 4-word phrases. Paste the commands in the shell:
From the phrases, we’ll create a key value RDD (Long, String):
To save to Infinispan:
Obtaining facts about data
To be able to explore data in the cache, the first step is to create an infinispan RDD:
As an example job, let’s calculate a histogram showing the distribution of word lengths in the phrases. This is simply a sequence of transformations expressed by:
This pipeline yields:
2 chars words: 10 occurrences 3 chars words: 37 occurrences 4 chars words: 133 occurrences 5 chars words: 219 occurrences 6 chars words: 373 occurrences 7 chars words: 428 occurrences 8 chars words: 510 occurrences 9 chars words: 508 occurrences 10 chars words: 471 occurrences 11 chars words: 380 occurrences 12 chars words: 309 occurrences 13 chars words: 238 occurrences
…
Now let’s find similar words using the Levenshtein distance algorithm. For that we need to define a function that will calculate the edit distance between two strings. As usual, paste in the shell:
Empowered by the Levenshtein distance implementation, we need another function that given a word, will find in the cache similar words according to the provided maximum edit distance:
Sample usage:
Where to go from here
And that concludes this first post on Infinispan-Spark integration. Be sure to check the Twitter demo for non-shell usages of the connector, including Java and Scala API.
And it goes without saying, your feedback is much appreciated! :)
Tags: release spark
Tuesday, 11 August 2015
Infinispan 7.2.4.Final out including fixes for async store, Hot Rod...etc
Infinispan 7.2.4.Final is just out containing some important fixes in areas such as Hot Rod client and server, async cache store, key set iteration, as well as a Hibernate HQL parser upgrade. You can find more details about the issues fixed in our detailed release notes.
Happy hacking :)
Galder
Tags: release hotrod hql cache store