

Release Notes JGroups 3.0.0
===========================


Author: Bela Ban

***********************************************************************
!! JGroups 3.0.0 is *not* API-backwards compatible with 2.x releases !!
***********************************************************************

For a list of API changes from 2.x to 3.0.0 see ./doc/API_Changes.txt at
https://github.com/belaban/JGroups/blob/master/doc/API_Changes.txt.

Below is a summary (with links to the detailed description) of the major new features, optimizations and bug fixes.




New features
============


API changes
-----------
[https://issues.jboss.org/browse/JGRP-206]

Not really a feature, however, this impacts application code using JGroups; some code will have to be changed as we
implemented a lot of the API changes we've always wanted to do, but couldn't due to backwards compatibility reasons.
API changes have really been the focus of 3.0; some work also went into optimizations for running in large clusters.
More optimization work will be done in 3.0.x and 3.1.
The changes are described in https://github.com/belaban/JGroups/blob/master/doc/API_Changes.txt.


CounterService
--------------
[https://issues.jboss.org/browse/JGRP-1366]

The is a cluster wide atomic counter, for details see the documentation at
http://www.jgroups.org/manual-3.x/html/user-building-blocks.html#CounterService


JChannel: input stream constructor
----------------------------------
[https://issues.jboss.org/browse/JGRP-1349]

A new JChannel can now be created by passing it an input stream to a config.


UNICAST / UNICAST2: close idle connections
------------------------------------------
[https://issues.jboss.org/browse/JGRP-1384]

Added property conn_expiry_timeout which closes idle connections after this timeout. Useful in large clusters, to
reduce memory (each connection has a retransmit table).


Add support for Amazon EC2 inter-region nodes (NAT support)
-----------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1388]

Added external_addr to UDP, FD_SOCK and STATE_SOCK. This allows nodes behind a NAT to be accessed from other members.




Optimizations
=============


Digest: remove low seqno and compress highest_delivered and highest_received seqnos
-----------------------------------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1331]


Umbrella JIRA for a number of optimizations:
- Removed low seqno from digest (memory and wire size reduction)
- Compressed longs and long sequences (wire size reduction)
  - E.g. NakackHeader sequence numbers, retransmission ranges
- JoinRsp wire size reduction
  - 1000-node JoinRsp: 40'000 --> 23'000 bytes


Discovery: don't send view back with discovery response
-------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1315]

The view is now omitted from the discovery response, this causes large messages sent by everyone in the cluster,
especially if we had a large cluster


Make merging more scalable / robust
-----------------------------------
[https://issues.jboss.org/browse/JGRP-1379]

Various optimizations with respect to large clusters, e.g. reducing the number of cluster wide calls made, decreasing
the size of various merge-related messages, better handling of concurrent merges etc.



Bug fixes
=========

UNICAST/UNICAST2: message can get delivered multiple times
----------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1347]

Edge case, happened very infrequently when a participant of a unicast connection closed its end of the connection
unilaterally.


Race condition in RspFilter
---------------------------
[https://issues.jboss.org/browse/JGRP-1193]


Incorrect state transfer with STREAMING_STATE_TRANSFER if use_default_transport=true
------------------------------------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1339]

This was renamed to STATE and JGRP-1339 was fixed.


BARRIER should not block unicast messages
-----------------------------------------
[https://issues.jboss.org/browse/JGRP-1341]


Error starting shared transport causes future channels using it to fail
-----------------------------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1356]


RspFilter: incorrect implementation can block an RPC
----------------------------------------------------
[https://issues.jboss.org/browse/JGRP-1330]

When an incorrect RspFilter doesn't terminate the RPC even though all responses have been received, the RPC is
nevertheless terminated.



Manual
======

The 3.x manual is at http://www.jgroups.org/manual-3.x/html/index.html.
The 2.x manual is at http://www.jgroups.org/manual/html/index.html.



The complete list of features and bug fixes can be found at http://jira.jboss.com/jira/browse/JGRP.


Bela Ban, Kreuzlingen, Switzerland
Vladimir Blagojevic, Toronto, Canada
Richard Achmatowicz, Toronto, Canada
Sanne Grinovero, Newcastle, Great Britain

Nov 2011

