JuliusBrussee/caveman · error

cacheengine: duplicate normalized driver provider %q

Error message

cacheengine: duplicate normalized driver provider %q

What it means

Error "cacheengine: duplicate normalized driver provider %q" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/engine.go:91

	if maxRequestBytes == 0 {
		maxRequestBytes = defaultInputByteLimit
	}
	maxStablePrefixBytes := config.MaxStablePrefixBytes
	if maxStablePrefixBytes == 0 {
		maxStablePrefixBytes = defaultInputByteLimit
	}
	resolver := config.ResolveProfile
	if resolver == nil {
		resolver = defaultProfile
	}
	drivers := make(map[string]Driver, len(config.Drivers))
	for rawProvider, driver := range config.Drivers {
		provider := strings.ToLower(strings.TrimSpace(rawProvider))
		if provider == "" || driver == nil {
			return nil, errors.New("cacheengine: driver needs non-empty provider and implementation")
		}
		if _, exists := drivers[provider]; exists {
			return nil, fmt.Errorf("cacheengine: duplicate normalized driver provider %q", provider)
		}
		drivers[provider] = driver
	}
	return &Engine{
		guard: cacheguard.New(), prefixSafety: newPrefixSafetyCache(8192),
		maxKeyShards: maxShards, maxRequestBytes: maxRequestBytes, maxStablePrefixBytes: maxStablePrefixBytes,
		resolveProfile: resolver, drivers: drivers,
	}, nil
}

// Plan selects profitable stable-prefix cache boundaries without editing wire bytes.
func (e *Engine) Plan(request PlanRequest) (Plan, error) {
	if e == nil || e.guard == nil || e.prefixSafety == nil {
		return Plan{}, errors.New("cacheengine: nil engine")
	}
	if e.configErr != nil {
		return Plan{}, e.configErr
	}

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Remove the duplicate normalized driver provider.

When it happens

Trigger: Thrown at cacheengine/engine.go:91 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15). Data as JSON: /api/errors/62e0df1beb97c88f. Report an issue: GitHub.