• 
      

    Move away from full extension manager reloads.

    Review Request #15434 — Created Oct. 27, 2026 and updated

    Information

    Djblets
    release-6.x

    Reviewers

    The extension manager now has full support for fine-grained loading from
    database changes. Local extension state is updated to reflect database
    state, meaning the extension manager no longer needs to shut down
    everything and bring it all back up. This should improve performance
    across the product, especially for extensions that may need to record
    state in the database.

    This change puts in the final pieces of the fine-grained loading
    process and switches the middleware to call a plain load() instead of
    a full-reload when the sync generation changes.

    There were some small changes to the process that were needed. Load
    errors are now cleared at the start of the process, so that there's no
    risk of stale load errors sticking around if extensions disappear. If an
    existing extension still fails to load, it will just store a new load
    error anyway.

    Template caches are also now cleared at the end, if extension state
    changed.

    The "Reload Extensions" button in the Extensions page will continue to
    do a full reload.

    Unit tests passed.

    Smoke-tested this, with enabling/disabling/changing extension state
    and seeing it reflected.

    Haven't hit any issues, but needs more testing in production.

    Summary ID
    Move away from full extension manager reloads.
    The extension manager now has full support for fine-grained loading from database changes. Local extension state is updated to reflect database state, meaning the extension manager no longer needs to shut down everything and bring it all back up. This should improve performance across the product, especially for extensions that may need to record state in the database. This change puts in the final pieces of the fine-grained loading process and switches the middleware to call a plain `load()` instead of a full-reload when the sync generation changes. There were some small changes to the process that were needed. Load errors are now cleared at the start of the process, so that there's no risk of stale load errors sticking around if extensions disappear. If an existing extension still fails to load, it will just store a new load error anyway. Template caches are also now cleared at the end, if extension state changed. The "Reload Extensions" button in the Extensions page will continue to do a full reload.
    3a2d5c1b32fad6159fedee4cbbcaf6427e35531f
    Checks run (2 succeeded)
    flake8 passed.
    JSHint passed.