weaviate/weaviate · warning
close multipart writer
Error message
close multipart writer
What it means
Thrown when multipart.Writer.Close fails to finalize the multipart body (writing the terminating boundary). Like the other multipart wraps, this is a defensive check on an in-memory buffer and is almost never triggered in practice.
Source
Thrown at modules/multi2vec-twelvelabs/clients/twelvelabs.go:177
func (v *vectorizer) doEmbed(ctx context.Context, baseURL, model string,
writeInput func(*multipart.Writer) error,
) (*embedResponse, error) {
apiKey, err := v.getApiKey(ctx)
if err != nil {
return nil, errors.Wrap(err, "TwelveLabs API Key")
}
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
if err := writer.WriteField("model_name", model); err != nil {
return nil, errors.Wrap(err, "write model_name field")
}
if err := writeInput(writer); err != nil {
return nil, errors.Wrap(err, "write input field")
}
if err := writer.Close(); err != nil {
return nil, errors.Wrap(err, "close multipart writer")
}
url := fmt.Sprintf("%s/embed", baseURL)
req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, body)
if err != nil {
return nil, errors.Wrap(err, "create POST request")
}
req.Header.Set("x-api-key", apiKey)
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := v.httpClient.Do(req)
if err != nil {
return nil, errors.Wrap(err, "send POST request")
}
defer res.Body.Close()
bodyBytes, err := io.ReadAll(res.Body)
if err != nil {View on GitHub (pinned to 75aa4b6d11)
Solutions
- Retry the embedding request
- Check host memory availability
- If reproducible, file a bug with Weaviate with the full wrapped error chain
Defensive patterns
Strategy: retry
Try / catch
try {
await vectorize(input);
} catch (e) {
if (String(e.message).includes("close multipart writer")) {
await retryWithBackoff(() => vectorize(input), 3);
} else throw e;
} Prevention
- Treat as transient; retry
- Escalate to Weaviate maintainers if reproducible
When it happens
Trigger: doEmbed calling writer.Close() after all fields have been written, when the final boundary write fails (essentially only under memory failure conditions).
Common situations: Effectively never observed; treated as an internal unexpected failure.
Related errors
- write model_name field
- write input field
- could not extract format id in additional prop
- could not extract get id in additional prop
- empty embeddings response
AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04).
Data as JSON: /api/errors/cc9a1a7cca0b9f18.
Report an issue: GitHub.