CHANGES.txt 8.44 KB
Newer Older
1 2 3
================
 Change History
================
4 5 6 7 8 9 10

3.9.0a1 (2008-??-??)
====================

New Features
------------

Jim Fulton's avatar
Jim Fulton committed
11 12 13
- Wen calling ZODB.DB to create a database, you can now pass a file
  name, rather than a storage to use a file storage.

14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
- Added support for copying and recovery of blob storages:

  - Added a helper function, ZODB.blob.is_blob_record for testing whether
    a data record is for a blob.  This can be used when iterating over a
    storage to detect blob records so that blob data can be copied.

    In the future, we may want to build this into a blob-aware
    iteration interface, so that records get blob file attributes
    automatically.

  - Added the IBlobStorageRestoreable interfaces for blob storages
    that support recovery via a restoreBlob method.

  - Updated ZODB.blob.BlobStorage to implement
    IBlobStorageRestoreable and to have a copyTransactionsFrom method
    that also copies blob data.

31 32 33 34 35 36
- New `ClientStorage` configuration option `drop_cache_rather_verify`.
  If this option is true then the ZEO client cache is dropped instead of
  the long (unoptimized) verification. For large caches, setting this
  option can avoid effective downtimes in the order of hours when
  the connection to the ZEO server was interrupted for a longer time.

37 38 39 40 41 42 43 44 45 46 47
- The connection now estimates the object size based on its pickle size
  and informs the cache about size changes.

  The database got additional configurations options (`cache-size-bytes`
  and `historical-cache-size-bytes`) to limit the
  cache size based on the estimated total size of cached objects.
  The default values are 0 which has the interpretation "do not limit
  based on the total estimated size".
  There are corresponding methods to read and set the new configuration
  parameters.

48 49 50
- Cleaned-up the storage iteration API and provided an iterator implementation
  for ZEO.

51 52
- Versions are no-longer supported.

53
- ZEO cache files can be larger than 4G. Note that older ZEO cache
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
  files are not supported.

- Document conflict resolution (see ZODB/ConflictResolution.txt).

- Support multidatabase references in conflict resolution.

- Make it possible to examine oid and (in some situations) database
  name of persistent object references during conflict resolution.

- Moved 'transaction' module out of ZODB.
  ZODB depends upon this module, but it must be installed separately.

- ZODB installation now requires setuptools.

- Added `offset` information to output of `fstail`
  script. Added test harness for this script.

- Added support for read-only, historical connections based
  on datetimes or serials (TIDs).  See
  src/ZODB/historical_connections.txt.

75 76
- Removed the ThreadedAsync module.

77 78
- Now depend on zc.lockfile

79 80 81
Bugs Fixed
----------

82 83
- Fix for bug #251037: Make packing of blob storages non-blocking.

Christian Theune's avatar
typo  
Christian Theune committed
84
- Fix for bug #220856: Completed implementation of ZEO authentication.
85

86 87 88
- Fix for bug #184057: Make initialisation of small ZEO client file cache
  sizes not fail.

89 90 91
- Fix for bug #184054: MappingStorage used to raise a KeyError during `load`
  instead of a POSKeyError.

92 93 94
- Fixed bug in Connection.TmpStore: load() would not defer to the backend
  storage for loading blobs.

95 96 97
- Fix for bug #181712: Make ClientStorage update `lastTransaction` directly
  after connecting to a server, even when no cache verification is necessary.

98 99
- Fixed bug in blob filesystem helper: the `isSecure` check was inversed.

100 101 102
- Fixed bug in transaction buffer: a tuple was unpacked incorrectly in
  `clear`.

103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
- Bugfix the situation in which comparing persistent objects (for
  instance, as members in BTree set or keys of BTree) might cause data
  inconsistency during conflict resolution.

- Fixed bug 153316: persistent and BTrees were using `int`
  for memory sizes which caused errors on x86_64 Intel Xeon machines
  (using 64-bit Linux).
  
- Fixed small bug that the Connection.isReadOnly method didn't
  work after a savepoint.

- Bug #98275: Made ZEO cache more tolerant when invalidating current
  versions of objects.

- Fixed a serious bug that could cause client I/O to stop
  (hang). This was accomonied by a critical log message along the
  lines of: "RuntimeError: dictionary changed size during iteration".

- Fixed bug #127182: Blobs were subclassable which was not desired.

