• 
      

    Don't load or install extensions during a Review Board upgrade.

    Review Request #10243 — Created Oct. 19, 2018 and submitted — Latest diff uploaded

    Information

    Review Board
    release-3.0.x
    dbf71de...

    Reviewers

    A customer hit a bug where they had upgraded the Review Board package,
    but not the database, and had run a management command that found the
    new rbintegrations package and tried to install it, triggering an
    early database upgrade. This was quite problematic, and caused a lot of
    confusion while trying to diagnose a separate upgrade problem.

    To avoid this, and potentially other problems, we no longer load any
    extensions if the Review Board version stored in the database does not
    match the package version. Instead, extensions will only load if the
    version matches. This lets us avoid these early migrations prior to a
    database upgrade.

    The one caveat is that this won't solve the problem if syncdb and
    evolve are run in separate sessions (by invoking manage.py twice,
    for instance). syncdb will set the new database version, meaning that
    evolve is free to load extensions again. This is only really an issue
    during development, since rb-site upgrade runs these in the same
    session.

    Part of this will be addressed in some longer-term Django Evolution
    work, which will be providing a command similar to modern Django's
    migrate command, where everything can be done all at once.
    Shorter-term, an upcoming change will add an upgrade command to
    manage.py.

    Reproduced the original problem by upgrading the Review Board package
    and running a management command. Saw that the database upgrade did not
    trigger until I explicitly performed it.