{"record":{"id":"cc9a1a7cca0b9f18","repo":"weaviate/weaviate","slug":"close-multipart-writer","errorCode":null,"errorMessage":"close multipart writer","messagePattern":"close multipart writer","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/multi2vec-twelvelabs/clients/twelvelabs.go","lineNumber":177,"sourceCode":"\nfunc (v *vectorizer) doEmbed(ctx context.Context, baseURL, model string,\n\twriteInput func(*multipart.Writer) error,\n) (*embedResponse, error) {\n\tapiKey, err := v.getApiKey(ctx)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(err, \"TwelveLabs API Key\")\n\t}\n\n\tbody := &bytes.Buffer{}\n\twriter := multipart.NewWriter(body)\n\tif err := writer.WriteField(\"model_name\", model); err != nil {\n\t\treturn nil, errors.Wrap(err, \"write model_name field\")\n\t}\n\tif err := writeInput(writer); err != nil {\n\t\treturn nil, errors.Wrap(err, \"write input field\")\n\t}\n\tif err := writer.Close(); err != nil {\n\t\treturn nil, errors.Wrap(err, \"close multipart writer\")\n\t}\n\n\turl := fmt.Sprintf(\"%s/embed\", baseURL)\n\treq, err := http.NewRequestWithContext(ctx, http.MethodPost, url, body)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(err, \"create POST request\")\n\t}\n\treq.Header.Set(\"x-api-key\", apiKey)\n\treq.Header.Set(\"Content-Type\", writer.FormDataContentType())\n\n\tres, err := v.httpClient.Do(req)\n\tif err != nil {\n\t\treturn nil, errors.Wrap(err, \"send POST request\")\n\t}\n\tdefer res.Body.Close()\n\n\tbodyBytes, err := io.ReadAll(res.Body)\n\tif err != nil {","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/modules/multi2vec-twelvelabs/clients/twelvelabs.go#L159-L195","documentation":"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.","triggerScenarios":"doEmbed calling writer.Close() after all fields have been written, when the final boundary write fails (essentially only under memory failure conditions).","commonSituations":"Effectively never observed; treated as an internal unexpected failure.","solutions":["Retry the embedding request","Check host memory availability","If reproducible, file a bug with Weaviate with the full wrapped error chain"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  await vectorize(input);\n} catch (e) {\n  if (String(e.message).includes(\"close multipart writer\")) {\n    await retryWithBackoff(() => vectorize(input), 3);\n  } else throw e;\n}","preventionTips":["Treat as transient; retry","Escalate to Weaviate maintainers if reproducible"],"tags":["multipart","twelvelabs","internal"],"backgroundTag":"multipart-write-failed","analyzedSha":"75aa4b6d11f8818305aafd4440b4e32794f7ca04","analyzedAt":"2026-09-04T14:58:20.392Z","contentChangedAt":"2026-09-04T14:58:20.392Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}