• Vincent Pelletier's avatar
    CMFActivity.Activity.SQLBase: Tolerate group_id set without a grouping_method_id. · e80c4f06
    Vincent Pelletier authored
    While such activity parameter combination does not make sense, it is
    technically possible to spawn activities with a group_id set but without a
    grouping_method_id.
    The consequence is zombie activities: they never fail, do not prevent other
    activities from being executed, but and are permanently run on the node
    which reserved more than one because:
    - all but one activity is in MESSAGE_NOT_EXECUTED state, forcing an abort
    - finalizeMessageExecution does not understand that MESSAGE_NOT_EXECUTED
      activities may not have failed, and itself fail while trying to detect
      the failure type (ConflictError vs. others), failing to free & postpone
      the activity, in turn failing to bring it to eventually permanent failure
      state.
    Make those conditions consistent, and use tuple-unpacking to detect any
    future inconsistency much earlier, simplifying debugging.
    e80c4f06
SQLBase.py 35.1 KB