Monday, July 29, 2013

First JGroups release under Apache License 2.0

I'm happy to announce that I just released 3.4.0.Alpha1, which is the first release under the Apache License 2.0 !

In order to change the license, I had to track down all contributors who still have code in the code base and get their permissions [1], which was time consuming.

Given that JGroups came into existence in 1998, even though a lot of code has since been added/removed/replaced, there are still quite a number of people who still have contributions in the current master.

Finding some of those folks turned out to be hard. I ran into a few cases of abandoned email addresses, and sometimes googling for "firstname lastname" led me to people with the same name but no connection to JGroups whatsoever...

Anyway, the change is done now and I wanted to release a first alpha under AL 2.0 as soon as possible, so other projects can start using JGroups with the new license.

Although 'alpha' suggests bad code quality, the opposite is actually true: this release is very stable, at least as stable as the latest 3.3.x. The major changes are listed below.
Enjoy !

RELAY2: allow for more than one site master

If we have a lot of traffic between sites, having more than 1 site master 
increases performance and reduces stress on the single site master

Kerberos based authentication

New AUTH plugin contributed by Martin Swales. Experimental, needs more work

Probe now works with TCP too

If multicasting is not enabled, can be started as follows: -addr -port 12345
, where is the physical address:port of a node.
Probe will ask that node for the addresses of all other members and 
then send the request to all members.


UNICAST3: ack messages sooner

A message would get acked after delivery, not reception. This was changed, 
so that long running app code would not delay acking the message, which 
could lead to unneeded retransmission by the sender.

Bug fixes

FRAG/FRAG2: incorrect ordering with message batches

Reassembled messages would get reinserted into the batch at the end instead of 
at their original position

RSVP: incorrect ordering with message batches

RSVP-tagged messages in a batch would get delivered immediately,
instead of waiting for their turn

Memory leak in STABLE

Occurred when send_stable_msg_to_coord_only was enabled.

NAKACK2/UNICAST3: problems with flow control

If an incoming message sent out other messages before returning, it could 
block forever as new credits would not be processed.
Caused by a regression (removal of ignore_sync_thread) in FlowControl.

AUTH: nodes without AUTH protocol can join cluster

If a member didn't ship an AuthHeader, the message would get passed up
instead of rejected.

LockService issues

Bug fix for concurrent tryLock() blocks and various optimizations.

Logical name cache is cleared, affecting other channels

If we have multiple channels in the same JVM, the a new view in one channel
triggers removal of the entries of all other caches


The manual is at

The complete list of features and bug fixes can be found at

Bela Ban, Kreuzlingen, Switzerland
Aug 2013



  1. I still see references to the LGPL license in the JGroups source files for this new release.

  2. where ? In jgroups.bnd ? Fixed

  3. Thanks for your help. I found the LGPL reference in these files:



    When will a new download be available?

  4. OK, removed the LGPL references, thanks.
    I'll release an alpha2 as soon as I have a workable impl of FORK.

  5. I see a new download entry for 3.4.0.Alpha2 but the source and jar file for this entry point to the 3.2.11 build.

  6. Oops, sorry, uploaded the wrong files ! Fixed now, thanks for noticing !