[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.