weaviate/weaviate · error

empty config

Error message

empty config

What it means

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.

Source

Thrown at modules/generative-nvidia/config/class_settings.go:46

var (
	DefaultBaseURL     = "https://integrate.api.nvidia.com"
	DefaultNvidiaModel = "nvidia/llama-3.1-nemotron-51b-instruct"
)

type classSettings struct {
	cfg                  moduletools.ClassConfig
	propertyValuesHelper basesettings.PropertyValuesHelper
}

func NewClassSettings(cfg moduletools.ClassConfig) *classSettings {
	return &classSettings{cfg: cfg, propertyValuesHelper: basesettings.NewPropertyValuesHelper("generative-nvidia")}
}

func (ic *classSettings) Validate(class *models.Class) error {
	if ic.cfg == nil {
		// we would receive a nil-config on cross-class requests, such as Explore{}
		return errors.New("empty config")
	}
	if err := ic.propertyValuesHelper.ValidateBaseURL(ic.BaseURL()); err != nil {
		return err
	}
	return nil
}

func (ic *classSettings) BaseURL() string {
	return ic.propertyValuesHelper.GetPropertyAsString(ic.cfg, baseURLProperty, DefaultBaseURL)
}

func (ic *classSettings) Model() string {
	return ic.propertyValuesHelper.GetPropertyAsString(ic.cfg, modelProperty, DefaultNvidiaModel)
}

func (ic *classSettings) Temperature() *float64 {
	return ic.propertyValuesHelper.GetPropertyAsFloat64(ic.cfg, temperatureProperty, nil)
}

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Use class-scoped Get{} queries with proper moduleConfig instead of Explore{} where validation matters.
  2. If hit during JoinNode/cluster sync, ensure the class definition in the schema carries its generative-nvidia moduleConfig.
  3. Treat as an expected guard on cross-class requests; report upstream if it appears on normal class requests.
  4. Check the class schema moduleConfig for generative-nvidia is present and non-empty.
Defensive patterns

Strategy: try-catch

Validate before calling

// ensure class schema carries moduleConfig before cluster ops
const cfg = schema.classes.find(c => c.class === 'Doc').moduleConfig?.['generative-nvidia'];
if (!cfg) throw new Error('class missing generative-nvidia moduleConfig');

Try / catch

try:
    client.query.explore(...)
except WeaviateError as e:
    if 'empty config' in str(e):
        log.info('cross-class request: module config unavailable')
    else:
        raise

Prevention

When it happens

Trigger: Cross-class requests such as Explore{} (noted as called by JoinNode in this path) reaching generative-nvidia settings validation with nil cfg.

Common situations: Explore{} queries in deployments with generative-nvidia enabled; cluster join/node-sync paths validating classes without class-level moduleConfig; rarely a user misconfiguration.

Related errors


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