• Rémy Coutable's avatar
    Merge branch '23223-group-deletion-race-condition' into 'master' · 673e7607
    Rémy Coutable authored
    Remove race condition while deleting groups
    
    ## What does this MR do?
    
    The intended flow during a group deletion is:
    
    ```
      Soft-delete group (sync) -> Delete group projects (async) -> Hard-delete group (async)
    ```
    
    The soft-delete was run in a transaction, which was committed only after
    the async job (for hard-deletion) was kicked off. There was a race
    condition here - the soft-delete transaction could complete _after_ the
    hard delete completed, leaving a soft-deleted record in the database.
    
    This MR removes this race condition. There is no need to run the
    soft-delete in a transaction. The soft-delete completes before the async
    job is kicked off.
    
    This MR also adds a migration to delete all existing (soft-deleted) groups left in an inconsistent state
    due to this bug.
    
    - Closes #23223 
    - EE merge request: gitlab-org/gitlab-ee!886
    
    See merge request !7528
    673e7607
schema.rb 53.1 KB