fix(extensions): a failed upgrade deletes the working extension; local and marketplace installs differ
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
Research direction
Start with lib/core/extensions/local_extension_installer.dart around lines 125–172 and compare its archive extraction and rollback with HttpMarketplaceRepository.install. Trace validateDriverPackage, ensureDriverExecutables, and common-root stripping to identify how both install paths handle files. Done means both use one path that stages and validates the new extension, swaps it in safely, restores the old version on failure, and removes files absent from the new version.
Written by the indexing model from the issue text.
Description
Problem
LocalExtensionInstaller.installFromArchive deletes the existing extensions/<id>/ before extracting (lib/core/extensions/local_extension_installer.dart:125-128). If validateDriverPackage / ensureDriverExecutables / extraction then fails, the rollback deletes the new folder too (:163-172), so a failed upgrade destroys the working extension.
The marketplace path (HttpMarketplaceRepository.install) goes the other way: it never cleans the old folder, so files removed in the new version stay on disk and versions get mixed. The two paths also differ in common-root stripping.
Expected
- Extract into a temp sibling directory, validate there, then swap (rename old to backup, rename new, delete backup; restore backup on failure).
- Use the same code path for local and marketplace installs.
- Dominant language
- Dart
- Stars
- 23
- Forks
- 1
- Avg merge
- 45m
- Merged PRs (30d)
- 529
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from QueryaHub/Querya-Desktop
-
bug P3 ux
Difficulty 2/5 1-3 hours Newbie friendliness 79/100
QueryaHub/Querya-Desktop#1837 ·
Maintainers usually reply within 1 day
-
bug mysql P3
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
QueryaHub/Querya-Desktop#1823 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QueryaHub/Querya-Desktop#1777 ·
Maintainers usually reply within 1 day
-
enhancement ui
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
QueryaHub/Querya-Desktop#1689 ·
Maintainers usually reply within 1 day
-
ui(dialogs): make destructive query and DML preview dialogs adaptive and prevent table name overflowOpenbug frontend
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
QueryaHub/Querya-Desktop#1642 ·
Maintainers usually reply within 1 day
All issues in QueryaHub/Querya-Desktop
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
fable-compiler/Fable#5157 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
fossasia/badgemagic-app#2016 ·
Maintainers usually reply within 1 day
-
direct-code
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
aaronified/fluenough#849 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
PATILYASHH/XPENC#179 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day