{"record":{"id":"d6531fdfa007ba89","repo":"weaviate/weaviate","slug":"init-graphql-provider-d6531f","errorCode":null,"errorMessage":"init graphql provider","messagePattern":"init graphql provider","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"modules/text2vec-nvidia/module.go","lineNumber":96,"sourceCode":"\t}\n\n\treturn nil\n}\n\nfunc (m *NvidiaModule) InitExtension(modules []modulecapabilities.Module) error {\n\tfor _, module := range modules {\n\t\tif module.Name() == m.Name() {\n\t\t\tcontinue\n\t\t}\n\t\tif arg, ok := module.(modulecapabilities.TextTransformers); ok {\n\t\t\tif arg != nil && arg.TextTransformers() != nil {\n\t\t\t\tm.nearTextTransformer = arg.TextTransformers()[\"nearText\"]\n\t\t\t}\n\t\t}\n\t}\n\n\tif err := m.initNearText(); err != nil {\n\t\treturn errors.Wrap(err, \"init graphql provider\")\n\t}\n\treturn nil\n}\n\nfunc (m *NvidiaModule) initVectorizer(ctx context.Context, timeout time.Duration,\n\tlogger logrus.FieldLogger,\n) error {\n\tapiKey := os.Getenv(\"NVIDIA_APIKEY\")\n\tclient := clients.New(apiKey, timeout, logger)\n\n\tm.vectorizer = text2vecbase.New(client,\n\t\tbatch.NewBatchVectorizer(client, 50*time.Second, batchSettings, logger, m.Name()),\n\t\tbatch.ReturnBatchTokenizer(batchSettings.TokenMultiplier, m.Name(), ent.LowerCaseInput),\n\t)\n\tm.metaProvider = client\n\n\treturn nil\n}","sourceCodeStart":78,"sourceCodeEnd":114,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/modules/text2vec-nvidia/module.go#L78-L114","documentation":"text2vec-nvidia wraps any error from initNearText() with the message \"init graphql provider\" during InitExtension. initNearText() wires the nearText GraphQL searcher/argument provider (modules/text2vec-nvidia/nearText.go:19) and currently always returns nil, so this wrap is purely defensive: it would only surface if the wiring fails or if m.vectorizer is nil (InitExtension called before Init), which would cause a nil dereference rather than this wrapped error. If you see it, it means module startup sequencing broke.","triggerScenarios":"Server startup calls InitExtension on the text2vec-nvidia module and initNearText() returns a non-nil error; or InitExtension is invoked before Init so nearText.NewSearcher receives a nil vectorizer, producing an error wrapped here.","commonSituations":"Custom module registration order in configure_api.go, embedded/custom Weaviate builds that call module lifecycle methods manually, or code changes to initNearText that introduce error returns.","solutions":["Ensure all modules' Init() is called before InitExtension() (standard startup does this; fix custom wiring if you call these yourself).","Check the wrapped inner error in the log line — it names the actual failure inside initNearText.","If you modified nearText.go or module.go, verify m.vectorizer is initialized before initNearText() runs.","Update/rebuild Weaviate if this reproduces on an unmodified binary; on stock code this path cannot fail."],"exampleFix":"// before (custom embedding code)\nmodule.InitExtension(allModules) // Init not called yet -> nil vectorizer\n// after\nmodule.Init(ctx, initParams)\nmodule.InitExtension(allModules)","handlingStrategy":"validation","validationCode":"// operator-side preflight: ensure module init order and env\nif os.Getenv(\"NVIDIA_APIKEY\") == \"\" {\n  log.Println(\"warning: NVIDIA_APIKEY not set; text2vec-nvidia will fail at vectorization time\")\n}\n// in custom wiring, enforce lifecycle order:\nif err := mod.Init(ctx, params); err != nil { return err }\nif err := mod.InitExtension(allModules); err != nil { return fmt.Errorf(\"init graphql provider: %w\", err) }","typeGuard":null,"tryCatchPattern":"// Go: unwrap and classify at startup\nif err := mod.InitExtension(all); err != nil {\n  return fmt.Errorf(\"nvidia module startup failed: %w\", err)\n}","preventionTips":["Never call InitExtension without a prior successful Init when embedding modules manually.","Set NVIDIA_APIKEY in the Weaviate container environment before startup.","Watch startup logs for module init errors and fail fast instead of serving a partially initialized schema.","Keep module code unmodified or add unit tests for initNearText if you fork it."],"tags":["go","module-initialization","weaviate","graphql","startup"],"backgroundTag":"module-init-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"}