JuliusBrussee/caveman · error

cachebench: replay trace is empty

Error message

cachebench: replay trace is empty

What it means

Error "cachebench: replay trace is empty" thrown in JuliusBrussee/caveman.

Source

Thrown at cacheengine/cachebench/replay.go:357

// ReplayRunner performs prevalidated absolute-time live replay.
type ReplayRunner struct {
	Engine    *cacheengine.Engine
	Transport ReplayTransport
	Verifier  ReplayVerifier
	Limits    ReplayLimits
	// Target enables a post-engine eligible-population gate before any provider
	// call. Nil leaves target evaluation to caller.
	Target    *Target
	TimeScale float64
	Now       func() time.Time
	Sleep     func(context.Context, time.Duration) error
}

// ValidateReplay performs zero-network trace, schedule, and budget preflight.
func ValidateReplay(records []TraceRecord, limits ReplayLimits, timeScale float64) (ReplayPreflight, error) {
	if len(records) == 0 {
		return ReplayPreflight{}, errors.New("cachebench: replay trace is empty")
	}
	if limits.MaxRequests <= 0 || limits.MaxDeclaredBilledTokens <= 0 || limits.MaxGap <= 0 || limits.MaxScheduleDrift <= 0 || limits.MaxConcurrency <= 0 || limits.MaxConcurrency > 1024 {
		return ReplayPreflight{}, errors.New("cachebench: positive replay request, token, gap, schedule-drift, and concurrency limits required; concurrency cannot exceed 1024")
	}
	if len(records) > limits.MaxRequests {
		return ReplayPreflight{}, fmt.Errorf("cachebench: replay population %d exceeds request limit %d", len(records), limits.MaxRequests)
	}
	if timeScale <= 0 || math.IsNaN(timeScale) || math.IsInf(timeScale, 0) || timeScale > 1000 {
		return ReplayPreflight{}, errors.New("cachebench: time scale must be greater than zero and at most 1000")
	}
	seen := make(map[string]bool, len(records))
	timing := map[string]bool{}
	tokens := map[string]bool{}
	var previous time.Time
	var declaredInput, declaredOutput, worstCase, scheduled int64
	for index, record := range records {
		if seen[record.RequestID] {
			return ReplayPreflight{}, fmt.Errorf("cachebench: duplicate replay request %q", record.RequestID)

View on GitHub (pinned to 27d5a3981a)

Solutions

  1. Provide a non-empty replay trace.

When it happens

Trigger: Thrown at cacheengine/cachebench/replay.go:357 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/f4ab0edaf7c2d1f1. Report an issue: GitHub.