[Zodb-checkins] CVS: ZODB3 - HISTORY.txt:1.1.2.2 ZEO-NEWS.txt:NONE
Jeremy Hylton
jeremy at zope.com
Thu Jul 17 12:13:38 EDT 2003
Update of /cvs-repository/ZODB3
In directory cvs.zope.org:/tmp/cvs-serv6506
Modified Files:
Tag: zodb33-devel-branch
HISTORY.txt
Removed Files:
Tag: zodb33-devel-branch
ZEO-NEWS.txt
Log Message:
Move ZEO-NEWS.txt contents to HISTORY.txt.
=== ZODB3/HISTORY.txt 1.1.2.1 => 1.1.2.2 ===
--- ZODB3/HISTORY.txt:1.1.2.1 Thu Jul 17 11:08:24 2003
+++ ZODB3/HISTORY.txt Thu Jul 17 11:13:30 2003
@@ -1,3 +1,9 @@
+ZODB History
+============
+
+This file contains news and release notes for ZODB versions 3.2 and
+earlier.
+
What's new in ZODB3 3.2 beta 2
==============================
Release date: 16-Jun-2003
@@ -766,3 +772,423 @@
This was the first public release of the StandaloneZODB from Zope
Corporation. Everything's new! :)
+
+Revision History, Zope Enterprise Objects, version 2
+====================================================
+
+ ZEO changes before Dec. 10, 2002 were logged in a separate file
+ called ZEO-NEWS.txt. This section includes the contents of that
+ file.
+
+ ZEO 2.0.1 (2002/12/10)
+
+ The changes since the ZEO 2.0 release are:
+
+ - The logging code for client connection was improved in several
+ ways. In particular, client connection and disconnection
+ messages include the server's address.
+
+ - ClientCache.py: make some functions into methods; include the
+ storage name in all log messages; append the storage name to
+ the trace filename.
+
+ - zrpc/trigger.py: in handle_read() (both versions!), catch
+ socket errors from the recv() call and return early in that
+ case.
+
+ ZEO 2.0 (2002/10/28)
+
+ There were no changes made after beta 3.
+
+ ZEO 2.0 beta 3 (2002/10/21)
+
+ The changes since the ZEO 2.0b2 release are:
+
+ - Changed signal handling in start.py script. The start script
+ was changed to respond to signals in the same manner as Zope.
+ See Doc/ZEO/SIGNALS.txt (new).
+
+ - Changed pidfile policy in start.py script. The start script
+ only writes a single pid to the pidfile; when using zdaemon,
+ this is the zdaemon process's pid (which passes signals on to
+ the actual storage server). Also, the pidfile is deleted upon
+ completion of the server's main loop. (Only this latter
+ change was also applied to ZEO1/start.py.)
+
+ - The start script now chdir's into the var directory, to give a
+ predictable place for core dumps.
+
+ - The stats.py and simul.py script now skip suspect broken
+ records; this makes for a more robust trace analysis.
+
+ - Some files had their RCS Id removed from docstrings; this was
+ used only sporadically.
+
+ ZEO 2.0 beta 2 (2002/10/04)
+
+ The changes since the ZEO 2.0b1 release are:
+
+ - Added doc strings
+
+ A start was made with adding doc strings to the major modules.
+ ClientStorage.py was completed, a start was made with
+ StorageServer.py. The rest will follow before the final
+ release.
+
+ - Fixed race conditions
+
+ Potential race conditions in many places were fixed by adding
+ appropriate locking, including zrpc/smac.py and
+ TransactionBuffer.py. Picklers are no longer shared and
+ reused, as sharing a pickler is not re-entrant.
+
+ - Fixed trigger on Windows 98
+
+ The code in zrpc/trigger.py to create a trigger instance for
+ Windows could cause mysterious hangs on Windows 98 when a port
+ was reused. Fixed by changing the port allocation algorithm.
+
+ - pack() waits by default
+
+ The default value for the wait flag argument to pack() is
+ changed to 1, making pack() wait by default (just like for the
+ ClientStorage constructor.)
+
+ - Read-only fallback option for ClientStorage
+
+ The ClientStorage class now has a new optional argument,
+ read_only_fallback, defaulting to false. If set to true, the
+ client will accept either read-only servers or read-write
+ servers. If multiple server addresses are given, an available
+ read-write server will be preferred over available read-only
+ servers. When connected to a read-only server, a background
+ thread continues to attempt to open a read-write connection,
+ and when successful, will disconnect an existing read-only
+ connection and reconnect to the read-write server. If this
+ option is false, the original behavior is retained: when the
+ read_only option is false, only read-write servers are
+ acceptable; when the read_only option is true, all servers
+ (read-only or read-write) are acceptable.
+
+ - Connect code refactored
+
+ The client-side ZRPC code that connects to the server was
+ rewritten almost from scratch (to allow adding the fallback
+ option described above). This code should now do the right
+ thing on Windows systems, at least on Win98 and Win2k
+ (previously, the connect_ex() status wasn't always interpreted
+ correctly).
+
+ - Overlapping calls allowed
+
+ The limitation that ZRPC calls are serialized in the client is
+ lifted. A multi-threaded client may now make overlapping
+ calls to ClientStorage methods. Three notoriously slow calls
+ (undoInfo(), undoLog(), pack()) are now executed in a separate
+ thread in the server. The limitation to a single outstanding
+ transaction remains though.
+
+ - zrpc made robust against pickling errors
+
+ It was possible for the arguments to a zrpc call to include
+ objects that were unpicklable on the server. (Example: The
+ code for an object is not available on the server.) There
+ were a variety of failure conditions that could occur, some
+ of which would leave the client hanging forever. Fixed the
+ error handling code to always close the connection when
+ a message can't be unpickled. This approach allows the client
+ and server to recover.
+
+ - Locking bug in new_oid() fixed
+
+ The client-side code in new_oid() would not release its lock
+ if its call to the server's new_oids() raised an exception.
+ This would cause a hard hang upon a subsequent new_oid() call.
+
+ - Fix handling of mid-transaction disconnect
+
+ When a connection was disconnected while a transaction was in
+ progress, the server-side code attempting to abort the
+ transaction could run into various rare traps. Amongst
+ others, this frequently caused the
+ checkCommitLock2On{Abort,Commit} tests to hang on Win98.
+
+ - Logging cleanup
+
+ Various log messages were added, removed, or reformatted, or
+ had their priority adjusted. The subsystem string in log
+ messages is now more consistent and never contains spaces.
+ When the subsystem string contains a process id, it is the
+ correct process id (there were cases where the parent's
+ process id continued to be used after a fork() call).
+
+ - Code cleanup
+
+ Many parts of the code have been cleaned up. The changes
+ include whitespace normalization, spelling fixes, correcting
+ out-of-date comments and docstrings, removing unused imports,
+ attributes and variables, renaming attributes and methods for
+ consistency, and so on. Some refactoring of the test suite
+ was also done.
+
+ - Fixed possible deadlock in storage server
+
+ The locking used in the low-level zrpc mechanism was changed
+ to prevent asynchronous callback messages from using the call
+ lock. This prevents a possible deadlock when cache
+ verification callbacks are processed quickly.
+
+ - Fixed performance problem differently
+
+ Some low-level socket code was rewritten again to batch short
+ messages and chunk long ones even more efficiently, as
+ suggested by Toby Dickenson.
+
+ - Cache policy improvement
+
+ When load() finds a hit in the non-current file, copy it to
+ the current file (except when this would cause a cache flip).
+ It is hoped that this improves the cache performance,
+ especially for sites that do more reads than writes.
+
+ - Cache performance simulation
+
+ A simulation program (ZEO/simul.py) was added that performs a
+ simulation of the ZEO client cache, given a cache trace file
+ produced by the client cache trace option (see below) and a
+ cache size. The cache simulation will show the effectiveness
+ of a particular cache size given the traffic measured at a
+ site. More information is in the ZEO/README.txt file. (The
+ simulation program also has options to simulate various
+ alternative cache designs. We are looking for volunteers to
+ send us a cache trace file for their site, so we can evaluate
+ the effectiveness of various cache designs given their site's
+ load. Send email to guido at zope.com if you are interested in
+ participating.)
+
+ - Client cache bugs fixed
+
+ Fixed several bugs in the client cache code that caused the
+ cache to be less effective than it should. In particular:
+
+ = the code to select the most recent current persistent
+ cache file was broken due to a wrong seek offset;
+
+ = the code to write a byte to a record to invalidate it was
+ broken due to a wrong seek call;
+
+ = on a cache file flip, the index data for the cache file
+ that's being overwritten wasn't cleared out.
+
+ - Fix for abortVersion()
+
+ Different versions of ZODB do different things with the
+ serialnos for abortVersion(). To be safe and avoid giving
+ non-version data with an invalid serialno after an abort
+ version, both the version and non-version data are invalidated.
+
+ This hurts cache effectiveness when a version is aborted, but
+ we expect this will have little practical impact.
+
+ - Add sync() method back to ClientStorage
+
+ The sync() method may be called by the ZODB Connection class
+ on the storage. It can also be called by applications that do
+ not have a separate asyncore mainloop when the application
+ wants to handle pending object invalidations.
+
+ - undoLog() and undoInfo() can run in background
+
+ These methods can take a long time to run if the client has
+ specified a filter or specification. ZEO 2 will run these
+ operations in a separate thread, allowing other client
+ requests to be handled as long the underlying storage allows
+ them.
+
+ - Client cache code cleanup
+
+ The doc string was updated to provide more and more accurate
+ information; other minor coding style improvements include
+ logging a message at the INFO level whenever a broken cache
+ record is detected. Cache flips and non-trivial read_index()
+ statistics are also logged.
+
+ - Client cache trace option
+
+ Setting the environment variable ZEO_CACHE_TRACE to point to a
+ (writable) file writes a detailed trace of cache requests to
+ that file. The stats.py program can be used to analyze this
+ trace file. More information is in the ZEO/README.txt file.
+
+ - Fixed handling of closed connections in the server
+
+ When a client disconnected, the storage server wasn't properly
+ calling the strategy's tpc_abort, so it wasn't properly
+ restarting another transaction that might possibly be waiting.
+
+ - Other code cleanup and small bugfixes
+
+ Renamed some methods. Removed some unused variables,
+ functions, methods and files. Added some explanatory
+ comments. Added some asserts. Whitespace cleanup.
+ ClientStorage.close() is now idempotent. Fixed a bug in
+ undo(). ImmediateCommitStrategy.store() only catches
+ exceptions that inherit from Exception. Added missing import
+ of DecodingError in zrpc/marshal.py.
+
+ - Optimized cache opening
+
+ ClientStorage opens the cache later to avoid "opening" it
+ twice when a connection is available right away.
+
+ - Added a modest unit test suite for the client cache
+
+ The basic operations of the client cache are now tested.
+
+ - Wait for connection by default
+
+ The default for the ClientStorage class has changed to wait
+ until a connection is established by default. To return
+ immediately without waiting for a connection, use
+ ClientStorage(..., wait=0). (This only makes sense when a
+ persistent cache is also specified, by using the client
+ keyword argument to the ClientStorage constructor, or by
+ setting the ZEO_CLIENT environment variable.
+
+ - Arguments debug and wait_for_server_on_startup are back
+
+ The ZEO1 arguments debug and wait_for_server_on_startup were
+ added to the ClientStorage constructor signature, for
+ backwards compatibility (these are used in many a
+ custom_zodb.py file). Setting debug has no effect except
+ issuing a log message. The wait_for_server_on_startup is an
+ alias for the wait argument; using wait_for_server_on_startup
+ issues a log message.
+
+ - ClientStorage and StorageServer subclassing hooks
+
+ The classes instantiated within the client and server are
+ now defined as class variables. This approach allows
+ subclasses to substitute different classes.
+
+ ZEO 2.0 beta 1 (2002/08/23)
+
+ The changes since the 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.
+
+ ZEO 2.0 alpha 1 (2002/05/31)
+
+ Brief overview of the differences between ZEO 1.0 and 2.0.
+
+ - New protocol.
+
+ ZEO 2 uses a different wire protocol and a different API to
+ make RPC calls. The new protocol was designed to be flexible
+ and simple. It includes an initial handshake to set the
+ version number, which should allow future changes to the
+ protocol while reducing the difficulty of upgrades.
+
+ - Better handling of concurrent commits.
+
+ The ZEO server serializes concurrent commits to guarantee
+ consistency; the mechanism is often called the distributed
+ commit lock. ZEO 2 improves the efficiency of concurrent
+ commits by allowing data to be transferred to the server
+ before entering the commit lock.
+
+ - The ZEO client and server can be configured to operate in
+ read-only mode.
+
+ - A ZEO client can be configured with multiple server addresses.
+ It uses the first server it can connect to.
+
+ - The wait_for_server_on_startup keyword argument to
+ ClientStorage has been renamed wait.
+
=== Removed File ZODB3/ZEO-NEWS.txt ===
More information about the Zodb-checkins
mailing list