• 
      

    Improve sandboxing of broken extensions.

    Review Request #10959 — Created March 17, 2020 and submitted

    Information

    Djblets
    release-1.0.x

    Reviewers

    When loading extensions, we attempt to catch some common initialization
    errors and present them in the extension manager interface, so that
    developers or end users have a sense of what's going on. This has worked
    fine for extensions involving the initialization of the extenison
    itself, but didn't cover issues like syntax errors, issues with the
    administration URLs, media installation, or others.

    This change attempts improve upon this by capturing more failures that
    can occur and insulating the rest of the product from those failures,
    ensuring we don't, for instance, have stale extension state sitting around.

    Along with this, it tries bullet-proof signal management for extensions
    so a bad handler can't further break things during the enabling or
    disabling of an extension.

    Hit this on release-2.0.x with some older extensions on Django 1.11,
    and with old Python 2 code on Python 3. Verified that various issues
    (such as half-loaded extensions, extension state ref count inconsistencies,
    and issues re-enabling extensions) weren't hit.

    Unit tests pass. Note that there are no new unit tests in this change, and
    that's partly because the extension test suite was completely redone between
    Djblets 1.0 and 2.0. There's some work in the queue on improving tests for
    this for 2.0.

    Summary ID
    Improve sandboxing of broken extensions.
    When loading extensions, we attempt to catch some common initialization errors and present them in the extension manager interface, so that developers or end users have a sense of what's going on. This has worked fine for extensions involving the initialization of the extenison itself, but didn't cover issues like syntax errors, issues with the administration URLs, media installation, or others. This change attempts improve upon this by capturing more failures that can occur and insulating the rest of the product from those failures. Along with this, it tries bullet-proof signal management for extensions so a bad handler can't further break things during the enabling or disabling of an extension.
    9ad0c400b007a1b141b8bee25c2a6788563994f3
    Description From Last Updated

    F821 undefined name 'ext_class'

    reviewbotreviewbot
    Checks run (1 failed, 1 succeeded)
    flake8 failed.
    JSHint passed.

    flake8

    chipx86
    david
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-1.0.x (b72591b)