tailscale/tailscale · error

error marshaling request event: %w

Error message

error marshaling request event: %w

What it means

JSON-encoding the assembled session recording event failed before it could be sent to any recorder; the event struct contains channels or unsupported value types only under internal misuse, so this is effectively an invariant violation.

Source

Thrown at k8s-operator/api-proxy/proxy.go:414

		event.Source.NodeUserID = who.UserProfile.ID
	} else {
		event.Source.NodeTags = who.Node.Tags
	}

	bodyBytes, err := io.ReadAll(req.Body)
	if err != nil {
		return fmt.Errorf("failed to read body: %w", err)
	}
	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())

View on GitHub (pinned to 6e0912f979)

Solutions

  1. Marshaling the request event failed; internal serialization error — upgrade the operator and retry.
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at k8s-operator/api-proxy/proxy.go:414 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/64af0393b88522ce. Report an issue: GitHub.