JavaGroups Changelog

What's new in JavaGroups 3.6.8

Feb 26, 2016
  • NEW FEATURES:
  • Probe improvements:
  • Proper discarding of messages from a different cluster with '-cluster' option.
  • Less information per cluster member; only the requested information is returned
  • Detailed information about RPCs (number of sync, async RPCs, plus timings)
  • Optimizations:
  • DONT_BUNDLE and OOB: messages are not removed from batch when execution fails
  • Messages are not removed from batch when execution fails
  • Rejections are not counted to num_rejected_msgs
  • COMPRESS: removed 1 byte[] buff copy
  • An unneeded copy of the compressed payload was created when sending and compressing a message. The fix should reduce memory allocation pressure quite a bit.
  • RpcDispatcher: don't copy the first anycast
  • When sending an anycast to 3 destinations, JGroups sends a copy of the original message to all 3. However, the first doesn't need to be copied (less memory allocation pressure). For an anycast to a single destination, no copy is needed, either.
  • Compaction of in-memory size:
  • Reduced size of Rsp (used in every RPC) from 32 -> 24 bytes
  • Request/UnicastRequest/GroupRequest: reduced size
  • RequestCorrelator.done() is slow
  • Used by RpcDispatcher. Fixed by eliminating the linear search done previously.
  • BUG FIXES:
  • FILE_PING: consider special characters in file names
  • Names like "A/web-cluster" would fail on Windows as the slash char ('/') was treated as demarcation char in some clouds.

New in JavaGroups 3.6.0 (Oct 22, 2014)

  • New features:
  • CENTRAL_LOCK: lock owners can be node rather than individual threads
  • Added an option to make the node the lock owner rather than the combo node:thread. This was needed by the JGroups clustering plugin for vert.x.
  • RSVP: option to not block caller
  • This way, a caller knows that its message will get resent, but it doesn't have to block. Also added code to skip RSVP if the message was unicast and UNICAST3 was used as protocol (only used for multicast messages).
  • Docker image for JGroups
  • mcast: new multicast diagnosis tool
  • Optimizations:
  • UNICAST3 / NAKACK2: limit the max size of retransmission requests
  • When we have a retransmission request in UNICAST3 or NAKACK2 for a large number of messages, then the size of the retransmit message may become larger than what the transport can handle, and is therefore dropped. This leads to endless retransmissions.
  • The fix here is to retransmit only the oldest N messages such that the retransmit message doesn't exceed the max bundling size of the transport and to use a bitmap to identify missing messages to be retransmitted.
  • Also, the bitmaps used by SeqnoList reduce the size of a retransmission message.
  • Channel creation has unneeded synchronization
  • Slowing down parallel creation of many channels; this was removed.
  • UNICAST3:sync receiver table with sender table. In some edge cases, a receiver would not sync correctly with a sender.
  • Bug fixes:
  • JMX: unregistering a channel which didn't register any protocols issues warnings
  • UDP: ip_ttl was ignored and is always 1
  • MERGE3: in some cases, the information about subgroups is incorrect
  • The actual MergeView was always correct, but the information about subgroups wasn't.
  • RELAY2 doesn't work with FORK

