JuliusBrussee/caveman · error · ReplayRunError
cachebench: request %q is not cacheable: %s
Error message
cachebench: request %q is not cacheable: %s
What it means
The engine's decision for this request was neither Apply nor ObserveOnly — the request is not cacheable, so it cannot contribute to the replay's cache evaluation. The decision/reason string is included in the message.
Source
Thrown at cacheengine/cachebench/replay.go:528
}
optimized, err := runner.Engine.Optimize(ctx, native)
if err != nil {
return nil, fmt.Errorf("cachebench: optimize request %q: %w", record.RequestID, err)
}
equivalent := bytes.Equal(native.Body, optimized.Body)
if optimized.Applied {
equivalent = ModelVisibleEquivalent(native.Body, optimized.Body)
}
if !equivalent {
return nil, &ReplayRunError{
RequestID: record.RequestID, FailureCode: "model_visible_mismatch",
Err: fmt.Errorf("cachebench: request %q failed model-visible equivalence", record.RequestID),
}
}
if optimized.Decision != cacheengine.DecisionApply && optimized.Decision != cacheengine.DecisionObserveOnly && optimized.Reason != cacheengine.ReasonBelowMinimum {
return nil, &ReplayRunError{
RequestID: record.RequestID, FailureCode: "engine_not_cacheable",
Err: fmt.Errorf("cachebench: request %q is not cacheable: %s", record.RequestID, optimized.Reason),
}
}
prepared = append(prepared, preparedReplay{record: record, optimized: optimized})
}
return prepared, nil
}
func validatePreparedReplayTarget(prepared []preparedReplay, target Target) error {
if err := validateTarget(target); err != nil {
return err
}
providers := map[string]bool{}
eligible := map[string]int{}
for _, item := range prepared {
provider := strings.ToLower(strings.TrimSpace(item.record.Provider))
providers[provider] = true
if item.optimized.Decision == cacheengine.DecisionApply || item.optimized.Decision == cacheengine.DecisionObserveOnly {
eligible[provider]++View on GitHub (pinned to 766dce6b13)
Solutions
- Exclude non-cacheable requests from the replay trace
- Inspect the engine reason to understand why eligibility was denied
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at cacheengine/cachebench/replay.go:528 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/58f377c609b5e2cd.
Report an issue: GitHub.