client: Remove support for interoperability with ZEO4 server
As explained in https://github.com/zopefoundation/ZEO/issues/209 there is possibility of data corruption when ZEO5 client loads data from ZEO4 server. A fix for this is not trivial and would have to forward-port load-tracking in client from ZEO4 to ZEO5. However, as discussed in https://github.com/zopefoundation/ZEO/issues/209, we believe that noone is actually using ZEO5.client-ZEO4.server configuration. Thus, given that it was already planned to drop ZEO4 support soon, it was decided to drop support for ZEO4 server instead of fixing it. This contains 3 patches: - patch 1 adds test that catches mentioned data corruption problem - patch 2 corrects documentation for credentials (ZEO5 feature) and user/password/realm (ZEO4-only basic auth) - patch 3 actually removes support for interoperability with ZEO4. Please see individual patches and their descriptions for details. In particular I believe the following excerpt from patch 3 is important to note here as well: ---- 8< ---- - we do _not_ remove verify_invalidation_queue added by Jim in 2016 via 5ba506e7 (Fixed a bug handling ZEO4 invalidations during cache verification) with the following message: ZEO4 servers can send invalidations out of order with ``getInvalidations`` results, presumably because ``getInvalidations`` didn't get the commit lock. ZEO4 clients worked around this (maybe not directly) by queuing invalidations during cache verification. ZEO5 servers don't send invalidations out of order with ``getInvalidations`` calls and the ZEO5 client didn't need an invalidation queue, except they do need one to work correctly with ZEO4 servers. :/ This feature, even-though it is commented as being ZEO4-only, looks too risky to be removed in stable branch, especially taking into account that in https://github.com/zopefoundation/ZEO/pull/195 @d-maurer instead of removing, preserved this queue in a similar form: https://github.com/zopefoundation/ZEO/blob/30e271bbe5380a1fe65f3ca776bc70b4b29b58d9/src/ZEO/asyncio/client.py#L90 https://github.com/zopefoundation/ZEO/blob/30e271bbe5380a1fe65f3ca776bc70b4b29b58d9/src/ZEO/asyncio/client.py#L277-L280 https://github.com/zopefoundation/ZEO/blob/30e271bbe5380a1fe65f3ca776bc70b4b29b58d9/src/ZEO/asyncio/client.py#L630-L641 I believe it is better be safe than sorry. ---- 8< ---- Thanks beforehand, Kirill /reviewed-by @dataflake, @d-maurer /reviewed-on https://github.com/zopefoundation/ZEO/pull/213
Showing
src/ZEO/tests/component.xml
0 → 100644
src/ZEO/tests/racetest.py
0 → 100644
Please register or sign in to comment