fix(extensions): a failed upgrade deletes the working extension; local and marketplace installs differ
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- Dart
- Star
- 23
- Fork
- 1
- Merge trung bình
- 31 phút
- Pull request đã merge (30 ngày)
- 570
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của QueryaHub/Querya-Desktop
-
enhancement ui
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
QueryaHub/Querya-Desktop#1689 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ui(dialogs): make destructive query and DML preview dialogs adaptive and prevent table name overflowĐang mởbug frontend
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
QueryaHub/Querya-Desktop#1642 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug error-handling settings
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 78/100
QueryaHub/Querya-Desktop#1637 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
QueryaHub/Querya-Desktop#1636 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement marketplace
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
QueryaHub/Querya-Desktop#1635 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của QueryaHub/Querya-Desktop
Issue tương tự
-
bug
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 65/100
chriskelly/wish-together#36 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] Web Guide has broken linksĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
AppFlowy-IO/AppFlowy#9075 ·
-
[web] Semantics `lang` attribute uses `Locale.toString()`, producing invalid tags like `es_US`Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Paste asks for iOS paste permission because the default context menu ignores SystemContextMenuCó thể đã có người làm @dorklein đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
maheshj01/searchfield#267 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
jhomlala/betterplayer#1616 ·
Maintainer thường phản hồi trong vòng 1 ngày