New in JavaGroups 3.5.0 (Aug 29, 2014)

  • New features:
  • TimeService
  • New service run as task (every 500 ms by default) that returns the wall clock time at a coarse granularity. Cuts down on the number of times System.currentTimeMillis() has to be called. Used e.g. for failure detection (FD_ALL), connection reaping (UNICAST2) etc.
  • FD_ALL2: new failure detection protocol without timestamps
  • Same as FD_ALL, but doesn't use timestamps (System.currentTimeMillis()). However, with the introduction of the TimeService, perhaps this is moot...
  • FD_HOST: failure detection protocol which detects failure of entire hosts
  • Detects crash of host H and suspects all members running on H.
  • ExtendedUUID: add random data to an address
  • ExtendedUUID is a subclass of UUID and has a simple hashmap to add data (in byte[] format), which can be used to ship data with an address. Example: can_be_site_master in RELAY2 uses this.
  • Also, there can now be multiple AddressGenerators present and add their data to the same address.
  • New SASL based AUTH implementation
  • Alternative to current AUTH plugins (e.g. MD5, X509)
  • Provide ability to start diagnostics via JMX
  • This allows an admin to start diagnostics even though it wasn't configured.
  • More stats in TP
  • Probe.sh: restrict requests to a certain cluster
  • New flag -cluster; servers drop requests with different cluster names.
  • GOOGLE_PING: new discovery protocol for Google Compute Engine and large cluster tests on GCE
  • New discovery protocol using Google Cloud Store; large cluster tests on GCE
  • SHARED_LOOPBACK_PING: discovery protocol used with SHARED_LOOPBACK
  • This discovery protocol always and immediately discovers all members which are running on a SHARED_LOOPBACK transport.
  • Used for tests running on SHARED_LOOPBACK; speeds up unit tests.
  • SEQUENCER2: re-implementation of SEQUENCER (experimental)
  • Seqnos are given out by the coord; members do the sending and retransmission themselves. More work needed.
  • Inline configuration
  • Some protocols (FORK, RELAY2) can now define their configuration inline instead of having to refer to external files
  • Optimizations
  • TP: enable loopback by default
  • Multicast messages or unicast messages to self are always looped back up the stack. By default, this is done on a separate thread without making a copy, but this can be configured. When the multicast message is received, it will get dropped.
  • We now have less work that needs to be done in the thread pool, and don't need to parse our own messages before dropping them anyway (unneeded work).
  • Caveat: we now send multicast messages via the DatagramSocket (not the MulticastSocket). This causes a problem on MacOS, which can be fixed by adding a default mcast route, or by using the default route by bind to the default NIC.
  • New flag DONT_LOOPBACK
  • If set, the message will not get looped back. Useful for multicast messages for which we don't need to receive a copy.
  • Saves processing costs. Alternative to JChannel.setDiscardOwnMessages().
  • Ignore DONT_BUNDLE and always send *all* messages as bundles
  • By default, send all messages (even ones tagged as DONT_BUNDLE) as message bundles. At the receiver, deliver messages tagged as DONT_BUNDLE | OOB on a separate thread.
  • TP: sending messages to an unknown physical dest takes too much time
  • Fixed by removing the loop (default: loop 3 times and sleep random [1..500] ms).
  • Processing of OOB messages in UNICAST and NAKACK
  • OOB messages are not added to the table anymore, but a placeholder is used instead (saves memory): all OOB messages in the table point to the same dummy instance.
  • Also, filters are used to remove messages from the table (more efficient).
  • UNICAST3: send and receive table merged for self
  • Messages from P to P are stored in *one* table (send-table), the receive-table for P has been removed. This requires less processing (no ACKs need to be sent) and uses less memory.
  • Internal threads should noo do work stealing
  • Internal threads are now guaranteed not to pass up messages added by different threads and to return immediately after delivering their own messages.
  • Avoiding unneeded byte[] buffer allocations
  • Memory-efficient marshalling
  • Replacing ExposedInputStream and ExposedOutputStream with alternative classes that use less memory
  • AsciiString: memory-efficient version of String
  • Used internally, uses less memory than java.lang.String and accommodates only ASCII chars (1 byte == 1 char); multi-byte strings are capped to single byte strings
  • Send message batch of 1 as a single message
  • Slightly more efficient than sending a batch of 1.
  • Table: null rows when removing last element
  • Optimization triggering GC more quickly in NAKACK and UNICAST
  • Table: adding a message batch can cause too many resizings
  • Potentially 1 resize per message from the batch. Now 1 potential resizing for the entire batch.
  • FD_ALL: multiple suspicions may lead to extended life for other suspected members
  • When a few members are suspected at the same time, but only a subset are excluded, the non-excluded members get their timestamps reset, so they extend their life by another timeout ms, which unnecessarily extends their life.
  • Improve perf of ENCRYPT
  • Optimizations to file-based (cloud store) discovery protocols
  • Instead of using file or cloud stores to discover the physical addresses of members in order to send them discovery requests, store the information directly in the files/cloud. This reduces the need to send discovery requests and receive discovery responses: all the information needed about all members (UUIDs, logical names and IP addresses/ports) are read directly from files / the cloud.
  • Added the ability to dump the member information to a file and add contents from a file to the local caches.
  • Bug fixes:
  • Concurrent modification of message headers may lead to message not getting sent
  • TOA: incorrect message delivery
  • S3_PING: incorrect URL
  • S3 changes their URL format, so S3_PING had to be changed, too.

New in JavaGroups 3.5.0 Beta 9 (Jun 28, 2014)

  • Revert "Move getTimestamp before ping block to avoid false suspect"

New in JavaGroups 3.5.0 Beta 7 (May 29, 2014)

  • Merge branch 'master' of github.com:belaban/JGroups

New in JavaGroups 3.5.0 Beta 6 (May 15, 2014)

  • fixed unit tests.

