[Spread-users] Spread 3.17.3 released

Jonathan Stanton jonathan at cnds.jhu.edu
Fri Oct 15 14:22:20 EDT 2004

Hello everyone,

The new release is out on the download page. I only heard one report of 
a problem from the rc1 release and that has been fixed (it involved the 
Windows build)


Spread Concepts LLC and Johns Hopkins Center for Networking and Distributed
Systems are happy to announce the release of a new stable version, 3.17.3,
of the Spread toolkit. 

Spread is a toolkit that provides a high performance messaging service 
that is resilient to faults across external or internal networks. Spread 
functions as a unified message bus for distributed applications, and 
provides highly tuned application-level multicast and group communication 
support. Spread services range from reliable message passing to fully 
ordered messages with delivery guarantees, even in case of computer 
failures and network partitions.

Please be aware, that under the Spread Open Source License, the toolkit may 
be freely used only under some conditions. For example, the license includes 
the requirement that all advertising materials (including web pages) 
mentioning software that uses Spread display a specific acknowledgement. 
Please review the license agreement for more details.

Other commercial licenses or other licensing arrangements are available. 
Please contact info at spreadconcepts.com. 

The 3.17.3 release includes a few enhancements and a number of fixes. 
They include fixing some daemon crashes, a substantial decrease in memory 
usage under some scenarios, new build files for VC++.NET, a Spread 
sptmonitor program that works on Windows, and some small cleanups and 
stability improvements. So we highly encourage everyone to upgrade to 
this release. 

The 3.17.3 release has no external api changes (but does fix a few api 
implementation bugs so check the details below).

New minor features:
1) Add new option to spflooder. The -n option allows a fixed 
   "number of members" to be set. This then activates a multi-sender flow 
   control algorithm to allow flooding tests with several senders. All of 
   the processes need to join the group (i.e. they cannot be 
   -wo (write-only)) but not all processes have to send. This allows easy 
   testing with differing numbers of senders (just change how many 
   spflooders start with -ro and how many do not).
2) Modify monitor so it will run correctly on Windows. This was done by
   modifying monitor.c so it can also build as a threaded program and
   on windows will use multiple threads to send/recv updates and get
   user input. (A POSIX thread option is also added).
3) Add new Alarm priority flag to print a line with no datestamp 
   (for multi-line output).
4) Add new Windows VC++.Net project files to daemon/win32_msvc_net. 
   The current project files in daemon/win32 remain as they can be used 
   in VC++ (version 6).

The list of bugfixes is:
1) Fix memory leak in Skiplist. Reported by Taj Khattra, patch by Theo 
2) spuser,spflooder, and spmonitor fixed to print correct name in help. 
   Patch by Daniel Rall.
3) Fix incorrect alarm printing where WARNING messages generated by
   older Alarm() interface were not printed.
4) Fix a bug in the Windows build using VC++ of thread-safe libtspread.lib.
   Bug and fix by Jacob Green.
5) Fix bug in libspread where if the groups array or message body passed
   to SP_recv* was too small, the mess_type field returned would be truncated
   and the sender field was not returned. They are both now returned 
   correctly. Bug report and partial fix provided by John Schultz. 
6) Fix bug where SP_Join and SP_Leave do not report an error if a group name
   is too long (instead they truncated it) Reported with fix by David Parker.
   ** Warning, this could break buggy applications who use long groups and 
      assume the name is truncated. 
7) Cleanup compile warnings where E_queue() used with no-parameter 
   (not all uses fixed) and fix incorrect use of signed int with strlen().
8) Fix few cases in flooder.c and user.c that did not use the defined 
   MAX_MESSLEN constant. Tested to verify that increasing 
   MAX_SCATTER_ELEMENTS in scatter.h and the MAX_MESSLEN defines in user.c 
   and flooder.c is sufficient to support arbitrarily large message sizes 
   with Spread. This is NOT recommended, but several people do it anyway :-)
9) Make E_delay() work on Win32. 
10) Added check that a segment using localhost (i.e. is NOT in 
    a spread.conf with any other segments using real IP addresses. This 
    configuration will not work correctly and is usually because the example 
    localhost configuration provided with Spread is added to. This check will
    cause the daemon to exit immediately after parsing the config file.
11) Fix bug where if more then 22 daemons start at the same time, some will 
    crash or the membership will not complete correctly. This bug was 
    reported by several people including Jesse Noller.  
12) Fix Java spread connection problem where several threaded connections 
    from same process cause unexpected connection failures. Reported by 
    Brian Moseley, idea of fix by Ryan Caudy, patch by Jonathan Stanton.
13) Fix EVS bug where AGREED messages may be delivered before a transitional 
    signal on some daemons and after it on others. Bug found and patch 
    created by Ryan Caudy.
14) Make SP_connect_timeout() calls non-blocking for the actual 'connect()' 
    call. This should fix the issue reported by Shlomi Yaakobovich where a 
    hung daemon causes new connections to also hang in connect. Also includes
    slight cleanup of connect code path.

Jonathan R. Stanton         jonathan at cs.jhu.edu
Dept. of Computer Science   
Johns Hopkins University    

More information about the Spread-users mailing list