amir20/dozzle · warning
minimum must be between 0 and buffer size
Error message
minimum must be between 0 and buffer size
What it means
After parsing the `min` query parameter, fetchLogsBetweenDates range-checks it against 0 and the ring buffer capacity (500). Values outside that range get the fixed message "minimum must be between 0 and buffer size" with HTTP 400 Bad Request. The buffer cannot be sized smaller than 0 or larger than its default capacity.
Solutions
- Set min to an integer between 0 and 500 inclusive
- Omit `min` to keep the default 500-event buffer
- If more than 500 events are needed, use `everything` or adjust from/to date ranges instead of min
- Clamp the value client-side before sending
Example fix
// before const min = 1000; // exceeds buffer size 500 // after const min = Math.min(Math.max(0, requested), 500);
Defensive patterns
Strategy: validation
Validate before calling
const min = Number.parseInt(raw, 10);
if (!Number.isInteger(min) || min < 0 || min > 500) throw new Error("min out of range"); Prevention
- Clamp values to 0..500 before sending
- Treat min as a buffer hint, not a page size
- Omit the parameter for default behavior
When it happens
Trigger: GET .../logs?min=-1 or ?min=501 (buffer default size is 500). Any negative value or value exceeding 500 triggers the rejection.
Common situations: Clients trying to request 'all logs' with a huge min value; UI sliders misconfigured with negative bounds; code copy-pasted between endpoints with different buffer limits; assuming min is unbounded like a limit parameter.
Understand the failure class
Background: "value must be between 0 and 1" / "out of range" / "must not be negative" errors: fixing range-validation failures across open-source libraries — this error's family across 42 libraries.
Related errors
AI-assisted analysis of amir20/dozzle@d9463cbe21 (2026-09-07).
Data as JSON: /api/errors/b364a50a3dc02916.
Report an issue: GitHub.
Appendix: source
Thrown at internal/web/logs.go:147
inverse := r.URL.Query().Get("inverse") == "true"
onlyComplex := r.URL.Query().Has("jsonOnly")
everything := r.URL.Query().Has("everything")
if everything {
from = time.Time{}
to = time.Now()
}
minimum := 0
buffer := utils.NewRingBuffer[*container.LogEvent](500)
if r.URL.Query().Has("min") {
minimum, err = strconv.Atoi(r.URL.Query().Get("min"))
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if minimum < 0 || minimum > buffer.Size {
http.Error(w, "minimum must be between 0 and buffer size", http.StatusBadRequest)
return
}
buffer = utils.NewRingBuffer[*container.LogEvent](minimum)
}
maxStart := math.MaxInt
if r.URL.Query().Has("maxStart") {
maxStart, err = strconv.Atoi(r.URL.Query().Get("maxStart"))
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
if maxStart < 1 || maxStart > buffer.Size {
http.Error(w, "invalid maxStart", http.StatusBadRequest)
return
}
}
View on GitHub (pinned to d9463cbe21)