• 
      

    Fix incomplete extension state when failing to initialize.

    Review Request #11136 — Created Aug. 12, 2020 and submitted

    Information

    Djblets
    release-2.0.x

    Reviewers

    Extensions could end up in a half-loaded state if something went wrong
    (such as a static media permission issue) during extension
    initialization. They'd be removed from the list of initialized
    extensions, but by this time they'd have instantiated and likely
    registered hooks. This meant that subsequent attempts would make further
    attempts to set up those hooks, causing more and more entries to pile
    up. This could lead to the server getting swamped, and could cause all
    sorts of page breakages, or other kinds of errors.

    The extension manager now takes a more thorough approach to
    uninitializing extensions when they fail. It performs a full
    _uninit_extension on them, which itself gracefully handles any issues
    that might come up while attempting to uninitialize. This ensures that
    every part of the extension we have any control over will be removed
    from the extension manager and from memory.

    Unit tests pass.

    Summary ID
    Fix incomplete extension state when failing to initialize.
    Extensions could end up in a half-loaded state if something went wrong (such as a static media permission issue) during extension initialization. They'd be removed from the list of initialized extensions, but by this time they'd have instantiated and likely registered hooks. This meant that subsequent attempts would make further attempts to set up those hooks, causing more and more entries to pile up. This could lead to the server getting swamped, and could cause all sorts of page breakages, or other kinds of errors. The extension manager now takes a more thorough approach to uninitializing extensions when they fail. It performs a full `_uninit_extension` on them, which itself gracefully handles any issues that might come up while attempting to uninitialize. This ensures that every part of the extension we have any control over will be removed from the extension manager and from memory.
    4e0571b3970638e648a231b6c36bcae4395612d5
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-2.0.x (e85fc66)