Skip to content

distribution: download-update copy loop has no stall/total timeout (root cause of every product's private watchdog) #253

Closed

Description

@turinglambdaai

download-update's copy loop waits on read-bytes-avail! with no timeout. At least two products carry byte-identical private watchdogs around it with comments documenting exactly this failure ("rivet's copy loop waits on read-bytes-avail! with no timeout… visibly stuck at 100%") — payback app/updater.rkt and brainfuel racket/brainfuel/updater.rkt, ~30 lines each, plus threadly/movebit variants.

#249 covers the fetch/check leg; this is the download leg's stall/total bound. Proposal: a stall deadline (no bytes for N seconds → retryable error) and an optional total cap inside download-update, parameterizable. Deletes one private watchdog per product and fixes the failure mode for products that haven't written one yet.

Activity

  1. turinglambdaai commented on Oct 16, 2026

    @turinglambdaai
    OwnerAuthor

    Fixed by #263: download-update enforces a stall deadline (default 60 s) plus an optional total cap on the copy loop.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions