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

Remote install: lease is not renewed during artifact upload

Đang mở
#2,946 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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
55/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
android, ios, typescript

Hướng nghiên cứu

Start in src/cli/commands/connection-runtime.ts at allocateOrReuseLease, then trace prepareRemoteRequestArtifacts and uploadArtifact through src/daemon/upload*.ts and src/daemon/resumable-upload*.ts. Compare the lease lifecycle with src/daemon/lease-registry-scope.ts and src/daemon/resumable-upload.ts; done means an upload exceeding the lease TTL can still reach a successful install RPC.

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

Mô tả

Observed

agent-device install <449 MB .apk> --remote-config <profile> against a remote daemon (EAS Simulator Android session), with a profile that sets no leaseProvider, fails with UNAUTHORIZED: Lease is not active. Diagnostics show: lease_allocate with the default 60 s TTL, then a 1m47s artifact upload with no lease heartbeat, then the install RPC against the expired lease. A 30 MB iOS .app on the same path never hits it.

Cause (as read at efce352)

  • The CLI heartbeats or allocates the lease once when the command starts (src/cli/commands/connection-runtime.ts, allocateOrReuseLease). Nothing in the upload path (prepareRemoteRequestArtifacts / uploadArtifact, src/daemon/upload*.ts, src/daemon/resumable-upload*.ts) touches the lease.
  • The default connection policy sends no ttlMs, so the daemon applies DEFAULT_LEASE_TTL_MS = 60_000 (src/daemon/lease-registry-scope.ts). Profiles with leaseProvider: "proxy" get 5 minutes (PROXY_REMOTE_LEASE_TTL_MS), which hides the problem for uploads up to about 5 minutes (about 1.2 GB at 4 MB/s) but does not remove it.
  • #2517 keeps the lease alive for admitted work, but the install is admitted only after the upload finishes, when the lease may already have expired.
  • A client retry cannot recover: the upload preflight never reports a cache hit (src/daemon/resumable-upload.ts), so a retry uploads again under a new lease and fails the same way.

Expected

An install whose upload takes longer than the lease TTL still succeeds. Possible fixes:

  • heartbeat the lease while the upload is in progress,
  • have the daemon treat an in-progress upload for a lease as activity on that lease, or
  • allocate or renew the lease after the upload finishes and before the install RPC.

Repro

A remote daemon with default lease settings and a profile without leaseProvider; agent-device install of an artifact that takes more than 60 s to upload (for example a 400+ MB debug APK on a ~4 MB/s uplink). With a proxy profile, an upload longer than 5 minutes.

Downstream: appandflow/stim#924. Stim is moving its generated remote profile to the proxy lease policy in appandflow/stim#1029 as a workaround.

Ngôn ngữ chính
TypeScript
Star
4.7k
Fork
304
Merge trung bình
11 giờ 29 phút
Pull request đã merge (30 ngày)
514

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

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 callstack/agent-device

Tất cả issue của callstack/agent-device

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.