File: NEWS.txt

package info (click to toggle)
zodb 1%3A3.6.0-2%2Blenny3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 6,288 kB
  • ctags: 8,270
  • sloc: python: 44,148; ansic: 7,528; xml: 899; sh: 481; makefile: 116; perl: 37
file content (207 lines) | stat: -rw-r--r-- 8,087 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
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
What's new in ZODB3 3.6.0?
==========================
Release date: 05-Jan-2006

Following is combined news from internal releases (to support ongoing
Zope3 development).  These are the dates of the internal releases:

- 3.6b6 01-Jan-2006
- 3.6b5 18-Dec-2005
- 3.6b4 04-Dec-2005
- 3.6b3 06-Nov-2005
- 3.6b2 25-Oct-2005
- 3.6b1 24-Oct-2005
- 3.6a4 07-Oct-2005
- 3.6a3 07-Sep-2005
- 3.6a2 06-Sep-2005
- 3.6a1 04-Sep-2005

Removal of Features Deprecated in ZODB 3.4
------------------------------------------

(3.6b2) ZODB 3.6 no longer contains features officially deprecated in the
ZODB 3.4 release.  These include:

- ``get_transaction()``.  Use ``transaction.get()`` instead.
  ``transaction.commit()`` is a shortcut spelling of
  ``transaction.get().commit()``, and ``transaction.abort()``
  of ``transaction.get().abort()``.  Note that importing ZODB no longer
  installs ``get_transaction`` as a name in Python's ``__builtin__``
  module either.

- The ``begin()`` method of ``Transaction`` objects.  Use the ``begin()``
  method of a transaction manager instead.  ``transaction.begin()`` is
  a shortcut spelling to call the default transaction manager's ``begin()``
  method.

- The ``dt`` argument to ``Connection.cacheMinimize()``.

- The ``Connection.cacheFullSweep()`` method.  Use ``cacheMinimize()``
  instead.

- The ``Connection.getTransaction()`` method.  Pass a transaction manager
  to ``DB.open()`` instead.

- The ``Connection.getLocalTransaction()`` method.  Pass a transaction
  manager to ``DB.open()`` instead.

- The ``cache_deactivate_after`` and ``version_cache_deactivate_after``
  arguments to the ``DB`` constructor.

- The ``temporary``, ``force``, and ``waitflag`` arguments
  to ``DB.open()``.  ``DB.open()`` no longer blocks (there's no longer
  a fixed limit on the number of open connections).

- The ``transaction`` and ``txn_mgr``arguments to ``DB.open()``.  Use
  the ``transaction_manager`` argument instead.

- The ``getCacheDeactivateAfter``, ``setCacheDeactivateAfter``,
  ``getVersionCacheDeactivateAfter`` and ``setVersionCacheDeactivateAfter``
  methods of ``DB``.

Persistent
----------

- (3.6a4) ZODB 3.6 introduces a change to the basic behavior of Persistent
  objects in a particular end case.  Before ZODB 3.6, setting
  ``obj._p_changed`` to a true value when ``obj`` was a ghost was ignored:
  ``obj`` remained a ghost, and getting ``obj._p_changed`` continued to
  return ``None``.  Starting with ZODB 3.6, ``obj`` is activated instead
  (unghostified), and its state is changed from the ghost state to the
  changed state.  The new behavior is less surprising and more robust.

- (3.6b5) The documentation for ``_p_oid`` now specifies the concrete
  type of oids (in short, an oid is either None or a non-empty string).

Commit hooks
------------

- (3.6a1) The ``beforeCommitHook()`` method has been replaced by the new
  ``addBeforeCommitHook()`` method, with a more-robust signature.
  ``beforeCommitHook()`` is now deprecated, and will be removed in ZODB 3.8.
  Thanks to Julien Anguenot for contributing code and tests.

Connection management
---------------------

- (3.6b6) When more than ``pool_size`` connections have been closed,
  ``DB`` forgets the excess (over ``pool_size``) connections closed first.
  Python's cyclic garbage collection can take "a long time" to reclaim them
  (and may in fact never reclaim them if application code keeps strong
  references to them), but such forgotten connections can never be opened
  again, so their caches are now cleared at the time ``DB`` forgets them.
  Most applications won't notice a difference, but applications that open
  many connections, and/or store many large objects in connection caches,
  and/or store limited resources (such as RDB connections) in connection
  caches may benefit.

