Skip to content

Fix wake recovery after snapshot restore timeout - #87

Open
fcasal wants to merge 2 commits into
mainfrom
fix/wake-timeout-recovery
Open

Fix wake recovery after snapshot restore timeout#87
fcasal wants to merge 2 commits into
mainfrom
fix/wake-timeout-recovery

Conversation

@fcasal

@fcasal fcasal commented Sep 8, 2026

Copy link
Copy Markdown

dropkit wake previously stopped waiting after five minutes, even when DigitalOcean was still restoring the droplet.
In the observed case, restoration took 6 minutes 35 seconds. Dropkit exited before configuring SSH, and retrying wake
refused because the droplet already existed, suggesting that it be destroyed or renamed.

This change allows retries to resume setup when the existing droplet’s source image matches the retained hibernation
snapshot. It also increases the default wait to 15 minutes, adds a configurable --timeout, and provides recovery
instructions when waiting times out. The snapshot is preserved if SSH configuration fails so setup can be retried.

@fcasal
fcasal requested a review from ret2libc as a code owner September 8, 2026 12:10
@fcasal
fcasal force-pushed the fix/wake-timeout-recovery branch from 6ef280e to c1757c8 Compare September 8, 2026 12:12

@ret2libc ret2libc left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resuming an existing droplet can break its working SSH configuration. For example:

  1. wake finishes Tailscale setup, updates SSH config to the Tailscale IP, and blocks public SSH through firewall lockdown.
  2. The user interrupts at the snapshot-deletion prompt, leaving the snapshot available.
  3. On retry, this PR accepts the existing droplet, but the code below overwrites its SSH entry with the public IP.
  4. Tailscale setup then cannot connect through that SSH alias because public SSH is already blocked.

Previously, wake rejected existing droplets, so this path wasn’t reachable.

Could we preserve the working Tailscale address when resuming and add a regression test for retrying after firewall lockdown?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants