crowdsecurity/crowdsec · error

nameless bucket

Error message

nameless bucket

What it means

loadBucketFactoriesFromFile logs 'Won't load nameless bucket' and returns this error when a parsed bucket file has an empty Spec.Name. Unlike Validate, this is raised during bulk loading of the hub directory, aborting the load of that file.

Solutions

  1. Inspect the offending scenario file reported in logs and add the `name:` field
  2. Re-sync the hub (`cscli hub update` + `cscli hub upgrade`) to restore pristine files
  3. Remove or fix the broken local override file

Example fix

# before (broken file)
type: leaky
filter: "..."
# after
type: leaky
name: author/scenario-name
filter: "..."
Defensive patterns

Strategy: validation

Validate before calling

for _, f := range scenarioFiles {
    if parseBucket(f).Spec.Name == "" {
        log.Printf("file %s has no name; fix before reload", f)
    }
}

Prevention

When it happens

Trigger: Parsing a bucket file from disk whose name field is empty, via LoadBuckets.

Common situations: A corrupted or hand-edited scenario file in /etc/crowdsec/scenarios, a bad hub sync that wrote partial YAML, or a mounted config missing the name key.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of crowdsecurity/crowdsec@909b515798 (2026-09-06). Data as JSON: /api/errors/53527d19c2cd9e12. Report an issue: GitHub.

Appendix: source

Thrown at pkg/leakybucket/manager_load.go:145

		f := BucketFactory{}

		err = dec.Decode(&f.Spec)
		if err != nil {
			if !errors.Is(err, io.EOF) {
				log.Errorf("Bad yaml in %s: %v", itemPath, err)
				return nil, fmt.Errorf("bad yaml in %s: %w", itemPath, err)
			}

			log.Tracef("End of yaml file")

			break
		}

		f.DataDir = hub.GetDataDir()
		// check empty
		if f.Spec.Name == "" {
			log.Errorf("Won't load nameless bucket")
			return nil, errors.New("nameless bucket")
		}
		// check compat
		if f.Spec.FormatVersion == "" {
			log.Tracef("no version in %s : %s, assuming '1.0'", f.Spec.Name, itemPath)
			f.Spec.FormatVersion = "1.0"
		}

		ok, err := constraint.Satisfies(f.Spec.FormatVersion, constraint.Scenario)
		if err != nil {
			return nil, fmt.Errorf("failed to check version: %w", err)
		}

		if !ok {
			log.Errorf("can't load %s : %s doesn't satisfy scenario format %s, skip", f.Spec.Name, f.Spec.FormatVersion, constraint.Scenario)
			continue
		}

		f.Filename = filepath.Clean(itemPath)

View on GitHub (pinned to 909b515798)