ZEO
---

- (3.6a4) Collector 1900.  In some cases of pickle exceptions raised by
  low-level ZEO communication code, callers of ``marshal.encode()`` could
  attempt to catch an exception that didn't actually exist, leading to an
  erroneous ``AttributeError`` exception.  Thanks to Tres Seaver for the
  diagnosis.

BaseStorage
-----------

- (3.6a4) Nothing done by ``tpc_abort()`` should raise an exception.
  However, if something does (an error case), ``BaseStorage.tpc_abort()``
  left the commit lock in the acquired state, causing any later attempt
  to commit changes hang.

Multidatabase
-------------

- (3.6b1) The ``database_name`` for a database in a multidatabase
  collection can now be specified in a config file's ``<zodb>`` section,
  as the value of the optional new ``database_name`` key.  The
  ``.databases`` attribute cannot be specified in a config file, but
  can be passed as the optional new ``databases`` argument to the
  ``open()`` method of a ZConfig factory for type ``ZODBDatabase``.
  For backward compatibility, Zope 2.9 continues to allow using the
  name in its ``<zodb_db name>`` config section as the database name
  (note that ``<zodb_db>`` is defined by Zope, not by ZODB -- it's a
  Zope-specific extension of ZODB's ``<zodb>`` section).

PersistentMapping
-----------------

- (3.6b4) ``PersistentMapping`` makes changes by a ``pop()`` method call
  persistent now.

- (3.6a1) The ``PersistentMapping`` class has an ``__iter__()`` method
  now, so that objects of this type work well with Python's iteration
  protocol.  For example, if ``x`` is a ``PersistentMapping`` (or
  Python dictionary, or BTree, or ``PersistentDict``, ...), then
  ``for key in x:`` iterates over the keys of ``x``, ``list(x)`` creates
  a list containing ``x``'s keys, ``iter(x)`` creates an iterator for
  ``x``'s keys, and so on.

Tools
-----

- (3.6b5) The changeover from zLOG to the logging module means that some
  tools need to perform minimal logging configuration themselves. Changed
  the zeoup script to do so and thus enable it to emit error messages.

BTrees
------

- (3.6a1) BTrees and Buckets now implement the ``setdefault()`` and ``pop()``
  methods. These are exactly like Python's dictionary methods of the same
  names, except that ``setdefault()`` requires both arguments (and Python is
  likely to change to require both arguments too -- defaulting the
  ``default`` argument to ``None`` has no viable use cases).  Thanks to
  Ruslan Spivak for contributing code, tests, and documentation.

- (3.6a1) Collector 1873.  It wasn't possible to construct a BTree or Bucket
  from, or apply their update() methods to, a PersistentMapping or
  PersistentDict.  This works now.

ZopeUndo
--------

- (3.6a4) Collector 1810. A previous bugfix (#1726) broke listing undoable
  transactions for users defined in a non-root acl_users folder. Zope logs
  a acl_users path together with a username (separated by a space) and this
  previous fix failed to take this into account.

Connection
----------

- (3.6b5) An optimization for loading non-current data (MVCC) was
  inadvertently disabled in ``_setstate()``; this has been repaired.

Documentation
-------------

- (3.6b3) Thanks to Stephan Richter for converting many of the doctest
  files to ReST format.  These are now chapters in the Zope 3 apidoc too.

- (3.6b4) Several misspellings of "occurred" were repaired.

Development
-----------

- (3.6a1) The source code for the old ExtensionClass-based Persistence
  package moved, from ZODB to the Zope 2.9 development tree.  ZODB 3.5
  makes no use of Persistence, and, indeed, the Persistence package could
  not be compiled from a ZODB release, since some of the C header files
  needed appear only in Zope.

- (3.6a3) Re-added the ``zeoctl`` module, for the same reasons
  ``mkzeoinst`` was re-added (see below).

- (3.6a2) The ``mkzeoinst`` module was re-added to ZEO, because Zope3
  has a script that expects to import it from there.  ZODB's ``mkzeoinst``
  script was rewritten to invoke the ``mkzeoinst`` module.

``transact``
------------

- (3.6b4) Collector 1959:  The undocumented ``transact`` module no
  longer worked.  It remains undocumented and untested, but thanks to
  Janko Hauser it's possible that it works again ;-).