Skip to content

🤖 fix: handle template imports that outlast the request deadline #117

Description

@ThomasK33

Problem

After #116, creating a CoderTemplate with spec.files returns only after Coder finishes importing the template. The server-side limit is CODER_K8S_TEMPLATE_VERSION_BUILD_WAIT_TIMEOUT (default 25 minutes), capped by the request deadline. Requests reach the aggregated API server through kube-apiserver, whose default --request-timeout is 60 seconds, and clients can set shorter deadlines.

If an import takes longer than the effective deadline:

  • the client receives a timeout;
  • the server creates no template, so nothing half-created is exposed;
  • the uploaded file and template version remain in Coder;
  • a retry uploads and imports again and can leave additional versions.

The maintained E2E imports a trivial template in seconds, so this path has not been exercised on a real backend. It has not been verified whether kube-apiserver's timeout applies to proxied aggregated requests in every configuration.

Options to evaluate

  1. Keep the synchronous Create and document the limit (current state; documented in the aggregated API server how-to).
  2. Return early for slow imports and expose import progress through status or conditions, so clients can wait instead of retrying.
  3. Make retries idempotent for identical source (for example, reuse a pending or succeeded version with the same content hash).

Trigger and owner

Owner: maintainer desk. Revisit when a user reports a slow-import timeout, when a supported quickstart path is restored, or before advertising large templates as supported.

Follow-up from #105 and #116.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: xhigh

Activity

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions