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
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
src/ZEO/tests/component.xml
0 → 100644
This diff is collapsed.
src/ZEO/tests/racetest.py
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Please register or sign in to comment