feat(updater): clear app_install_overwrite on major upgrades - #63446
Open
ernolf wants to merge 1 commit into
Open
feat(updater): clear app_install_overwrite on major upgrades#63446ernolf wants to merge 1 commit into
ernolf wants to merge 1 commit into
Conversation
- A force-enable states that an app was accepted against the major version it was enabled on, nothing beyond that - Carrying the list across a major upgrade re-enables apps that were never checked against the new release - Drop the config value at the start of the upgrade so the compatibility check is intact again - Read the overwrites on demand in the incompatibleAppDisabled listeners, a copy taken before the upgrade would suppress the very messages the admin needs Fixes #43026 Assisted-by: ClaudeCode:claude-opus-5 Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
ernolf
requested review from
Altahrim,
come-nc,
icewind1991 and
leftybournes
and removed request for
a team
August 20, 2026 20:49
ernolf
enabled auto-merge
August 20, 2026 21:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
app_install_overwrite(or warning about it when detected) for major version upgrades #43026Summary
app_install_overwriterecords that an admin force-enabled an app despite itsmax-version. That statement is bound to the major version it was made on — it says the app was tried on 33, not that it will work on 34. Today the list survives the upgrade, so on the next major every entry silently re-enables an app that was never checked against the new release. Nothing ever removes an entry, so the list only grows; instances that have been upgraded a few times carry dozens of them.This clears the value when the upgrade crosses a major boundary. Apps that are genuinely incompatible then stay disabled, and the admin re-grants the overwrite per app, deliberately, on the version it now applies to.
From the support forum: admins regularly do not know what the setting does, collect entries in it over years, and find out what it was for when an upgrade takes the instance down.
What changes
Updater::doUpgrade()deletesapp_install_overwriteright after the "upgrade possible" check, before anything else runs. Not a major upgrade, not touched.Updater::isMajorUpgrade(), tested intests/lib/UpdaterTest.php.core/Command/Upgrade.phpandcore/Controller/UpdateController.phpread the overwrites inside theincompatibleAppDisabledlistener instead of copying them into a variable before the upgrade starts. Without this the deletion would take effect but the stale copy would keep suppressing "Disabled incompatible app: …" — the admin would get apps disabled and no word about which ones. The two changes only make sense together.lib/OC.php, renders the "update needed" page before the upgrade starts and reads the value per request. It is unaffected and left alone.Behaviour
Prior art
Two setup projects already do this outside the server, because the server does not.
Nextcloud AIO deletes the value when the image crosses one major, in its container entrypoint. It has been there since the initial import, so there is no PR to point at.
The Nextcloud VM scripts do the same, added in nextcloud/vm#1835 after nextcloud/vm#1834 and moved to its current place in nextcloud/vm#1848. Same major comparison:
Both sit in front of the same
occ upgradeand work around the same gap, and neither helps anyone who installs another way. If this lands, both can drop their own handling.Note for admins
Admins who rely on force-enabled apps have to re-force them after a major upgrade. That is the intended cost, and it is the same action they took the first time.
Checklist
3. to review, feature component)stable32)AI (if applicable)
Assisted-by: ClaudeCode:claude-opus-5