1. 13 Jul, 2018 6 commits
    • Vincent Pelletier's avatar
      ERP5Catalog: Reduce reliance on user lookup. · 80844559
      Vincent Pelletier authored
      Use Owner role to help filling user_set: owners must be users, never
      groups.
      Only look for users among group_ids when they are candidate for indexation
      into a catalog_role column. This should very significantly reduce the
      number of user lookups, even bringing it to zero on instance with default
      catalog setting of catalog_role_set = set(["viewable_owner"]) .
      Finally, only look for users if there are candidate for lookup.
      80844559
    • Vincent Pelletier's avatar
      ERP5Catalog: Assorted simplifications. · e5b4f73b
      Vincent Pelletier authored
      Test loop invariant outside of loop.
      Use clearer and more consistent variable names.
      Avoid iterating twice when once is enough, allowing removal of
      "local_role_dict" local and simplification of corresponding dict
      structure.
      Avoid creating new instances when the existing one can be mutated.
      Evaluate dict as boolean instead of constructing an empty dict to compare
      against.
      Avoid using %-operator just to concatenate strings (allows en-passant
      typechecking).
      Drop unused locals.
      Do not use a dict when a set would be sufficient.
      e5b4f73b
    • Vincent Pelletier's avatar
      ERP5Security.ERP5GroupManager: Move security category mapping lookup out. · b77914a6
      Vincent Pelletier authored
      So that it can be reused outside of group manager without having to
      duplicate the backward-compatibility order.
      Also, simplify code.
      b77914a6
    • Vincent Pelletier's avatar
      ERP5Security.ERP5GroupManager: Coding style. · efc84a15
      Vincent Pelletier authored
      Move variable initialisations closer to where they are actually used.
      Do not initialise a variable which will always be initilised again before
      its first use.
      Reduce argument indentation.
      Drop unhelpful comments.
      User document may not be a Person instance, use a more neutral variable
      name.
      Avoid single-use locals.
      Take advantage of zLOG.LOG's "error=True" idiom to not have to pull
      exception information ourselves.
      efc84a15
    • Vincent Pelletier's avatar
    • Vincent Pelletier's avatar
      testAlarm: Simplify. · d756d6d9
      Vincent Pelletier authored
      Drop failed activities instead of retrying execution and expecting it to
      both fail and do something (execute alarm, then index result).
      d756d6d9
  2. 11 Jul, 2018 2 commits
  3. 09 Jul, 2018 1 commit
  4. 06 Jul, 2018 1 commit
  5. 05 Jul, 2018 13 commits
  6. 04 Jul, 2018 3 commits
    • Vincent Pelletier's avatar
      CMFActivity: Get rid of an outdated comment. · bc65ba72
      Vincent Pelletier authored
      The original need to touch this comment is that it mentions now-removed
      Folder_reindexObjectList script. But also:
      - it mentions multi-ZEO setups, which are now discouraged if favour of
        using NEO
      - it mentions pre-conceived optimisations, which can be wrong and hence
        misleading (up-to-date measures are needed before deciding what to
        optimise)
      - it mentions a number of activity nodes which is nowadays exceeded
        without seeing any obvious issue caused by activity table deadlocks
        (which are nevertheless still likely an issue, just not yet breaking
        scalability)
      bc65ba72
    • Vincent Pelletier's avatar
      all: Get rid of Folder_reindex{All,Objectlist,TreeObjectList} · e944e1ef
      Vincent Pelletier authored
      These are now superseded by recursiveReindexObject.
      e944e1ef
    • Vincent Pelletier's avatar
      all: Remove recursiveImmediateReindexObject, and references to it. · c0b284be
      Vincent Pelletier authored
      This method does not belong to Folder (nor Base, even as an alias), as
      it recurses wihout any limit in a tree whose node count is unknown.
      Such generic recursion should either be deferred (split in multiple
      transactions, each processing a limited chunk of the tree) or not be
      recursive (which of course depends on the need).
      There is a single caller left (constructInstance) where the subtree size
      is assumed to be reasonable, as it was constructed inside current
      transaction. So essentially rename this method so it is only used in such
      conditions.
      c0b284be
  7. 03 Jul, 2018 9 commits
    • Vincent Pelletier's avatar
      Base: Add isSubtreeIndexable and isAncestryIndexable · 5c4c69a0
      Vincent Pelletier authored
      isAncestryIndexable is a parent-recursive version of isIndexable: it
      will return False if any parent is non-indeable. This simplifies
      disabling indexation of an entire tree, from its root to its deepest
      leaves.
      isSubtreeIndexable allows preventing any subobject from being indexable,
      without having to mark each individual subobject as non-indexable. This
      is different from isAncestryIndexable, as it allows having an indexable
      root, but no children indexable. This is especially useful for Trash Bins,
      where the bin itself should be indexable (because there is no reason not to)
      but its content must not be indexed, while being left as it was found in its
      original location.
      5c4c69a0
    • Vincent Pelletier's avatar
      Folder: Make recursiveReindexObject scalable by calling _recurseCallMethod. · babbf56f
      Vincent Pelletier authored
      Should make Folder_reindexAll and most custom indexation methods obsolete.
      Remaining valid reindexation methods are:
      - reindexObject: for a single document, which may contain subdocuments
        which indexation is not necessary
      - recursiveReindexobject: for any subtree of documents
      - ERP5Site_reindexAll: for site-wide reindexations, as there is a semantic-
        dependent indexation order.
      
      Also, uniformise and factorise spawning immediateReindexObject.
      
      Also:
      - testSupply: Drop check for the previous magic threshold.
        _recurseCallMethod takes care of it all now.
      - testXMLMatrix: Let activities execute before changing cell id.
        This works only because recursiveReindexObject on the matrix spawns a
        single recursiveImmediateReindexObject activity on that context. Now,
        up to 1k immediateReindexObject activities (for the first 1k sub-objects)
        are spawned immediately, preventing their renaming immediately after
        commit.
        So let test wait for indexation before trying to rename.
      - testERP5Security: More activities are now spawned immediately, adapt.
      babbf56f
    • Vincent Pelletier's avatar
      all: Replace after_path_and_method_id on reindexation methods by after_tag · 028c9ad7
      Vincent Pelletier authored
      after_method_id is too aggressive a dependency.
      after_path_and_method_id is marginally better, but is bad practice
      nevertheless, as such activity dependencies remain very hard to introspect.
      Tags allow more variations, and are hence easier to follow.
      Also, add XXX comments when (recursive) reindexation is only added to
      represent the dependency, without certainty that a reindexation is actually
      needed per-se: maybe another place in the code chould just appropriately
      tag its reindexation activities instead, saving at least the cost of
      spawning one more activity set, and at most the cost of actually
      reindexing these documents.
      028c9ad7
    • Vincent Pelletier's avatar
      ERP5Site: Do reindex the whole site after creation. · 9d9e4bbc
      Vincent Pelletier authored
      Also, drop isIndexable instance property, unmasking class property, which
      already has the value we need.
      Also, factorise catalog clearing by reusing ERP5Site_reindexAll's.
      9d9e4bbc
    • Vincent Pelletier's avatar
      CategoryTool: Become a BaseTool subclass. · 4b25512d
      Vincent Pelletier authored
      Allows having a more consistent API between this tool and all other
      Nexedi-maintained tools.
      4b25512d
    • Vincent Pelletier's avatar
      ActivityTool: Inherit from BaseTool. · c3de53b8
      Vincent Pelletier authored
      Reduces code duplication.
      c3de53b8
    • Vincent Pelletier's avatar
      ActivityTool: Do not mark as non-indexable. · c2ebc937
      Vincent Pelletier authored
      portal_activities contains documents which need to be (and are) indexed.
      For consistency, the tool itself should be indexable.
      c2ebc937
    • Vincent Pelletier's avatar
      EPR5Type.Core.Folder: Actually add support for OFS.Folder. · b9202251
      Vincent Pelletier authored
      So it is not just an unused constant (OFS_HANDLER) and no implementation.
      b9202251
    • Vincent Pelletier's avatar
      ERP5Type.Core.Folder: Simplify proxy methods. · 8dcfdf4f
      Vincent Pelletier authored
      Also, clarify what exactly was the broken BTree marker value, fixing
      isBTree accessor. Update associated tests.
      8dcfdf4f
  8. 02 Jul, 2018 3 commits
  9. 29 Jun, 2018 2 commits