Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Self-hosted platform: no command clears the local install record after its database is gone

Đang mở Phù hợp với người mới
#428 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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ó
1/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Tài liệu
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
postgresql, typescript
Lĩnh vực
backend, cli

Hướng nghiên cứu

Đọc docs/guide/platform/installation/uninstall.md, đặc biệt là hướng dẫn quanh dòng 92 và danh sách “Remove retained resources”. Ghi lại cách xóa bản ghi cài đặt cục bộ cùng các tệp khôi phục và bí mật liền kề khi cơ sở dữ liệu đã mất vĩnh viễn, sau đó giải thích cách tự xóa các tài nguyên Cloudflare còn được giữ lại. Hoàn tất khi các bước khôi phục rõ ràng và nhất quán với danh sách tài nguyên hiện có.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

Problem

If the platform PostgreSQL database is deleted or can no longer be reached, the local
installation record stays, and no Void command can clear it. The installation name stays
blocked on this machine.

database deleted / unreachable
        │
        ▼
void platform uninstall <id>  ──▶ needs the database lifecycle lock first ──▶ fails
void platform install --resume ──▶ reads the saved checkpoint from the database ──▶ fails
void platform install (same name) ──▶ "Installation <id> already uses this name.
                                       Resume it with void platform install --resume" ──▶ loop

A user can still pick a new name, so this is a cleanup dead end, not a full block. The Cloudflare
resources of that installation also stay, and uninstall cannot list them.

Repro (code reading; base 23ddc6e35)

  1. Install a platform (or stop an install after the database claim).
  2. Delete the PostgreSQL database at the provider.
  3. Run void platform uninstall <id>: it stops at the database lock.
  4. Run void platform install --name <same-name>: refused, points to --resume.
  5. Run void platform install --resume --name <id>: it stops at the database read.

Cause

  • Every lifecycle command, uninstall included, takes the database lifecycle lock before any change:
    packages/void/src/cli/platform-management.ts:591-606 (acquirePlatformDatabaseLifecycleLock).
    uninstall --plan reads project Zero Trust state and projects from the database:
    platform-management.ts:311-323.
  • A non-draft resume reads the authoritative manifest from the database first:
    packages/void/src/cli/platform-lifecycle.ts:476-486 (readPlatformDatabaseLifecycleManifest).
  • The name check blocks any record that is not uninstalled:
    packages/void/src/cli/platform-registry.ts:256-268.
  • docs/guide/platform/installation/uninstall.md:92 says uninstall stops when the database cannot
    be reached, with no next step. Deleting ~/.void/platforms/<account>/<id>.json is only mentioned
    for after a finished uninstall (uninstall.md:38).

Options

  1. Docs only: say that when the database is gone for good, the user can delete
    ~/.void/platforms/<account>/<id>.json (and the .recovery.enc / .secrets.enc next to it),
    then remove the Cloudflare resources by hand (the list in "Remove retained resources").
    Smallest; no code risk.
  2. A void platform forget <id> command that removes only the local record after a typed
    confirmation, prints the recorded Cloudflare resources first, and refuses while the database
    is reachable. Needs CLI help, docs and interactive hints.
  3. Let uninstall --purge-resources run without the database when the user passes an explicit
    flag (for example --database-gone). Largest: the database lock and the Zero Trust guard exist
    to stop races with the API, so this needs a careful design of what is still safe to delete.

Recommendation: option 1 now; option 2 if users hit it more than once.

🤖 Generated with Claude Code

https://claude.ai/code/session_0123r5HnanmW2VUrZ7VWDufH

Ngôn ngữ chính
TypeScript
Star
402
Fork
32
Merge trung bình
13 giờ 14 phút
Pull request đã merge (30 ngày)
73

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của voidzero-dev/void

Tất cả issue của voidzero-dev/void

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.