• Julien Muchembled's avatar
    Optimize WorkflowHistoryList · 1ca655a3
    Julien Muchembled authored
    This is done by inheriting most of the code of ConflictFreeLog,
    i.e. using a doubly-linked list:
    - for fast iteration of the first elements, and in particular
      immediate access to the first element (used for creation date);
    - that keeps track of the history length;
    - that implement fast reverse iteration (although it could
      have been done without changing the data structure).
    
    The size of buckets is not fixed anymore to 16 items:
    like ConflictFreeLog, WorkflowHistoryList is also a good candidate
    to look at the estimated serialized size of the bucket in order to
    decide if elements should be added to a new one or not.
    Then developers won't have to care about using Pdata or not.
    
    The size is bigger than the ConflictFreeLog default,
    because workflow items look a lot alike and adding
    a few more is cheap when the ZODB compresses.
    
    No more optimized __getstate__ (except for workflow histories that
    have not been migrated) so BT export will be a bit more verbose.
    
    The BBB code is because of
      nexedi/erp5!934
    
    /reviewed-on nexedi/erp5!941
    1ca655a3
test.erp5.testConflictResolution.py 4.56 KB