{"record":{"id":"3114e3077716c594","repo":"weaviate/weaviate","slug":"empty-config-3114e3","errorCode":null,"errorMessage":"empty config","messagePattern":"empty config","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"modules/generative-nvidia/config/class_settings.go","lineNumber":46,"sourceCode":"\nvar (\n\tDefaultBaseURL     = \"https://integrate.api.nvidia.com\"\n\tDefaultNvidiaModel = \"nvidia/llama-3.1-nemotron-51b-instruct\"\n)\n\ntype classSettings struct {\n\tcfg                  moduletools.ClassConfig\n\tpropertyValuesHelper basesettings.PropertyValuesHelper\n}\n\nfunc NewClassSettings(cfg moduletools.ClassConfig) *classSettings {\n\treturn &classSettings{cfg: cfg, propertyValuesHelper: basesettings.NewPropertyValuesHelper(\"generative-nvidia\")}\n}\n\nfunc (ic *classSettings) Validate(class *models.Class) error {\n\tif ic.cfg == nil {\n\t\t// we would receive a nil-config on cross-class requests, such as Explore{}\n\t\treturn errors.New(\"empty config\")\n\t}\n\tif err := ic.propertyValuesHelper.ValidateBaseURL(ic.BaseURL()); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (ic *classSettings) BaseURL() string {\n\treturn ic.propertyValuesHelper.GetPropertyAsString(ic.cfg, baseURLProperty, DefaultBaseURL)\n}\n\nfunc (ic *classSettings) Model() string {\n\treturn ic.propertyValuesHelper.GetPropertyAsString(ic.cfg, modelProperty, DefaultNvidiaModel)\n}\n\nfunc (ic *classSettings) Temperature() *float64 {\n\treturn ic.propertyValuesHelper.GetPropertyAsFloat64(ic.cfg, temperatureProperty, nil)\n}","sourceCodeStart":28,"sourceCodeEnd":64,"githubUrl":"https://github.com/weaviate/weaviate/blob/75aa4b6d11f8818305aafd4440b4e32794f7ca04/modules/generative-nvidia/config/class_settings.go#L28-L64","documentation":"classSettings.Validate for generative-nvidia returns 'empty config' when the module config (ClassConfig) is nil. Per the in-code comment, this is expected on cross-class requests like Explore{} where no per-class moduleConfig exists to validate.","triggerScenarios":"Cross-class requests such as Explore{} (noted as called by JoinNode in this path) reaching generative-nvidia settings validation with nil cfg.","commonSituations":"Explore{} queries in deployments with generative-nvidia enabled; cluster join/node-sync paths validating classes without class-level moduleConfig; rarely a user misconfiguration.","solutions":["Use class-scoped Get{} queries with proper moduleConfig instead of Explore{} where validation matters.","If hit during JoinNode/cluster sync, ensure the class definition in the schema carries its generative-nvidia moduleConfig.","Treat as an expected guard on cross-class requests; report upstream if it appears on normal class requests.","Check the class schema moduleConfig for generative-nvidia is present and non-empty."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// ensure class schema carries moduleConfig before cluster ops\nconst cfg = schema.classes.find(c => c.class === 'Doc').moduleConfig?.['generative-nvidia'];\nif (!cfg) throw new Error('class missing generative-nvidia moduleConfig');","typeGuard":null,"tryCatchPattern":"try:\n    client.query.explore(...)\nexcept WeaviateError as e:\n    if 'empty config' in str(e):\n        log.info('cross-class request: module config unavailable')\n    else:\n        raise","preventionTips":["Define class-level moduleConfig for generative-nvidia.","Use class-scoped queries for generation features.","Verify schema sync during JoinNode operations.","Treat nil-config cross-class validation as expected."],"tags":["configuration","graphql","validation","generative-nvidia"],"backgroundTag":"empty-module-config","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"}