[Spread-users] Spread 3.17.3 RC1 test release

Jonathan Stanton jonathan at cnds.jhu.edu
Tue Oct 5 10:54:02 EDT 2004


I wanted to announce a release candidate of the upcoming 3.17.3 release. 
This release is a bugfix release with all of the outstanding problems I'm 
aware of fixed. Plus a bonus of a working monitor on Windows and 
multi-sender flow control in the spflooder application.

You can currently check out the release from cvs using the tag RC1_3_17_3 
for the spread module. I will make up a tar.gz release later.

Although all of the substantive changes in the release are bug fixes, some
of them could have unanticipated side-effects if you are using Spread in
ways different from us, or on other platforms. So I highly encourage
anyone who can to test this release with your applications and let me know
about any regressions or issues you encounter.

The list of changes from the Readme.txt file is below. 



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) 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 imput. (A POSIX thread option is also added).
5) Fix a bug in the Windows build using VC++ of thread-safe 
   Bug and fix by Jacob Green.
6) 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 
   and the sender field was not returned. They are both now returned 
   Bug report and partial fix provided by John Schultz. 
7) Fix bug where SP_Join and SP_Leave do not report an error if a group 
   is too long (instead they truncated it) Reported with fix by David 
   ** Warning, this could break buggy applications who use long groups and 
      assume the name is truncated. 
8) Cleanup compile warnings where E_queue() used with no-parameter 
   (not all uses fixed) and fix incorrect use of signed int with strlen().
9) Fix few cases in flooder.c and user.c that did not use the defined 
   constant. Tested to verify that increasing MAX_SCATTER_ELEMENTS in 
   and the MAX_MESSLEN defines in user.c and flooder.c is sufficient to 
   arbitrarily large message sizes with Spread. This is NOT recommended, 
   several people do it anyway :-)
10) Add new option to spflooder. The -n option allows a fixed "number of 
    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 
    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).
11) Make E_delay() work on Win32. 
12) Added check that a segment using localhost (i.e. is NOT 
in a 
    spread.conf with any other segments using real IP addresses. This 
    will not work correctly and is usually because the example localhost 
    provided with Spread is added to. This check will cause the daemon to 
    immediately after parsing the config file.
13) Add new Alarm priority flag to print a line with no datestamp (for 
multi-line output).
14) 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.  
15) Fix Java spread connection problem where several threaded connections 
from same 
    process cause unexpected connection failures. Reported by Brian 
    idea of fix by Ryan Caudy, patch by Jonathan Stanton.
16) 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.
17) Make SP_connect_timeout() calls non-blocking for the actual 
'connect()' call. 
    This should fix the issue reported by Shlomi Yaakobovich where a hung 
    causes new connections to also hang in connect. Also includes slight 
    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