- the peer controller error encoder read err.Code into a JSON map, which after the AppCode rename
is a bound method that json.Marshal rejects, so every forwarded API error fell to the generic
path; it now encodes AppCode and, as on 2.0.x, sends a cause with nothing to marshal as text
- the REST responder logged e.Code as a field for the same reason
- the perf-tagged rate limiter test compared the method value to a code string
- extracts encodeApiError and tests that the encoding succeeds and carries the code as a string
- adds common/slogbridge, a slog.Handler that emits records as logrus entries at the matching
level, with attrs as fields, groups flattened to dotted keys, and the record caller set on the
entry so pfxlog attributes each line to the library function that logged it
- gates on the logrus level at call time, so the configured level and agent set-log-level apply
to library output without mirroring
- installs the handler as the root of foundation's logging registry and as the log/slog default,
with the registry opened to trace so logrus is the only filter, in the CLI root init and both
test package inits
- emits fatal and panic records at their own severity; Entry.Log never exits or panics
- moves foundation from the v2.0.86 pin to the commit carrying its logging registry, pending the
v2.0.102 tag, and drops the replace directives in the root module and zititest
- renames errorz.ApiError.Code to AppCode at every site that range requires, in
controller/apierror, api_impl, command, internal/routes, model, oidc_auth, raft and response
Add more raft config knobs
Refactor peer handles to be consistent with other handlers
Allow inspect to work across controllers
Add config and clusterconfig inspect support