CHANGES.rst 12.7 KB
Newer Older
Tres Seaver's avatar
Tres Seaver committed
1 2
Changelog
=========
Jim Fulton's avatar
Jim Fulton committed
3

4
5.4.0 (unreleased)
Jens Vagelpohl's avatar
Jens Vagelpohl committed
5 6
------------------

7 8 9 10 11 12 13 14 15 16 17 18
- Test ZEO only with the following storages
  ``FileStorage`` with server side blobs,
  ``FileStorage`` with shared blob directory,
  ``MappingStorage`` (without blobs).

  Those tests cover all storage features with impact on ZEO:
  without blobs, with shared blobs and with server side blobs;
  load, store, two phase commit, undo.
  Therefore, passing tests for those storages provide high confidence that ZEO
  works for other properly implemented storages as well.
  See `#198 <https://github.com/zopefoundation/ZEO/issues/198>`_.

19
- Lint the code with flake8
20

21 22
- Add support for Python 3.10.

dieter's avatar
dieter committed
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
- Add ``ConflictError`` to the list of unlogged server exceptions
  (the client/its application should determine whether it wants
  them logged).

  Prevent ``no current transaction: tpc_abort()`` server log entries.
  The storage API allows ``tpc_abort`` to be called with an
  invalid transaction (the call should be ignored in this case)
  and the server's ``tpc_vote`` relies on this.

  Change the server's log message label for request exceptions
  from ``Bad request ...`` to ``... raised exception:``,
  hinting towards a server rather than client problem.

  See `issue 156 <https://github.com/zopefoundation/ZEO/issues/156>`_.

Jens Vagelpohl's avatar
Jens Vagelpohl committed
38

Jens Vagelpohl's avatar
Jens Vagelpohl committed
39
5.3.0 (2022-03-24)
Jens Vagelpohl's avatar
Jens Vagelpohl committed
40 41
------------------

dieter's avatar
dieter committed
42
- Remove tests for the ``asyncio/mtacceptor`` module, it appears unused
43 44 45 46 47
  and presents a maintenance burden. The module will be removed in
  ZEO version 6.

- Remove GitHub Actions testing for Python 3.5, it has reached end of life.

48 49 50 51 52
- Add support for Python 3.8 and Python 3.9.

- Add more accurate error handling for ``asyncio.CancelledError``.
  See `issue 165 <https://github.com/zopefoundation/ZEO/issues/165>`_.

dieter's avatar
dieter committed
53 54 55
- Fix bug related to blobs stored by ``ZEO``
  `#150 <https://github.com/zopefoundation/ZEO/issues/150>`_.

Jens Vagelpohl's avatar
Jens Vagelpohl committed
56

Jens Vagelpohl's avatar
Jens Vagelpohl committed
57
5.2.3 (2021-08-09)
Jens Vagelpohl's avatar
Jens Vagelpohl committed
58 59
------------------

60 61 62 63 64 65
- Ensure ``ZEO`` satisfies the ``ZODB >= 5.6`` requirement that
  ``lastTransaction()`` changes only after invalidation processing.
  Violating this requirement can lead to race conditions and
  associated data corruption
  `#166 <https://github.com/zopefoundation/ZEO/issues/166>`_.

66 67 68
- Add automated tests against the ZODB ``master`` branch
  see `issue 177 <https://github.com/zopefoundation/ZEO/issues/177>`_.

69 70
- Fix data corruption due to race between load and external invalidations.
  See `issue 155 <https://github.com/zopefoundation/ZEO/issues/155>`_.
Jens Vagelpohl's avatar
Jens Vagelpohl committed
71

72 73 74
- Improve log message when client cache is out of sync with server.
  See `issue 142 <https://github.com/zopefoundation/ZEO/issues/142>`_.

Jens Vagelpohl's avatar
Jens Vagelpohl committed
75
5.2.2 (2020-08-11)
Jim Fulton's avatar
Jim Fulton committed
76 77
------------------

78 79
- Remove support for Python 3.4

80
- Provide proper CA test certificates to allow the SSL tests succeed for Py3
Jim Fulton's avatar
Jim Fulton committed
81

Jürgen Gmach's avatar
Jürgen Gmach committed
82
- Replace deprecated occurrences of ``Thread.isAlive()`` by ``Thread.is_alive()``
83 84
  See `pull request 154 <https://github.com/zopefoundation/ZEO/pull/154>`_.

85 86 87
- Include both modified and just created objects into invalidations.
  See `pull request 160 <https://github.com/zopefoundation/ZEO/pull/160>`_.

Jim Fulton's avatar
Jim Fulton committed
88

