[jboss-dev] JGroups 2.6.0 CR1 released

Richard Achmatowicz rachmato at redhat.com
Sat Oct 27 13:50:46 EDT 2007


Hi everyone,

On behalf of the JGroups team, i'm pleased to announce that JGroups 
2.6.0 CR1 has been released!

The binary and source distribution can be downloaded from
http://sourceforge.net/project/showfiles.php?group_id=6081. The release
notes and change log are below.

Enjoy !

Richard Achmatowicz





Release Notes JGroups 2.6
=========================

Version: $Id: ReleaseNotes-2.6.txt,v 1.2 2007/09/20 08:26:57 belaban Exp $
Author: Bela Ban

JGroups 2.6 is still API-backwards compatible with previous versions 
(down to 2.2.5).

Below is a summary (with links to the detailed description) of the major 
new features.


Join and state transfer
-----------------------
[http://jira.jboss.com/jira/browse/JGRP-236]

We added another connect() method in JChannel, which combines joining a 
cluster and fetching the state from the
coordinator into one method. This is especially useful when we have 
FLUSH in the stack; thus we only have to use 1 rather
than 2 (1 for JOIN, 1 for state transfer) flush phases.


Improved ReplicatedHashMap
--------------------------
[http://jira.jboss.com/jira/browse/JGRP-581]

ReplicatedHashMap was converted to use generics, and 
java.util.concurrent.ConcurrentHashMap. It therefore supports 4 new
methods putIfAbsent(), remove() and the two replace() methods.
Developers can choose whether to use asynchronous or synchronous 
replication, and also pick the timeout for synchronous
calls.
This class supercedes ReplicatedHashtable and DistributedHashtable, 
which will be removed in version 3.0.


Reincarnation issue
-------------------
[http://jira.jboss.com/jira/browse/JGRP-130]

Using the GMS.reject_join_from_existing_member (default=false) property, 
we can reject a JOIN request from a reincarnated
member X who crashed, but has not yet been removed (e.g. due to a high 
timeout in FD). The member would have to retry,
and would only succeed when (the old) X has been excluded from the cluster.
For shunned members who use AUTO_RECONNECT, we loop until this is true 
[http://jira.jboss.com/jira/browse/JGRP-584].


New transport property 'bind_interface'
---------------------------------------
[http://jira.jboss.com/jira/browse/JGRP-579]

This can be used when multipler network interfaces have the *same* IP 
address, to define the interface to get used, e.g
bind_addr="192.168.2.5" bind_interface="eth1". Useful e.g. with IP 
Bonding on Linux.


Unicast bundling can be disabled at the transport level
-------------------------------------------------------
[http://jira.jboss.com/jira/browse/JGRP-429]

When dealing with latency sensitive applications, we may want to disable 
message bundling for *responses* (but not for
requests, as requests might carry large payloads). This can be done via 
the enable_unicast_bundling (default=true)
property.


RpcDispatcher can now filter responses as they arrive
------------------------------------------------------
[http://jira.jboss.com/jira/browse/JGRP-518]

There's a new callRemoteMethods() method taking an RspFilter, which is 
called whenever a response has been received,
allowing a request to return based on a condition (e.g. the first non 
null return value) before all responses
have been received.




Manual
------
The manual is online at 
http://www.jgroups.org/javagroupsnew/docs/manual/html/index.html


Performance
-----------
Links to performance tuning: 
http://wiki.jboss.org/wiki/Wiki.jsp?page=PerfTuning



Bug fixes
---------
AUTH: bug in 2.5 which caused AUTH to fail on second and subsequent JOIN 
attempts *if* the first
attempt was rejected by AUTH.
[http://jira.jboss.com/jira/browse/JGRP-577]

VIEW_SYNC: there was a regression in 2.5, which causes VIEW_SYNC 
messages to get dropped.
Note that this bug didn't occur in 2.4.x.
[http://jira.jboss.com/jira/browse/JGRP-586]

X.509 token not marshalled correctly. This affects ENCRYPT.
[http://jira.jboss.com/jira/browse/JGRP-576]

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

Sept 2007



------------------------------------------------------------------------

*Changes:*

Release Notes - JGroups - Version 2.6

** Bug
   * [JGRP-168] - RpcDispatcher fails after shun
   * [JGRP-347] - TCP bundling with FLUSH not working
   * [JGRP-364] - When using TCP_NIO, starting two nodes at the same 
time causes one of the nodes not to join group
   * [JGRP-384] - DistributedLockManager.unlock() throws an exception if 
one of the group members terminates.
   * [JGRP-446] - When using an extremely simple protocol stack the app 
will respond with a NullPointerException.
   * [JGRP-491] - Multiplexer should execute getState for all registered 
MuxChannel under one FLUSH phase
   * [JGRP-524] - FLUSH and merge: flush doesn't wrap entire merge process
   * [JGRP-537] - SMACK is broken
   * [JGRP-549] - ConnectionTable: spurious Connection instances on 
concurrent connects
   * [JGRP-560] - Message greater than 16286 bytes is not received on MaxOS
   * [JGRP-561] - MacOSX: tos value > 0 causes an exception
   * [JGRP-562] - Message.setObject() and Message.getObject() hide 
exceptions thrown during serialization/deserialization
   * [JGRP-564] - Unicast from within viewAccepted() callback throws 
exception in UNICAST
   * [JGRP-571] - all threads are daemon
   * [JGRP-573] - Draw blocks with FLUSH (join & state transfer)
   * [JGRP-574] - UnicastChannelTest doesn't work
   * [JGRP-575] - Join and state transfer violates virtual synchrony
   * [JGRP-576] - X509Token cannot be created
   * [JGRP-577] - AUTH: join rejection won't be received because UNICAST 
drops it
   * [JGRP-578] - It is possible to create a deadlock when trying to 
close a channel which is not yet connected
   * [JGRP-580] - Possible to get the channel into an incorrect and/or 
inconsistent state
   * [JGRP-582] - Timer task throws exception on task submission if task 
has already been cancelled
   * [JGRP-586] - VIEW_SYNC: GMS doesn't accept correct view because of 
incorrect header
   * [JGRP-591] - IpAddress.hashCode() not unique per ip/port
   * [JGRP-595] - Remove superfluous multiplexer warning - "Multiplexer: 
- service id-1 not currently running, discarding message"
   * [JGRP-599] - Exception in thread "main" java.lang.OutOfMemoryError: 
Java heap space running with a Multiplex channel
   * [JGRP-603] - FLUSH: problems with TCP and concurrent startup/shutdowns
   * [JGRP-607] - SEQUENCER: incorrect ordering on concurrent sends
   * [JGRP-610] - Problems with large return value and FC
   * [JGRP-611] - MergeTask GMS ConcurrentModificationException


** Feature Request
   * [JGRP-130] - Problems with reincarnation
   * [JGRP-189] - Validate that IP Bonding is supported
   * [JGRP-203] - Primary Partiton approach for handling of partitions
   * [JGRP-236] - Combine join and state transfer
   * [JGRP-413] - Replace separate threads with timer tasks
   * [JGRP-451] - Disabling a network interface and subsequent 
re-enabling it (on Windows) doesn't merge
   * [JGRP-504] - Support direct injection of MBeanServer into 
JChannelFactory
   * [JGRP-510] - NAKACK: adjust retransmission times based on statistics
   * [JGRP-518] - RpcDispatcher: filter for accepting incoming responses
   * [JGRP-519] - Replace BoundedList/List with java.util(.concurrent) 
class
   * [JGRP-570] - Complete thread naming for all channel threads
   * [JGRP-579] - New property: bind_interface
   * [JGRP-581] - Convert ReplicatedMap to ConcurrentHashMap from HashMap
   * [JGRP-583] - Create JChannel based on XML file and stack name 
(similar to MuxChannel creation)
   * [JGRP-585] - FD_SOCK: make fetching of cache asynchronous
   * [JGRP-588] - Possible to create a denial of service
   * [JGRP-608] - FLUSH not safe in simultaneous flush situation





** Task
   * [JGRP-337] - Make STOP_FLUSH phase in FLUSH asynchronous
   * [JGRP-339] - Remove thread for handling of merge views in 
Multiplexer once we have out-of-band messages
   * [JGRP-394] - Performance enhancements
   * [JGRP-414] - Backport of 2.5 to run on JDK 1.4
   * [JGRP-420] - Convert Event.FIND_INITIAL_MBRS to use concurrent stack
   * [JGRP-429] - Optionally disable message bundling for unicast messages
   * [JGRP-441] - TP.loopback might cause some issues with incorrectly 
purged messages in STABLE
   * [JGRP-462] - NAKACK: remove bundling for retransmitted messages
   * [JGRP-483] - Convert jgroups.sh tro run on cygwin and native UNIX 
environment
   * [JGRP-487] - Rewrite Retransmitter
   * [JGRP-528] - NAKACK: spurious retransmission requests    * 
[JGRP-530] - Demo
   * [JGRP-554] - GroupRequest should use concurrency friendly JDK 5 
collections
   * [JGRP-558] - Beef up JGroups documentation
   * [JGRP-559] - JGroups tutorial
   * [JGRP-566] - Write article about FLUSH and Multiplexer
   * [JGRP-569] - Ignore bind address for TCP server sockets
   * [JGRP-584] - Reconnection with TCP might not work well
   * [JGRP-590] - FC: messages > max_credits will block forever
   * [JGRP-596] - Document JOIN&state transfer, for JChannel and in the 
Multiplexer
   * [JGRP-597] - Allow generic view payload
   * [JGRP-598] - Simplify FLUSH
   * [JGRP-600] - Investigate Multiplexer locking scopes
   * [JGRP-602] - Update FLUSH diagrams for joining and for state transfer
   * [JGRP-609] - Javadoc JChannelFactory







More information about the jboss-development mailing list