JavaGroups is a free and open source reliable group communication based on IP multicast and configurable protocol stack.NOTE: JavaGroups is developed, licensed and distributed under the terms of the GNU Library or Lesser General Public License (LGPL).What\'s New in This Release: [ read full changelog ]Bug:· [JGRP-444] - RequestCorrelator does not respect FLUSH.FlushHeader.BYPASS_FLUSH· [JGRP-557] - MuxChannel should not receive views after it disconnects or closes· [JGRP-589] - Closing channels rapidly leads to group instability· [JGRP-594] - Intermittently, a Null pointer exception is thrown when trying to remove non-existent entry in ReplicatedHashMap· [JGRP-604] - ENCRYPT: issues with Blowfish· [JGRP-620] - RpcDispatcher.callRemoteMethods() hangs· [JGRP-621] - JOIN_RSP should interrupt thread blocking down on findInitialMembers· [JGRP-622] - Stop flush should be invoked by cluster members individually when flush coordinator leaves· [JGRP-623] - First event in both Channel and MuxChannel should always be BLOCK and the last event should be UNBLOCK· [JGRP-624] - Simultaneous connect and state transfer reorders events· [JGRP-626] - TCP ConnectionTable threads should be started after TP threads· [JGRP-627] - Enabling JMX when using multiplexer.· [JGRP-629] - Streaming state transfer repeats set state events in highly concurrent situation· [JGRP-630] - Setting option on MuxChannel (with Channel.setOpt(Channel.LOCAL,Boolean.FALSE) ) results in all MuxChannel not receiving any own messages· [JGRP-633] - Connection table should remove connection that throws Exception· [JGRP-635] - ConcurrentModificationException in FLUSH· [JGRP-636] - NullPointerException in Multiplexer· [JGRP-642] - incorrect log level in PersistenceFactory.getInstance()· [JGRP-643] - ClassConfigurator.getInstance() not thread safe· [JGRP-646] - ConnectionTable problem after a while in 2 node cluster· [JGRP-648] - ClassCastException in IpAddress· [JGRP-649] - FC: NPE if sender of credits is null· [JGRP-652] - ReplicatedHashMapTest fails· [JGRP-654] - Scheduler thread goes in infinite loop after getting interrupted by the priority task· [JGRP-655] - Channel#connect should stop stack in case it failed· [JGRP-657] - Shunning does not work for Multiplexer· [JGRP-662] - max_bundle_size checks should only happen when bundling is enabled (either via conf file or JMX)· [JGRP-664] - CopyOnWrite collections should be synchronized· [JGRP-665] - Merge and Multiplexer have a race issue· [JGRP-666] - The thread is blocked when join the group.· [JGRP-667] - Occasionally, messages get too large for the UDP transport· [JGRP-668] - Deadlock condition in BARRIER· [JGRP-669] - Shared transport: NPE in up() when loopback is true· [JGRP-671] - JMX: ReceivedBytes and ReceivedMessages are not updated correctly· [JGRP-673] - Can\'t create a second version of a shared transport channel· [JGRP-674] - ChannelFactory#createMultiplexerChannel bundled state transfer is not symmetric· [JGRP-675] - Shared transport: registered channel is not correctly unregistered on disconnect()· [JGRP-676] - Infinite NPE/error loop in ClientGmsImpl.java· [JGRP-677] - Another NPE in ClientGmsImpl· [JGRP-678] - NPE in NAKACK under startup load· [JGRP-680] - receive_on_all_interfaces requires every NIC to be configured· [JGRP-681] - Incorrect informations using JMX on MuxChannel· [JGRP-682] - TUNNEL: reconnector thread is not started in certain scenarios· [JGRP-686] - Inconsistent Channel#getState return semantics between byte and streaming state transfer· [JGRP-687] - Member splits into own group and will not merge· [JGRP-689] - Shared transport: \'members\' and \'view\' variables are not correctly updated· [JGRP-690] - Thread interrupt status is not always cleared by default· [JGRP-691] - JGroup crashes JBOSS applications with different error messages· [JGRP-699] - NAKACK: merging of digests is incorrect· [JGRP-702] - GossipClient: make socket creation non-blocking· [JGRP-703] - TCPGOSSIP: parallelize discovery for multiple GossipRouters· [JGRP-704] - Configurator.startProtocolStack() throws NPE if cluster_name is null· [JGRP-706] - with dynamic keys in ENCRYPT, a node taking over coordinator can block itself from taking over the view· [JGRP-707] - stats logic NPE in NAKACK· [JGRP-709] - FC.java was not handling view changes sent down from above· [JGRP-721] - timeout and num_ping_requests hardcoded in Discovery· [JGRP-724] - FD: temporary suspect (followed by unsuspect) leads to incorrect pingable_mbrs· [JGRP-730] - JChannel.connect(): check if already connected· [JGRP-732] - MPING: OutOfMemory exception can cause receiver thread to terminate· [JGRP-736] - GMS.ViewHandler.run() view bundling not correctly checking if requests can be processed together...· [JGRP-737] - Shared transport protocols use stack field from first channel created· [JGRP-742] - UNICAST connection trashing during merge· [JGRP-746] - FD: messages from members other than ping_dest causes missing-heartbeat count to be reset· [JGRP-750] - Deadlock between GroupRequest and FLUSH during concurrent startup.· [JGRP-751] - ReplicatedHashMap state becomes inconsistent after merge· [JGRP-752] - JGroups leaks thread context classloader to internal threads· [JGRP-754] - FC: ConcurrentModificationException in handleViewChange()· [JGRP-756] - FLUSH still needs work· [JGRP-759] - FLUSH: GMS potential problem· [JGRP-762] - Protocol: setProperties() mostly no-op but still called by users· [JGRP-765] - @Property: setting and getting properties need to set/get the actual variables· [JGRP-766] - Contradicting \"discarded message from non-member \" WARN message· [JGRP-767] - JChannel: open() fails· [JGRP-768] - UDP: when ip_mcast=false, the destination of a Message is not null· [JGRP-770] - Concurrent startup of many channels doesn\'t stabilize· [JGRP-773] - AUTH: no configuration supported as result of switch to @Property· [JGRP-774] - STATE_TRANSFER: state transfer broken for large states· [JGRP-775] - Race condition in RouterStubTest· [JGRP-779] - RpcDispatcher.testLargeReturnValue() always fails with TCP stack· [JGRP-780] - UNICAST: regular message not delivered (in some cases) until new message arrives· [JGRP-781] - NAKACK: regular message not delivered (in some cases) until new message arrives· [JGRP-782] - DistributedTree hangs after updating new joiner· [JGRP-787] - UNICAST over TCP with xmit_off=true: sending message in synchronized block leads to deadlocks· [JGRP-788] - concurrent startup of multiple channels with shared transport is very slow, occasionally wedges.· [JGRP-793] - TP: setting an OOB thread pool shuts it down· [JGRP-794] - FD_SOCK: un-suspected members are not added back to pingable_mbrs· [JGRP-798] - unable to setup the protocol stack on AIX· [JGRP-800] - FRAG/FRAG2: fragments from X are not cleared if X crashes· [JGRP-805] - Message getHeaders not protected from concurrent modification· [JGRP-807] - Configurator.removeProtocol() is wrong for top protocol· [JGRP-810] - Message.setFlag is using addition instead of bit-wise or· [JGRP-811] - JBoss 4.2.2. JGroup - org.jgroups.ChannelException: unable to setup the protocol stack· [JGRP-812] - NakReceiverWindow: possible race condition· [JGRP-817] - MethodCall: match between formal parameters and actual arguments fails if an argument is a subtype of a parameter· [JGRP-818] - JChannelFactory fails to parse configuration and gives a contradictory error message· [JGRP-821] - Starting VERIFY_SUSPECT timer thread causes java.lang.IllegalThreadStateException· [JGRP-823] - TCCPING: \"failed creating initial list of hosts\" fails stack startup· [JGRP-824] - PING.init() hard codes the GossipRouter connection timout to 1000 (1 second)· [JGRP-827] - Performance regression· [JGRP-829] - NAKACK: use CAS to determine whether to acquire the lock in NAKACK· [JGRP-830] - viewAccepted is not always reported to all group members· [JGRP-831] - SEQUENCER: incorrect order of delivery when thread pool is used· [JGRP-841] - FD_SOCK graceful leave of B triggers a suspect event· [JGRP-842] - GMS: graceful leave takes a long time· [JGRP-843] - Simulator initialization processes stack events before stack initialised· [JGRP-845] - FD_SOCK: member is suspected and ignores suspicion· [JGRP-849] - Concurrent connect of multiple channels with shared transport fails· [JGRP-850] - Fix output leak in testNG test reporting· [JGRP-851] - Integrate commons-logging output with testNG test case reports· [JGRP-855] - java.lang.IllegalStateException: Could not flush the cluster and proceed with state retrieavalFeature Request:· [JGRP-375] - Paralellize discovery phase· [JGRP-408] - Expose classes, attributes and operations via @ManagedResource, @ManagedAttribute and @ManagedOperation· [JGRP-410] - Convert to TestNG· [JGRP-494] - Investigate marshalling format to simplify wireshark / ethereal plugin· [JGRP-605] - Dynamically adjust min_threads in thread pools· [JGRP-628] - Discovery: add cluster name to discovery request to be able to discard responses from different clusters· [JGRP-631] - TP: transports shared within the same JVM· [JGRP-632] - Ability to replace thread pools with custom thread pools· [JGRP-634] - Ability to add stacks to JChannelFactory· [JGRP-637] - Reincarnation reloaded: prevent port number reuse through persistence· [JGRP-644] - Shared transport: add cluster name to thread name for easier logging· [JGRP-650] - Probe: add handling for \"INFO\"· [JGRP-656] - Flag to determine when a message is considered delivered· [JGRP-661] - Allow flushing of a cluster subset· [JGRP-663] - Multiplexer does not respect Message OOB flag· [JGRP-684] - PING: allow for multiple GossipRouters to get pinged for initial membership discovery· [JGRP-710] - VIEW_SYNC needs more statistics· [JGRP-711] - BARRIER jmx beans not exposed· [JGRP-713] - UNICAST: eager acks· [JGRP-714] - MessageDispatcher log message needs more information· [JGRP-717] - Message ordering protocol for TCP unicasts· [JGRP-723] - Use Java annotations to automatically set protocol properties· [JGRP-725] - FRAG: option to discard output stream, so we don\'t keep large buffers around· [JGRP-728] - TP: add ID to individual threads in thread pool· [JGRP-731] - MPING: discard packets whose length is not 4 or 16· [JGRP-733] - JMX Registration of shared transport channels· [JGRP-735] - Discovery: ignore discovery responses from clients· [JGRP-739] - check all bind_address against NetworkInterface.getByInetAddress() to see if it exists on the machine· [JGRP-753] - cache object returned from Message.getObject() (deserialization occurs on every call)· [JGRP-769] - RpcDispatcher should have a no-arg public constructor· [JGRP-778] - Transport: discard messages sent from self if Channel.LOCAL option is false· [JGRP-804] - FC: max time to block until message is sent· [JGRP-832] - Transport: make probe pluggable· [JGRP-834] - Protocol: dumpStats() should dump all JMX information· [JGRP-836] - Eliminate Linux cross-talk in MPING· [JGRP-852] - GossipRouter/GossipClient: make sockets use SO_TIMEOUT and SO_LINGER· [JGRP-857] - UDP transport to attempt to validate ability to receive own multicastPatch:· [JGRP-719] - Allow ReplicatedHashMap to delegate to any ConcurrentMapTask:· [JGRP-556] - Consolidate thread pools· [JGRP-606] - Use same properties for start_port/bind_port and end_port/port_range· [JGRP-625] - Deprecate GMS.join_retry_timeout· [JGRP-638] - Look at IP multicasting and IPv6· [JGRP-639] - UDP: bind MulticastSocket to multicast address· [JGRP-651] - JChannel: set auto_reconnect and auto_getstate to true by default· [JGRP-670] - Replace StringBuffer with StringBuilder· [JGRP-672] - jg-magic-map.xml: simplification· [JGRP-683] - Provide hooks to enable creation of all daemon threads· [JGRP-688] - Need to report root causes to end user as exception in code· [JGRP-700] - FLUSH: flushing should span merge· [JGRP-701] - Investigate making FD_ALL the default failure detection protocol· [JGRP-712] - Include shared transport configuration in test suite· [JGRP-716] - TCP based configs need UNICAST for correct ordering· [JGRP-722] - JChannel: if auto_get_state is set to true, but no state transfer protocol is present, then don\'t get state· [JGRP-734] - Ship bouncycastle.jar without IDEA code· [JGRP-738] - Transport: create receiver threads on CONNECT, not on start()· [JGRP-741] - TCP: create receiver threads on connect() not start()· [JGRP-744] - Provide shared transport migration manual/wiki· [JGRP-745] - FD_SOCK: add timeout to create socket to peer· [JGRP-749] - Simplify view casting sequence· [JGRP-755] - ProtocolStack: verify that TimeScheduler gets garbage collected on redeployment· [JGRP-757] - Merge Event.INFO and Event.CONFIG into one event· [JGRP-758] - NakReceiverWindow: analyze concurrency between adding and removing of messages· [JGRP-760] - Verify that JGroups uses IP multicasting correctly· [JGRP-761] - Fix NAKACK unit test· [JGRP-764] - Thread context classloaders: add ability to set TCCL when thread is created and unset it when thread is released· [JGRP-771] - Simplify UDP· [JGRP-772] - Simplify TP· [JGRP-777] - Revisit multicast socket creation code· [JGRP-783] - STABLE: last message dropped issue ?· [JGRP-791] - Consider a simpler shared transport creation, management, and destruction· [JGRP-795] - TP: setting a thread factory should set the factory in the corresponding thread pool too· [JGRP-796] - RpcDispatcher.Marshaller: use Buffer instead of byte[]· [JGRP-797] - Document all protocol properties· [JGRP-801] - FRAG2: simplification· [JGRP-802] - FRAG2: get rid of copy when using an offset and length in a message· [JGRP-806] - Message: investigate making the overhead for headers smaller· [JGRP-813] - Performance enhancements· [JGRP-819] - Source jar should be released to Maven2 repo as well· [JGRP-820] - Change default diagnostics address to 224.0.75.75· [JGRP-828] - RpcDispatcher/MessageDispatcher: deprecate deadlock detection· [JGRP-846] - ExposedByteArrayOutputStream / ExposedDataOutputStream: override synchronized methods· [JGRP-847] - ExposedByteArrayInputStream / ExposedDataInputStream: override synchronized methods with unsynchronized ones· [JGRP-854] - Unit tests: make sure GossipRouter related tests start GossipRouter on different ports· [JGRP-856] - Confirm that marshalling works between 32 bit and 64 bit machines· [JGRP-861] - GossipRouter: make backlog for server socket connections configurableSub-task:· [JGRP-740] - Utilities.gossipRouter cannot be static· [JGRP-776] - NAKACK: OOB messages should never have to acquire the NakReceiverWindow lock