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

  1. Retry the embedding request
  2. Check host memory availability
  3. 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

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


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/cc9a1a7cca0b9f18. Report an issue: GitHub.