- Fixed bug #126007: tpc_abort had untested code path that was
  broken.

- Fixed bug #129921: getSize() function in BlobStorage could not
  deal with garbage files

- Fixed bug in which MVCC would not work for blobs.
130 131 132

- Fixed bug in ClientCache that occurred with objects larger than the total
  cache size.
Jim Fulton's avatar
Jim Fulton committed
133

134 135 136 137 138 139 140 141 142
3.8.1b9 (2008-??-??)
====================

Bugs Fixed:

- When an error occured attempting to lock a file and logging of said error was
  enabled.

3.8.1b8 (2008-09-22
Jim Fulton's avatar
Jim Fulton committed
143 144 145 146
====================

Bugs Fixed:

147 148 149 150 151 152 153 154 155 156 157 158
- FileStorages previously saved indexes after a certain
  number of writes.  This was done during the last phase of two-phase
  commit, which made this critical phase more subject to errors than
  it should have been.  Also, for large databases, saves were done so
  infrequently as to be useless.  The feature was removed to reduce
  the chance for errors during the last phase of two-phase commit.

- File storages previously kept an internal object id to
  transaction id mapping as an optimization. This mapping caused
  excessive memory usage and failures during the last phase of
  two-phase commit. This optimization has been removed.

Jim Fulton's avatar
Jim Fulton committed
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214
- Refactored handling of invalidations on ZEO clients to fix
  a possible ordering problem for invalidation messages.

- An ZEO cache internal data structure can get out of sync
  with the data in a way that prevents data from being loaded into the
  cache. We don't yet know why, but added an exception handler to
  prevent this error from being fatal.

- Fixed setup.py use of setuptools vs distutils, so .c and .h
  files are included in the bdist_egg.

- On many systems, it was impossible to create more than 32K
  blobs. Added a new blob-directory layout to work around this
  limitation.


3.8.1b7 (2008-08-23)
====================

Bugs Fixed:

- Fixed a bug, introduced in an earlier beta, that allowed
  clients to connect to out of date servers.

- Fixed bug that could lead to memory errors due to the use
  of a Python dictionary for a mapping that can grow large.

- Fixed bug #251037: Made packing of blob storages non-blocking.

3.8.1b6 (2008-07-24)
====================

Bugs Fixed:

- Fixed a bug that could cause InvalidObjectReference errors
  for objects that were explicitly added to a database if the object
  was modified after a savepoint that added the object.

3.8.1b5 (2008-07-14)
====================

Bugs Fixed:

- Fixed several bugs that caused ZEO cache corruption when connecting
  to servers. These bugs affected both persistent and non-persistent caches. 

- Improved the the ZEO client shutdown support to try to
  avoid spurious errors on exit, especially for scripts, such as zeopack.

3.8.1b4 (2008-05-23)
====================

Bugs Fixed:

- Packing failed for databases containing cross-database references.

Jim Fulton's avatar
Jim Fulton committed
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263
3.8.1b3 (2008-05-14)
====================

Bugs Fixed:

- Cross-database references to databases with empty names
  weren't constructed properly.

3.8.1b2 (2008-05-13)
====================

Bugs Fixed:

- The cache used an excessive amount of memory, causing applications
  with large caches to exhaust available memory. 

3.8.1b1 (2008-05-08)
====================

Bugs Fixed:

- Fixed a number of bugs in the handling of persistent ZEO caches:

  - Cache records are written in several steps.  If a process exits
    after writing begins and before it is finishes, the cache will be
    corrupt on restart.  The way records are writted was changed to
    make cache record updates atomic.

  - There was no lock file to prevent opening a cache multiple times
    at once, which would lead to corruption.  Persistent caches now
    use lock files, in the same way that file storages do.

  - A bug in the cache-opening logic led to cache failure in the
    unlikely event that a cache has no free blocks.

- When using ZEO Client Storages, Errors occured when trying to store
  objects too big to fit in the ZEO cache file.

- Fixed bug in blob filesystem helper: the `isSecure` check was inversed.

- Fixed bug in transaction buffer: a tuple was unpacked incorrectly in
  `clear`.

- Fixed bug in Connection.TmpStore: load() would not defer to the
  backend storage for loading blobs.

- Fixed bug #190884: Wrong reference to `POSKeyError` caused NameError.

- Completed implementation of ZEO authentication. This fixes issue 220856.