You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.
Observed
agent-device install <449 MB .apk> --remote-config <profile>against a remote daemon (EAS Simulator Android session), with a profile that sets noleaseProvider, fails withUNAUTHORIZED: Lease is not active. Diagnostics show:lease_allocatewith the default 60 s TTL, then a 1m47s artifact upload with no lease heartbeat, then theinstallRPC against the expired lease. A 30 MB iOS.appon the same path never hits it.Cause (as read at efce352)
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.ttlMs, so the daemon appliesDEFAULT_LEASE_TTL_MS = 60_000(src/daemon/lease-registry-scope.ts). Profiles withleaseProvider: "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.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:
Repro
A remote daemon with default lease settings and a profile without
leaseProvider;agent-device installof 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.