Skip to content
  • Julien Cristau's avatar
    Bring back the separate web-side entity cache · da712d3f0601
    Julien Cristau authored
    Prior to changeset 635cfac73d28 "[repoapi] fold ClientConnection into
    Connection", we had two entity caches: one on the client/dbapi/web side,
    and one on the server/repo side.  This is a waste, but it is actually
    needed as long as we have the magic _cw attribute on entities which must
    sometimes be a request and sometimes a cnx.  Removing the duplication
    caused weird problems with entity._cw alternating between both types of
    objects, which is unexpected by both the repo and the web sides.
    
    We add an entity cache on ConnectionCubicWebRequestBase, separate from
    the Connection's, and bring back the
    _cw_update_attr_cache/dont-cache-attrs mechanism, to let the
    server/edition code let caches know which attributes have been modified
    
    Entity.as_rset can be cached again, as ResultSet no longer modifies the
    entity when fetching it from a cache.
    
    Contrary to the pre-3.21 code, _cw_update_attr_cache now handles web
    requests and connections in the same way (otherwise the cache ends up
    with wrong values if a hook modifies attributes), but dont-cache-attrs
    is never set for (inlined) relations.
    
    Closes #6863543
    da712d3f0601