anomalyco/sst · error
failed to create form part metadata: %w
Error message
failed to create form part metadata: %w
What it means
Wraps an error from mime/multipart.Writer.CreatePart when creating the 'metadata' form part of the Cloudflare Worker script upload. As with the content part, CreatePart only fails on a closed writer or buffer I/O error. Raised in handleUpdate during Create/Update.
Source
Thrown at pkg/server/resource/cloudflare-worker-script.go:185
"Content-Disposition": []string{fmt.Sprintf(`form-data; name="%s"; filename="%s"`, input.Content.Hash, input.Content.Hash)},
"Content-Type": []string{contentType},
})
if err != nil {
return fmt.Errorf("failed to create form part %s: %w", input.Content.Hash, err)
}
_, err = contentPart.Write([]byte(fileContent))
if err != nil {
return fmt.Errorf("failed to write file content for %s: %w", input.Content.Hash, err)
}
// 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)
}
View on GitHub (pinned to a0bd20f762)
Solutions
- Ensure writer.Close() happens only after all CreatePart/Write calls
- Inspect the wrapped error; it is deterministic, not transient
- Report upstream if reproducible on unmodified code
Example fix
null
Defensive patterns
Strategy: try-catch
Validate before calling
null
Try / catch
if err := handleUpdate(input); err != nil {
if strings.Contains(err.Error(), "failed to create form part metadata") {
return fmt.Errorf("worker upload body construction failed (report bug): %w", err)
}
return err
} Prevention
- Do not close the writer before creating the metadata part
- Treat this as an internal invariant failure, not a user-input problem
When it happens
Trigger: writer.CreatePart for the 'metadata' part (Content-Type application/json) returns an error — effectively only if the writer was already closed or the bytes.Buffer write failed.
Common situations: Code reordering that closes the writer early; internal buffer failures; custom forks of the resource code.
Related errors
- failed to create form part %s: %w
- failed to write file content for metadata: %w
- failed to close writer: %w
- failed to create form part %s: %w
- failed to write encoded content for %s: %w
AI-assisted analysis of anomalyco/sst@a0bd20f762 (2026-08-30).
Data as JSON: /api/errors/0a531d70b770a340.
Report an issue: GitHub.