Jim Fulton's avatar
Jim Fulton committed
89
5.2.1 (2019-02-09)
Jim Fulton's avatar
Jim Fulton committed
90 91
------------------

92
- Add support for Python 3.7.
Jim Fulton's avatar
Jim Fulton committed
93

94
- Switch from ``msgpack-python`` to ``msgpack``. Currently a version < 0.6
95 96
  is required.

97 98 99 100 101 102
- Stop calling the deprecated ``checkSecure`` method when creating a
  ``ClientStorage``. With ZODB 5.2.2 and above, this issued a warning.
  With older versions, this *could* issue a log message, but this was
  considered `a misfeature
  <https://github.com/zopefoundation/ZODB/issues/155>`_. See `issue
  134 <https://github.com/zopefoundation/ZEO/issues/134>`_.
Jim Fulton's avatar
Jim Fulton committed
103

Jens Vagelpohl's avatar
Jens Vagelpohl committed
104

Jim Fulton's avatar
Jim Fulton committed
105
5.2.0 (2018-03-28)
Jim Fulton's avatar
Jim Fulton committed
106 107
------------------

108 109
- Fixed: The quickstart/ad-hoc/play ZEO server relied on test
  dependencies. See `issue 105
110
  <https://github.com/zopefoundation/ZEO/issues/105>`_.
Jim Fulton's avatar
Jim Fulton committed
111

112 113 114 115
- Disallow passing strings as addresses to ClientStorage under Windows
  because string addresses are used for unix-domain sockets, which
  aren't supported on Windows. See `issue 107
  <https://github.com/zopefoundation/ZEO/issues/107>`_.
Jim Fulton's avatar
Jim Fulton committed
116

117 118 119 120
- Renamed all ``async`` attributes to ``async_`` for compatibility
  with Python 3.7. See `issue 104
  <https://github.com/zopefoundation/ZEO/issues/104>`_.

121 122
- Fixed to work with some changes made in ZODB 5.4.0.

dieter's avatar
dieter committed
123
  Client-side updates are included for ZODB 5.4.0 or databases that
124
  already had ``zodbpickle.binary`` OIDs. See `issue 113
125 126
  <https://github.com/zopefoundation/ZEO/issues/113>`_.

127 128 129 130
- ZEO now uses pickle protocol 3 for both Python 2 and Python 3.
  (Previously protocol 1 was used for Python 2.) This matches the
  change in ZODB 5.4.0.

Jim Fulton's avatar
Jim Fulton committed
131
5.1.2 (2018-03-27)
Jim Fulton's avatar
Jim Fulton committed
132 133
------------------

Jim Fulton's avatar
Jim Fulton committed
134 135 136
- Fix: ZEO didn't work with a change in ZODB 5.4.0.

  (Allow ``zodbpickle.binary`` to be used in RPC requests, which is
137
  necessary for compatibility with ZODB 5.4.0 on Python 2. See `issue
Jim Fulton's avatar
Jim Fulton committed
138
  107 <https://github.com/zopefoundation/ZEO/issues/107>`_.)
Jim Fulton's avatar
Jim Fulton committed
139

Jim Fulton's avatar
Jim Fulton committed
140
5.1.1 (2017-12-18)
Jim Fulton's avatar
Jim Fulton committed
141 142
------------------

143 144
- All classes are new-style classes on Python 2 (they were already
  new-style on Python 3). This improves performance on PyPy. See
145
  `issue 86 <https://github.com/zopefoundation/ZEO/pull/86>`_.
Jim Fulton's avatar
Jim Fulton committed
146

147 148
- Fixed removing UNIX socket files under Python 2 with ZConfig 3.2.0.
  See `issue 90 <https://github.com/zopefoundation/ZEO/issues/90>`_.
Jim Fulton's avatar
Jim Fulton committed
149

Jim Fulton's avatar
Jim Fulton committed
150
5.1.0 (2017-04-03)
Jim Fulton's avatar
Jim Fulton committed
151 152
------------------

Jim Fulton's avatar
Jim Fulton committed
153 154 155 156 157 158 159
- Added support for serializing ZEO messages using `msgpack
  <http://msgpack.org/index.html>`_ rather than pickle.  This helps
  pave the way to supporting `byteserver
  <https://github.com/jimfulton/byteserver>`_, but it also allows ZEO
  servers to support Python 2 or 3 clients (but not both at the same
  time) and may provide a small performance improvement.

Jim Fulton's avatar
Jim Fulton committed
160 161 162 163 164
- Possibly fixed the deprecated and untested zeoctl script.

- Removed zeopasswd, which no longer makes sense given that ZEO
  authentication was removed, in favor of SSL.

Jim Fulton's avatar
5.0.4  
Jim Fulton committed
165 166 167
5.0.4 (2016-11-18)
------------------

