Skip to content

Instance start errors are silently ignored in both dynamic and blocking strategies #853

Description

@mzyy94

Describe the bug

When InstanceStart returns an error (e.g. container does not exist), both strategies fail to handle it properly:

  • Dynamic: The loading page shows an empty instance with no name and no status instead of displaying the error. The page keeps auto-refreshing forever because the session is never stored and InstanceStart is retried on every request.
  • Blocking: RequestReadySession polls RequestSession until timeout, retrying InstanceStart on every tick. The individual instance error is embedded in InstanceInfoWithError.Error but never checked — only IsReady() is evaluated, which always returns false.

Context

  • Sablier version: 1.11.1
  • Provider: all (confirmed with Podman and Docker)
  • Reverse proxy: N/A (direct API access)
  • Sablier running inside a container? No

Expected behavior

  • Dynamic: The loading page should display the instance name and the error message so the user can understand what went wrong. The theme already supports error rendering via {{ if $instance.Error }}.
  • Blocking: The endpoint should return the error immediately instead of retrying until timeout.

Additional context
Root cause: InstanceInfoWithError.Error is set when InstanceStart fails, but neither the dynamic rendering path nor the blocking polling loop checks it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions