cubicweb #1672022 optimize hooks selection [resolved]

prune hooks when multiple entities are concerned by a hm.call_hooks()

the idea is to make a first pass over all the hooks in the registry and to mark put some of them in a disabled list. The disabled hooks are the one which:

  • are disabled at the session level
  • have a match_rtype or an is_instance selector which does not match the rtype / etype of the relations / entities for which we are calling the hooks. This works because the repository calls the hooks grouped by rtype or by etype when using the entities or eids_to_from keyword arguments

Only hooks with a simple selector or an AndSelector of simple selectors (is_instance and match_rtype) are considered for disabling.

prioritynormal
typebug
done in3.13.0
load left0.000
closed by#d240cff2d8ba [hooks selection optimization] prune hooks when multiple entities are concerned by a hm.call_hooks() (closes: #1672022)