168 169
- Fixed: ZEO needed changes to work with recent transaction changes.

Jim Fulton's avatar
5.0.4  
Jim Fulton committed
170 171
  ZEO now works with the latest versions of ZODB and transaction

172 173 174 175 176 177
5.0.3 (2016-11-18)
------------------

- Temporarily require non-quite-current versions of ZODB and
  transaction until we can sort out some recent breakage.

Jim Fulton's avatar
5.0.2  
Jim Fulton committed
178
5.0.2 (2016-11-02)
179 180
------------------

181 182
- Provide much better performance on Python 2.

183
- Provide better error messages when pip tries to install ZEO on an
184 185
  unsupported Python version. See `issue 75
  <https://github.com/zopefoundation/ZEO/issues/75>`_.
186

Jim Fulton's avatar
5.0.1  
Jim Fulton committed
187 188 189 190 191
5.0.1 (2016-09-06)
------------------

Packaging-related doc fix

Jim Fulton's avatar
5.0.0  
Jim Fulton committed
192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 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
5.0.0 (2016-09-06)
------------------

This is a major ZEO revision, which replaces the ZEO network protocol
implementation.

New features:

- SSL support

- Optional client-side conflict resolution.

- Lots of mostly internal clean ups.

- ``ClientStorage``server-sync`` configuration option and
  ``server_sync`` constructor argument to force a server round trip at
  the beginning of transactions to wait for any outstanding
  invalidations at the start of the transaction to be delivered.

- Client disconnect errors are now transient errors.  When
  applications retry jobs that raise transient errors, jobs (e.g. web
  requests) with disconnect errors will be retried. Together with
  blocking synchronous ZEO server calls for a limited time while
  disconnected, this change should allow brief disconnections due to
  server restart to avoid generating client-visible errors (e.g. 500
  web responses).

- ClientStorage prefetch method to prefetch oids.

  When oids are prefetched, requests are made at once, but the caller
  doesn't block waiting for the results.  Rather, then the caller
  later tries to fetch data for one of the object ids, it's either
  delivered right away from the ZEO cache, if the prefetch for the
  object id has completed, or the caller blocks until the inflight
  prefetch completes. (No new request is made.)

Dropped features:

- The ZEO authentication protocol.

  This will be replaced by new authentication mechanims leveraging SSL.

- The ZEO monitor server.

- Full cache verification.

- Client suppprt for servers older than ZODB 3.9

- Server support for clients older than ZEO 4.2.0

Jim Fulton's avatar
Jim Fulton committed
242 243 244
5.0.0b0 (2016-08-18)
--------------------

245 246 247 248 249
- Added a ``ClientStorage`` ``server-sync`` configuration option and
  ``server_sync`` constructor argument to force a server round trip at
  the beginning of transactions to wait for any outstanding
  invalidations at the start of the transaction to be delivered.

250 251 252
- When creating an ad hoc server, a log file isn't created by
  default. You must pass a ``log`` option specifying a log file name.

253 254 255 256
- The ZEO server register method now returns the storage last
  transaction, allowing the client to avoid an extra round trip during
  cache verification.

257 258 259 260 261 262 263 264
- Client disconnect errors are now transient errors.  When
  applications retry jobs that raise transient errors, jobs (e.g. web
  requests) with disconnect errors will be retried. Together with
  blocking synchronous ZEO server calls for a limited time while
  disconnected, this change should allow brief disconnections due to
  server restart to avoid generating client-visible errors (e.g. 500
  web responses).

265 266
- Fixed bugs in using the ZEO 5 client with ZEO 4 servers.

Jim Fulton's avatar
Jim Fulton committed
267 268 269
5.0.0a2 (2016-07-30)
--------------------

270 271 272 273 274 275 276 277 278 279 280 281 282 283
- Added the ability to pass credentials when creating client storages.

  This is experimental in that passing credentials will cause
  connections to an ordinary ZEO server to fail, but it facilitates
  experimentation with custom ZEO servers. Doing this with custom ZEO
  clients would have been awkward due to the many levels of
  composition involved.

  In the future, we expect to support server security plugins that
  consume credentials for authentication (typically over SSL).

  Note that credentials are opaque to ZEO. They can be any object with
  a true value.  The client mearly passes them to the server, which
  will someday pass them to a plugin.
Jim Fulton's avatar
Jim Fulton committed
284 285 286 287 288 289 290 291 292 293 294 295 296

5.0.0a1 (2016-07-21)
--------------------

