[Zope-dev] ZEO 2.0 beta 1 released

Jeremy Hylton jeremy@zope.com
Fri, 23 Aug 2002 10:59:38 -0400


We've just released ZEO 2.0 beta 1.It's available from
http://www.zope.org/Products/ZEO.

We think this release of ZEO 2 is fairly stable, although we may do
one more beta release to add some performance improvements.  There are
many changes since ZEO 2.0a1, which was released in May.  The
CHANGES.txt file describes the most significant changes; I've included
the 2.0b1 changes list at the end of this message.
 
The ZEO 2 protocol is not backwards compatible with ZEO 1.  If you
want to upgrade a system, all the clients and servers need to be
upgraded at the same time.  I don't plan to provide backwards
compatibility for 2.0, but could be convinced otherwise if there is
significant user demand.

In the alpha release, we reported that the test suite was a bit
fragile on Windows.  It is much better now.  We have tested on Windows
2000 and Windows 98, and expect all the tests to pass.  The tests may
run very slow on Windows, because many of the tests spawn server
processes.  The Windows scheduler can make this very slow.  On
occasion, we've seen the tests hang for several minutes before
finishing successfully.
 
After the alpha release, I suggested that there would be several more
alpha releases to add new features.  We didn't have the resources to
pursue the new features.  Instead, we plan to get a solid 2.0 final
release out as soon as possible.  New features will be postponed until
2.1.

Jeremy


The changes since ZEO 2.0a1 release are:
 
  - Added version identification.
 
    The variable ZEO.version is a string identifying the version
    in the style of sys.version.  The same string is also
    available in ZEO/version.txt for people who want to check
    without loading the code.
 
  - Fixed performance problem.
 
    The low-level socket code was often calling send() with very
    small strings instead of joining them together before calling
    send.  The small string variant ran afoul of the Nagle
    algorithm and delayed TCP acks.
 
  - Fix bugs in server handling of queued transactions
 
    Several bugs in 2.0a1 could cause the storage to lock up when
    it attempted to restart a transaction that was queued waiting
    for an earlier transaction to finish.  The locking code in the
    two-phase commit methods was revised to properly use the
    condition variable protocol.  Thanks to Tim Peters for
    pointing this out.
 
  - Avoid locking up server on unexpected client exit
 
    If a client disconnected unexpectedly in the middle of a two-
    phase commit, the server would never release the commit lock.
 
  - Very long log messages avoided.
 
    Some of the logging messages at BLATHER and lower were
    producing very long log messages because they included
    all the argument of method calls, even when the argument
    was a list with thousands of elements.  These log messages
    are now truncated at a reasonable length.
 
  - Fix log rotation
 
    The SIGHUP behavior was fixed.  If the ZEO server receives
    a SIGHUP, it will re-initialize its logging code.  Thus,
    it is possible to rotate the log files and then send a HUP.
 
  - Fixed problem handling signals.
 
    The asyncore and zrpc error handlers would trap SystemExit
    if it was raised by a signal handler.  They now ignore it.
 
  - pack() can be called on a read-only connection
 
    This ends up being very convenient for packing a read-only
    server, even though it isn't obvious that pack() is a read-
    only operation.                              

  - pack(wait=1) now waits
 
    A bug caused pack(wait=1) to return immediately, even though
    the pack was still running.
 
  - Fix bug in history().
 
    The history() implementation prevent the client from returning
    more than one item.
 
  - Enhanced logging for blocked transactions.
 
    If a transaction had to be blocked because another transaction
    was executing, the server would log an info message.  Now it
    also logs a message when the transaction is resumed, so that
    it doesn't look like the transaction was blocked forever.
 
  - Fixed bug in logging call for store().
 
    The logging call could raise NameError.
 
  - Removed debug argument to ClientStorage constructor.
 
    It had no effect.
 
  - Removed ZEO.trigger
 
    There were two copies of the trigger module in the last
    release.  The one in ZEO.trigger was removed, because it
    is only needed in ZEO.zrpc.trigger.
 
  - Added minimal tests of start.py.
 
    There are only run on Unix.