• Stan Hu's avatar
    Fix a number of race conditions that can occur during namespace deletion · 6606a450
    Stan Hu authored
    There are two problems in the current implementation:
    
    1. If a project is marked for deletion via the `pending_delete` flag
    and then the namespace was quickly deleted, it's possible that the
    namespace skips over that project and leaves that project in
    an orphaned state.
    
    2. Before namespace deletion, the namespace attempts to clean up
    all the relevant storage paths. However, if all projects have been
    removed synchronously, then the namespace will not be able to clean anything.
    To prevent this, we should load the paths to be deleted before
    actually destroying projects.
    
    The specs were missing this second case due to a permission issue
    that caused project removal never to happen.
    6606a450
project.rb 41.3 KB