-
Kirill Smelkov authored
As explained in https://github.com/zopefoundation/ZEO/issues/209 and in recent patch titled "Add tests that demonstrates data corruption when ZEO5 client is served by ZEO4 server" 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. In this patch: - we remove support for testing against ZEO4 server, including removing vendored ZEO4 copy. - remove support for on-client methods that only ZEO4 server would call. This includes the sole method `serialnos`. - remove support for connecting to any server besides one that interoperates with protocol '5'. ZEO4 used protocol '4'. It is explicitly tested by new test that updated ZEO5 client rejects connecting to a server that speaks protocol '4'. - 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.
ee4d7bc7