New in JavaGroups 2.8.0 GA (Jan 19, 2010)

  • Logical addresses prevent reincarnation issues: when a member address is IP:port and the port is fixed, then - when
  • a member is restarted - it will get the same IP address and port. Therefore, for JGroups it is the *same* member !
  • Since a member's address is associated with state (e.g. retransmission tables and seqnos) in various protocols, some
  • protocols might delete the state, other might not (if they haven't received the view excluding the member yet). This can
  • lead to no messages being processed for a reincarnated member, or all messages being queued.
  • A logical name is a name that's given a channel and stays with the channel until the channel is closed. This leads to
  • much more readable output, e.g. we can replace view {192.168.1.5:56789|2: 192.168.1.5:56789, 192.168.2.30:4666} with
  • {A|2: A, B}. This is very useful for example when reading logs.
  • How to set a logical name in a channel is described in http://www.jgroups.org/manual/html/index.html ("JChannel").
  • A blog entry about logical addresses is at http://belaban.blogspot.com/2009/02/whats-cool-about-logical-addresses.html.

New in JavaGroups 2.4.7 GA (Nov 17, 2009)

  • Bug
  • [JGRP-549] - ConnectionTable: spurious Connection instances on concurrent connects
  • [JGRP-956] - Binding to mcast address in UDP.java is not working on Linux with IPv6
  • [JGRP-967] - Deadlock in FD_SOCK
  • [JGRP-981] - Wrong view with concurrent startup
  • [JGRP-984] - JGroups can not parse IPV6 literals in TCPPING protocol configuration
  • [JGRP-990] - Grammatical Error in log message: I'm being am suspected.
  • [JGRP-1000] - COMPRESS corrupts some messages
  • [JGRP-1060] - NAKACK has inconsistent internal state after concurrent node startup
  • Task
  • [JGRP-982] - Extend linux method of creating multicast socket to HP-UX

New in JavaGroups 2.8.0 Beta 2 (Jun 18, 2009)

  • [JGRP-659] - Merge and UNICAST sequencing problem
  • [JGRP-882] - Shared transport: promiscuous discovery requests with MPING
  • [JGRP-883] - Use of Math.min In GossipRouter's Socket Linger Code Causes Unexpected Results
  • [JGRP-888] - concurrent modification exception in FD_SIMPLE
  • [JGRP-891] - ConcurrentModificationException during JBoss AS 5.0.0.GA startup
  • [JGRP-896] - GMS: ConcurrentModificationException in AckCollector.handleView()
  • [JGRP-910] - Shared transport: 'members' variable incorrect (remove from TP ?)
  • [JGRP-912] - Failed to parse the jgroups.xml file
  • [JGRP-913] - NAKACK: UndeliveredMessages counter is negative (JMX)
  • [JGRP-914] - FLUSH: concurrent (partial) flushing blocks
  • [JGRP-916] - TCP_NIO uses default IP address instead of bind_addr
  • [JGRP-917] - Problems after shunning
  • [JGRP-918] - Logical addresses: removing a logical name or UUID/PhysicalAddress mapping on a view change is incorrect
  • [JGRP-920] - TP: channel_name is ambiguous with shared transport
  • [JGRP-921] - TP: 'header' is ambiguous with shared transport
  • [JGRP-924] - Shared transport: RouterStub cannot connect to 'channel_name'
  • [JGRP-925] - TCPPING: not all nodes have all physical addresses
  • [JGRP-928] - Deadlock with concurrent stack in FC if RPC response blocks
  • [JGRP-929] - Promiscuous traffic on Mac OS
  • [JGRP-933] - NAKACK/UNICAST: eager lock releasing not respected
  • [JGRP-934] - NAKACK/UNICAST: atomic boolean vars might lead to message not getting processed immediately
  • [JGRP-936] - TCP_NIO: properties not recognized
  • [JGRP-940] - MERGE: issue with overlapping merges (NAKACK / UNICAST)
  • [JGRP-946] - JChannel: automatic reconnect ignores
  • [JGRP-947] - Messages that are bundled but are over max_bundle_size are silently dropped on the floor.
  • [JGRP-948] - MERGE: merging digests based on hearsay
  • [JGRP-952] - MERGE: UNICAST can lose messages on merging
  • [JGRP-956] - Binding to mcast address in UDP.java is not working on Linux with IPv6
  • [JGRP-957] - Intermittent cluster stability issues
  • [JGRP-958] - Support Setting of Bind Address With TCP-based Stacks
  • [JGRP-959] - coord.stopFlush() and coord.close() called in sequence cause flush lockup
  • [JGRP-964] - shared_transport concurrency failure - starting NotificationBusses at the same time causes "timer cannot be retrieved from protocol stack"
  • [JGRP-966] - UNICAST: multiple SEND_FIRST_SEQNO messages cause message loss
  • [JGRP-968] - UNICAST: loss of first msg after asymmetric close causes all further messages to be lost
  • [JGRP-976] - JGroups testsuite failures with link-local IPv6 addresses
  • [JGRP-978] - JGroups diagnostics uses hard-coded IPv4 multicast address
  • [JGRP-984] - JGroups can not parse IPV6 literals in TCPPING protocol configuration
  • [JGRP-985] - Admin Join problem -GMS flush by coordinator failed
  • [JGRP-986] - FLUSH: relax event sequencing for a joining member

New in JavaGroups 2.8.0 Alpha 3 (May 4, 2009)

  • Bug
  • [JGRP-659] - Merge and UNICAST sequencing problem
  • [JGRP-882] - Shared transport: promiscuous discovery requests with TCP
  • [JGRP-883] - Use of Math.min In GossipRouter's Socket Linger Code Causes Unexpected Results
  • [JGRP-888] - concurrent modification exception in FD_SIMPLE
  • [JGRP-891] - ConcurrentModificationException during JBoss AS 5.0.0.GA startup
  • [JGRP-896] - GMS: ConcurrentModificationException in AckCollector.handleView()
  • [JGRP-910] - Shared transport: 'members' variable incorrect (remove from TP ?)
  • [JGRP-913] - NAKACK: UndeliveredMessages counter is negative (JMX)
  • [JGRP-914] - FLUSH: concurrent (partial) flushing blocks
  • [JGRP-916] - TCP_NIO uses default IP address instead of bind_addr
  • [JGRP-917] - Problems after shunning
  • [JGRP-918] - Logical addresses: removing a logical name or UUID/PhysicalAddress mapping on a view change is incorrect
  • [JGRP-920] - TP: channel_name is ambiguous with shared transport
  • [JGRP-921] - TP: 'header' is ambiguous with shared transport
  • [JGRP-924] - Shared transport: RouterStub cannot connect to 'channel_name'
  • [JGRP-925] - TCPPING: not all nodes have all physical addresses
  • [JGRP-928] - Deadlock with concurrent stack in FC if RPC response blocks
  • [JGRP-929] - Promiscuous traffic on Mac OS
  • [JGRP-933] - NAKACK/UNICAST: eager lock releasing not respected
  • [JGRP-934] - NAKACK/UNICAST: atomic boolean vars might lead to message not getting processed immediately
  • [JGRP-936] - TCP_NIO: properties not recognized
  • [JGRP-940] - MERGE: issue with overlapping merges (NAKACK / UNICAST)
  • [JGRP-946] - JChannel: automatic reconnect ignores
  • [JGRP-947] - Messages that are bundled but are over max_bundle_size are silently dropped on the floor.
  • [JGRP-948] - MERGE: merging digests based on hearsay
  • [JGRP-952] - MERGE: UNICAST can lose messages on merging
  • [JGRP-956] - Binding to mcast address in UDP.java is not working on Linux with IPv6
  • [JGRP-957] - Intermittent cluster stability issues
  • [JGRP-958] - Support Setting of Bind Address With TCP-based Stacks
  • [JGRP-959] - coord.stopFlush() and coord.close() called in sequence cause flush lockup
  • [JGRP-964] - shared_transport concurrency failure - starting NotificationBusses at the same time causes "timer cannot be retrieved from protocol stack"
  • [JGRP-965] - Message: headers are not copied
  • [JGRP-966] - UNICAST: multiple SEND_FIRST_SEQNO messages cause message loss
  • [JGRP-967] - Deadlock in FD_SOCK
  • [JGRP-968] - UNICAST: loss of first msg after asymmetric close causes all further messages to be lost
  • Feature Request
  • [JGRP-20] - Address translation in transport (NAT support)
  • [JGRP-105] - GossipRouter: additionally listen on IP multicast group and bridge traffic
  • [JGRP-129] - Logical addresses
  • [JGRP-130] - Problems with reincarnation
  • [JGRP-213] - Transport bundling
  • [JGRP-340] - GossipRouter: major overhaul
  • [JGRP-430] - GossipRouter: support accessing multiple GossipRouters in TUNNEL
  • [JGRP-448] - Provide schema for protocol stack configuration
  • [JGRP-727] - GossipRouter: persistent connections for GossipClients
  • [JGRP-858] - Generic flags per message
  • [JGRP-884] - Provide Gossip Router Command Line Options For Backlog, Socket Read Timeout, and Socket Linger Timeout
  • [JGRP-890] - Util.getMBeanServer should return the platform MBean server is no other is found
  • [JGRP-902] - GossipRouter: raise SUSPECT event when GR detects (abnormal) loss of a connection from client
  • [JGRP-911] - STREAMING_STATE_TRANSFER: investigate use of UDP datagrams instead of TCP socket
  • [JGRP-915] - GMS: when coordinator leaves, the new view's creator should be the next member in line, not the current coord
  • [JGRP-919] - UUID.cache: timed purging of old mappings
  • [JGRP-935] - NAKACK/UNICAST: replace locks with AtomicBoolean variables
  • [JGRP-937] - MERGE4: get rid of shunning and use only merging (getting rid of shunfests)
  • [JGRP-938] - Logging: configure at runtime
  • [JGRP-941] - Merge: log merge results and make them available via JMX
  • [JGRP-960] - FILE_PING: new discovery protocol
  • [JGRP-963] - FILE_PING: return immediately if there are no files around in the location directory (optimization)
  • [JGRP-971] - RpcDispatcher/MessageDispatcher: additional methods which return a Future rather than blocking
  • Patch
  • [JGRP-942] - "max_retransmit_time" feature for UNICAST protocol handler (solves endless retransmit symptom)
  • Task
  • [JGRP-645] - Replace commons-logging with own logging bridge
  • [JGRP-885] - Remove Obselete GossipRouter Command Line Arguments
  • [JGRP-894] - Add task to put distro in Maven repo when releasing
  • [JGRP-895] - Java web start (JNLP) demos: sign JARs via ANT
  • [JGRP-922] - FLUSH: let application handle concurrent flushing
  • [JGRP-926] - GMS: add use_flush_if_present
  • [JGRP-939] - MERGE: merging of overlapping subgroups causes problems with UNICAST
  • [JGRP-943] - FC: set ignore_synchronous_response to true by default
  • [JGRP-944] - JChannel: automatic reconnection might fail
  • [JGRP-945] - Ship XSD protocol config schema with JGroups and reference it from XML config files
  • [JGRP-950] - UNICAST: remove ENABLE_UNICASTST_TO / DISABLE_UNICASTS_TO, prev_mbrs and enabled_mbrs
  • [JGRP-953] - FRAG2: set overhead to 0 by default
  • [JGRP-954] - GMS: only 1 merge should be active at any given time
  • [JGRP-962] - NAKACK / UNICAST: verify that concurrent access to NakReceiverWindows / AckReceiverWindows is handled correctly
  • [JGRP-969] - TestNG: enable OverlappingMergeTest.testOverlappingMergeWithABC()
  • [JGRP-970] - MERGE: test hearsay merge fix

New in JavaGroups 2.7.0 Beta 1 (Nov 13, 2008)

  • 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 retrieaval
  • Feature 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 multicast
  • Patch:
  • [JGRP-719] - Allow ReplicatedHashMap to delegate to any ConcurrentMap
  • Task:
  • [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 configurable
  • Sub-task:
  • [JGRP-740] - Utilities.gossipRouter cannot be static
  • [JGRP-776] - NAKACK: OOB messages should never have to acquire the NakReceiverWindow lock

New in JavaGroups 2.6.6 (Nov 8, 2008)

  • [JGRP-849] - Concurrent connect of multiple channels with shared transport fails
  • [JGRP-853] - Failure detection: multiple crashes not detected
  • [JGRP-836] - Eliminate Linux cross-talk in MPING
  • [JGRP-852] - GossipRouter/GossipClient: make sockets use SO_TIMEOUT and SO_LINGER
  • [JGRP-846] - ExposedByteArrayOutputStream / ExposedDataOutputStream: override synchronized methods
  • [JGRP-847] - ExposedByteArrayInputStream / ExposedDataInputStream: override synchronized methods with unsynchronized ones

New in JavaGroups 2.6.5 (Oct 11, 2008)

  • [JGRP-830] - viewAccepted is not always reported to all group members
  • [JGRP-831] - SEQUENCER: incorrect order of delivery when thread pool is used
  • [JGRP-735] - Discovery: ignore discovery responses from clients
  • [JGRP-832] - Transport: make probe pluggable
  • [JGRP-777] - Revisit multicast socket creation code