- Added a ClientStorage prefetch method to prefetch oids.

  When oids are prefetched, requests are made at once, but the caller
  doesn't block waiting for the results.  Rather, then the caller
  later tries to fetch data for one of the object ids, it's either
  delivered right away from the ZEO cache, if the prefetch for the
  object id has completed, or the caller blocks until the inflight
  prefetch completes. (No new request is made.)

297 298 299
- Fixed: SSL clients of servers with signed certs didn't load default
  certs and were unable to connect.

Jim Fulton's avatar
Jim Fulton committed
300 301
5.0.0a0 (2016-07-08)
--------------------
302 303 304 305 306 307

This is a major ZEO revision, which replaces the ZEO network protocol
implementation.

New features:

Jim Fulton's avatar
Jim Fulton committed
308 309 310 311
- SSL support

- Optional client-side conflict resolution.

Jim Fulton's avatar
Jim Fulton committed
312
- Lots of mostly internal clean ups.
313 314 315 316 317 318 319 320 321 322 323 324 325 326 327

Dropped features:

- The ZEO authentication protocol.

  This will be replaced by new authentication mechanims leveraging SSL.

- The ZEO monitor server.

- Full cache verification.

- Client suppprt for servers older than ZODB 3.9

- Server support for clients older than ZEO 4.2.0

Jim Fulton's avatar
4.2.0  
Jim Fulton committed
328
4.2.0 (2016-06-15)
Tres Seaver's avatar
svb  
Tres Seaver committed
329 330
------------------

331 332 333 334
- Changed loadBefore to operate more like load behaved, especially
  with regard to the load lock.  This allowes ZEO to work with the
  upcoming ZODB 5, which used loadbefore rather than load.

Jim Fulton's avatar
typo  
Jim Fulton committed
335
  Reimplemented load using loadBefore, thus testing loadBefore
336 337
  extensively via existing tests.

Jim Fulton's avatar
4.2.0  
Jim Fulton committed
338 339
- Other changes to work with ZODB 5 (as well as ZODB 4)

340 341
- Fixed: the ZEO cache loadBefore method failed to utilize current data.

342
- Drop support for Python 2.6 and 3.2.
Tres Seaver's avatar
svb  
Tres Seaver committed
343

344 345 346
- Fix AttributeError: 'ZEOServer' object has no attribute 'server' when
  StorageServer creation fails.

Tres Seaver's avatar
Tres Seaver committed
347 348
4.2.0b1 (2015-06-05)
--------------------
Jason Madden's avatar
Jason Madden committed
349 350 351

- Add support for PyPy.

Jim Fulton's avatar
4.1.0  
Jim Fulton committed
352
4.1.0 (2015-01-06)
Tres Seaver's avatar
Tres Seaver committed
353 354 355
------------------

- Add support for Python 3.4.
Patrick Gerken's avatar
Patrick Gerken committed
356

357 358 359 360
- Added a new ``ruok`` client protocol for getting server status on
  the ZEO port without creating a full-blown client connection and
  without logging in the server log.

Patrick Gerken's avatar
Patrick Gerken committed
361 362
- Log errors on server side even if using multi threaded delay.

363 364
4.0.0 (2013-08-18)
------------------
365

Tres Seaver's avatar
Tres Seaver committed
366 367
- Avoid reading excess random bytes when setting up an auth_digest session.

Tres Seaver's avatar
Tres Seaver committed
368 369 370 371 372 373
- Optimize socket address enumeration in ZEO client (avoid non-TCP types).

- Improve Travis CI testing support.

- Assign names to all threads for better runtime debugging.

374 375
- Fix "assignment to keyword" error under Py3k in 'ZEO.scripts.zeoqueue'.

Tres Seaver's avatar
Tres Seaver committed
376 377
4.0.0b1 (2013-05-20)
--------------------
Tres Seaver's avatar
Tres Seaver committed
378

379
- Depend on ZODB >= 4.0.0b2
380

Tres Seaver's avatar
Tres Seaver committed
381
- Add support for Python 3.2 / 3.3.
Tres Seaver's avatar
Tres Seaver committed
382

Jim Fulton's avatar
Jim Fulton committed
383
4.0.0a1 (2012-11-19)
Jim Fulton's avatar
Jim Fulton committed
384
--------------------
Jim Fulton's avatar
Jim Fulton committed
385 386 387 388 389 390 391 392 393 394 395 396 397 398

First (in a long time) separate ZEO release.

Since ZODB 3.10.5:

- Storage servers now emit Serving and Closed events so subscribers
  can discover addresses when dynamic port assignment (bind to port 0)
  is used. This could, for example, be used to update address
  information in a ZooKeeper database.

- Client storages have a method, new_addr, that can be used to change
  the server address(es). This can be used, for example, to update a
  dynamically determined server address from information in a
  ZooKeeper database.