tailscale/tailscale · error
error sending event to recorder with address %q: %v
Error message
error sending event to recorder with address %q: %v
What it means
Streaming the encoded session-recording event to one of the tsrecorder addresses failed (with API-support failures handled separately), so that recorder didn't receive the event; failures across recorders aggregate and decide fail-open/fail-closed.
Source
Thrown at k8s-operator/api-proxy/proxy.go:422
}
req.Body = io.NopCloser(bytes.NewReader(bodyBytes))
event.Request.Body = bodyBytes
var errs []error
// TODO: ChaosInTheCRD ensure that if there are multiple addrs timing out we don't experience slowdown on client waiting for response.
fail := true
for _, addr := range addrs {
data := new(bytes.Buffer)
if err := json.NewEncoder(data).Encode(event); err != nil {
return fmt.Errorf("error marshaling request event: %w", err)
}
if err := ap.sendEventFunc(addr, data, ap.ts.Dial); err != nil {
if apiSupportErr, ok := err.(sessionrecording.EventAPINotSupportedErr); ok {
ap.log.Warnf(apiSupportErr.Error())
fail = false
} else {
err := fmt.Errorf("error sending event to recorder with address %q: %v", addr.String(), err)
errs = append(errs, err)
}
} else {
return nil
}
}
merr := errors.Join(errs...)
if fail && failOpen {
msg := fmt.Sprintf("[unexpected] failed to send event to recorders with errors: %s", merr.Error())
msg = msg + "; failure mode is 'fail open'; continuing request without recording."
ap.log.Warn(msg)
return nil
}
return merr
}
View on GitHub (pinned to 6e0912f979)
Solutions
- Sending the session-recording event to the recorder failed; verify the recorder address is correct and reachable from the operator.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at k8s-operator/api-proxy/proxy.go:422 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18).
Data as JSON: /api/errors/f497076ee3d1b63d.
Report an issue: GitHub.