Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
Z
ZEO
  • Project
    • Project
    • Details
    • Activity
    • Releases
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Commits
  • Issue Boards
  • Kirill Smelkov
  • ZEO
  • Repository

Switch branch/tag
  • ZEO
  • .meta.toml
Find file
BlameHistoryPermalink
  • Kirill Smelkov's avatar
    client: Remove support for interoperability with ZEO4 server · ee4d7bc7
    Kirill Smelkov authored Sep 05, 2022
    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
.meta.toml 1.7 KB
EditWeb IDE

Replace .meta.toml

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7