It has taken us almost a year since the last major release (2.7 was released in January), but to our defense 2.8.0.GA contains a lot of new features and I think they are worth the wait. We also released a number of 2.6.x versions in 2009, which are used in the JBoss Enterprise Application Platform (EAP).
Before I get into a summary of some of the new features (a detailed list can be found at ), I'd like to thank all the developers, users and contributors of JGroups. Without this healthy community, producing code, bug reports, patches, documentation and user stories, JGroups wouldn't be anywhere close to where it is today !
So a big thanks to everyone involved, Happy Holidays and a great start into 2010 !
Here's a short list of features that made it into 2.8.0.GA (here are the release notes):
- Logical addresses: decouples physical addresses (which can change) from logical ones. Eliminates reincarnation issues. This alone is worth 2.8, as it eliminates a big source of problems !
- Logical names: allow for meaningful channel names, logical names stay with a channel for its lifetime, even after reconnecting it
- Improved merging / no more shunning: shunning was replaced by merging. Now we have a much simpler model: JOIN - LEAVE - MERGE. The merging algorithm was improved to take 'weird' (e.g. asymmetric) merges into account
- Better IPv6 support
- Better support for defaults for addresses: based on the type of the stack (IPv4, IPv6), we perform sanity checks and set default addresses of the correct type
- FILE_PING / S3_PING: new discovery protocols, file-based and Amazon S3 based. The latter protocol can be used as a replacement for GossipRouter on EC2
- Speaking of which: major overhaul of GossipRouter
- Ability to have multiple protocols of the same class in the same stack
- Ability to override message bundling on a per-message basis
- Much improved and faster UNICAST
- XSD schema for protocol configurations
- STREAMING_STATE_TRANSFER now doesn't need to use TCP, but can also use the configured transport, e.g. UDP
- RpcDispatcher: additional methods returning a Future rather than blocking
- Probe.sh: ability to invoke methods cluster-wide. E.g. run message stability on all nodes: probe.sh invoke=STABLE.runMessageGarbageCollection
- Removal of commons-logging.jar: JGroups now has ZERO dependencies !
- Configure logging level at runtime, e.g. through JMX (jconsole) or probe.sh, or programmatically. Use case: set logging for NAKACK from "warn" to "trace" for a unit test, then reset it back to "warn"
- Ability to set custom log provider. This allows for support of new logging frameworks (JGroups ships with support for log4j and JDK logging)
Bela, Vladimir and Richard