An error occurred fetching the project authors.
  1. 19 May, 2015 2 commits
  2. 13 May, 2015 2 commits
  3. 06 May, 2015 1 commit
    • Julien Muchembled's avatar
      CMFActivity: slightly delay non-executed grouped messages · c85a840f
      Julien Muchembled authored
      When grouped messages fail, ActivityTool must distinguish 3 groups,
      in order to reexecute them separately, as follows:
      - first, those that succeeded
      - then, those that were skipped
      - at last, failed ones
      
      Grouping methods are updated to handle partial failures, and stop doing
      anything when something goes wrong.
      
      Without this, we would have the following pathological cases.
      
      1. Let's suppose first that skipped messages are marked as succeeded.
      
      The problem is that each skipped message that will fail causes the reexecution
      of those that didn't fail.
      
      Exemple: A:ok B:ok C:err D:err E:err F:err
        1: A:ok, B:ok, C:err, D:skipped, E:skipped, F:skipped
        2: A:ok, B:ok, D:err, E:skipped, F:skipped
        3: A:ok, B:ok, E:err, F:skipped
        4: A:ok, B:ok, F:err
        5: A:ok, B:ok -> commit
      
      And worst, the first failed (C) may be processable again before 5, entering
      a failing loop if it is executed again in the same group as A & B.
      
      2. Another implementation is to mark all skipped as failed.
      
      Example:
        1: A:ok, B:ok, C:err, D:skipped, E:skipped, F:skipped
        2: A:ok, B:ok -> commit
        3: C:err, D:skipped, E:skipped, F:skipped
       >3: same as 3
      
      => D, E or F are never tried.
      c85a840f
  4. 30 Mar, 2015 1 commit
  5. 27 Mar, 2015 1 commit
    • Julien Muchembled's avatar
      CMFActivity: automatic migration of queues and removal of button to recreate tables · 3d644bde
      Julien Muchembled authored
      The action to recreate activity tables while preserving existing messages
      was unsafe for 2 reasons:
      - if any error happened, messages could be lost
      - it relied on Message.reactivate
      
      Which this patch, any instance created after commit d881edd1 (Aug 2010) will
      upgrade successfully. For older instances, make sure you have no activity left.
      
      For cases where 'ALTER TABLE' would not work, a better way to implement repair
      functionality would be:
      - one action to backup all messages in ZODB
      - and another to restore them
      And maybe a security so that during the backup-clear-restore sequence,
      activities can't be created nor processed.
      
      If any column is added in the future, it would still be possible to write code
      that fills them by inspecting messages.
      3d644bde
  6. 10 Mar, 2015 1 commit
  7. 16 Oct, 2014 1 commit
  8. 04 Sep, 2014 1 commit
  9. 30 Jan, 2014 1 commit
  10. 06 Aug, 2013 1 commit
  11. 11 Jun, 2013 1 commit
    • Vincent Pelletier's avatar
      Move some work out of Message.__init__ . · fda3f093
      Vincent Pelletier authored
      So that creating an ActiveWrapper (or Method) once and reusing it to spawn
      several activities gets a larger speed-up.
      Message class API is not supposed to be used outside this module, so
      drop failing test rather than fixing it.
      fda3f093
  12. 21 May, 2013 2 commits
  13. 22 Apr, 2013 2 commits
    • Julien Muchembled's avatar
      CMFActivity: remove non-executable message state (-3) · e47f2923
      Julien Muchembled authored
      When an object is deleted, higher level code used to flush its messages (without
      invoking them). However, a concurrent and very long transaction may be about to
      activate such an object, without conflict. We already experienced false -3
      errors that could prevent other messages to be validated.
      
      Because there is no efficient and reliable way to flush absolutely all messages,
      messages on deleted objects are now ignored and deleted without any email
      notification. There's only a WARNING in logs. But for performance reasons,
      there's still a flush on object deletion.
      
      To simplify code, messages that went to -3 for other reasons, like a
      non-existing method, now go to -2. In fact, this was already the case for
      grouped messages.
      
      In case that a path is recycled, it may still be possible for a message to be
      executed on a wrong object (the new one), instead of being ignored (because the
      activated object was deleted). So in such scenario, developer should make sure
      not to delete an object that may be activated in a concurrent transaction.
      If the original object has an OID at the moment it is activated, an assertion
      will make sure the message is not executed on another object.
      e47f2923
    • Julien Muchembled's avatar
      testCMFActivity: clean up · fcce7b97
      Julien Muchembled authored
      fcce7b97
  14. 18 Apr, 2013 1 commit
  15. 21 Feb, 2013 1 commit
  16. 15 Feb, 2013 1 commit
    • Julien Muchembled's avatar
      Fix commit order of CMFActivity SQL connection on nodes with several zserver threads · 2c11b76a
      Julien Muchembled authored
      When a ZODB connection is closed, it usually returns to a ZODB pool and may be
      reused by another thread. If the SQL connection was open and is still in ZODB
      cache, the _v_database_connection attribute is still there:
      ActivityConnection.connect() is not called and a new instance of ZMySQLDA.db.DB
      is created for the new thread without initializing its sort key.
      2c11b76a
  17. 08 Jan, 2013 1 commit
  18. 26 Nov, 2012 1 commit
  19. 01 Oct, 2012 1 commit
    • Julien Muchembled's avatar
      CMFActivity: new 'merge_parent=<path>' SQLDict parameter · a7d796a5
      Julien Muchembled authored
      If specified, <path> must be the path of an ancestor and SQLDict will merge all
      similar messages under this path and process only the root message.
      
      This will be used in ERP5 simulation to drop 'expand' activities that are
      children of other 'expand' activities.
      
      Because it can be used with grouped messages, it may be interesting to used it
      for recursiveImmediateReindexObject.
      a7d796a5
  20. 15 May, 2012 1 commit
  21. 14 May, 2012 1 commit
  22. 11 May, 2012 1 commit
  23. 27 Apr, 2012 1 commit
  24. 28 Dec, 2011 1 commit
  25. 23 Dec, 2011 1 commit
  26. 06 Dec, 2011 1 commit
  27. 19 Oct, 2011 1 commit
  28. 02 Aug, 2011 2 commits
  29. 12 Jan, 2011 1 commit
  30. 11 Jan, 2011 1 commit
  31. 29 Dec, 2010 1 commit
  32. 21 Dec, 2010 1 commit
    • Sebastien Robin's avatar
      Due to the sorting of database connectors during a transaction, the · f4fec173
      Sebastien Robin authored
      ZMySQLDA connector for the activities database would finish its
      commit procedure before ZODB, making the description of an activity
      message in MySQL available before its respective data in the ZODB.
      
      The fix consisted in replacing the ZMySQLDA connector with another
      one based on ZMySQLDA but with a “sortKey()” method that forced it
      to be sorted after both the ZODB connection and the ZMySQLDA
      connection for ZSQLCatalog.
      
      Analysis of issue was done by Sebastien and Julien.
      
      This patch itself was done by Leonardo.
      
      git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@41598 20353a03-c40f-0410-a6d1-a30d3c3de9de
      f4fec173
  33. 21 Oct, 2010 2 commits
  34. 02 Sep, 2010 1 commit