anomalyco/sst · error

failed to write file content for metadata: %w

Error message

failed to write file content for metadata: %w

What it means

Returned when writing the marshaled metadata JSON bytes into the 'metadata' multipart part fails. Like the content-part write, the target is an in-memory bytes.Buffer, so this indicates a buffer/write-level failure rather than a Cloudflare API problem. Raised in handleUpdate during Create/Update.

Source

Thrown at pkg/server/resource/cloudflare-worker-script.go:195

	}

	// Add metadata to form data
	metadataPart, err := writer.CreatePart(map[string][]string{
		"Content-Disposition": []string{`form-data; name="metadata"`},
		"Content-Type":        []string{"application/json"},
	})
	if err != nil {
		return fmt.Errorf("failed to create form part metadata: %w", err)
	}

	metadata, err := json.Marshal(buildMetadata(input))
	if err != nil {
		return fmt.Errorf("failed to marshal metadata: %w", err)
	}

	_, err = metadataPart.Write(metadata)
	if err != nil {
		return fmt.Errorf("failed to write file content for metadata: %w", err)
	}

	// Close writer
	err = writer.Close()
	if err != nil {
		return fmt.Errorf("failed to close writer: %w", err)
	}

	url := fmt.Sprintf("https://api.cloudflare.com/client/v4/accounts/%s/workers/scripts/%s", input.AccountId, input.ScriptName)

	req, err := http.NewRequest("PUT", url, &body)
	if err != nil {
		return err
	}
	req.Header.Set("Content-Type", "multipart/form-data; boundary="+writer.Boundary())
	req.Header.Set("Authorization", "Bearer "+input.ApiToken)

	client := &http.Client{Timeout: 30 * time.Second}

View on GitHub (pinned to a0bd20f762)

Solutions

  1. Check the wrapped inner error for allocation/OOM causes
  2. Trim large _headers/_redirects content passed via Assets.Config
  3. Retry the deploy; if persistent, inspect local modifications to the resource

Example fix

null
Defensive patterns

Strategy: try-catch

Validate before calling

if len(input.Assets.Config.Headers) > 1<<20 || len(input.Assets.Config.Redirects) > 1<<20 { return errors.New("headers/redirects too large") }

Try / catch

if err := handleUpdate(input); err != nil {
    if strings.Contains(err.Error(), "failed to write file content for metadata") {
        log.Printf("metadata write failed, check metadata size: %v", err)
    }
    return err
}

Prevention

When it happens

Trigger: metadataPart.Write(metadata) returns an error or short write after successful json.Marshal of the metadata.

Common situations: Memory exhaustion on very large metadata (e.g. huge _headers/_redirects strings); internal writer state corruption.

Related errors


AI-assisted analysis of anomalyco/sst@a0bd20f762 (2026-08-30). Data as JSON: /api/errors/731755df9de601d3. Report an issue: GitHub.