ServiceRadar v1.4.42
Lands passive L2 device discovery in netprobe end to end, unblocks
add-on auto-update across a mixed fleet, and makes a Helm component's
enabled: false actually disable it.
Whats New
1.4.42
- Netprobe: passive device census. The TC ingress classifier reads
sender MACs and parses ARP and IPv6 NDP, so a device present for
seconds is seen with no probe traffic at all. Bindings ship as
whole-segment snapshots (15m TTL, 4096 per interface, every 120s),
reassembled by the agent, streamed to the gateway, and routed into
core's inventory sync. (PRs #3854, #3858, #3865, #3866, #3868,
#3869, #3870, #3871) - Netprobe: in-kernel suppression never recorded a seen device, so
every frame re-emitted and the watchdog shut the census down ten
seconds after each start. A 55-device segment now runs steadily at
about 0.05% CPU. (PR #3876) - Netprobe: census drops are counted rather than lost silently, and
an observation is logged only when the binding is new. The former
per-observation line flooded journald on a busy segment.
(PRs #3868, #3876) - Netprobe: stopping no longer runs to systemd's kill timeout, and a
restart detaches the previous TC classifier instead of stacking
copies from older builds. (PR #3858) - Identity: a census sighting cannot collapse devices onto the agent
that overheard them. Off-segment (router-MAC) sightings are
dropped, a randomized MAC is flagged rather than allowed to anchor
a device, and the collector's agent_id is no longer attached to
every device it observes. (PRs #3863, #3869, #3871) - Add-ons: a containerized agent is no longer a rollout target for
host-installed add-ons. An in-cluster agent can never report
add-on health, so it aged out at the candidate health timeout and
failed the rollout for every bare-metal host with it, which is
what stalled auto-update fleet-wide. (PR #3875) - Add-ons: rollout health uses the version actually delivered and
signature-verified at staging, not the add-on's compiled-in
self-report. A self-report left stale had been silently blocking
that add-on's own upgrades. (PR #3875) - Add-ons: disabling or deleting a profile now retires its
assignments, instead of leaving them enabled and still being
delivered with no profile left to turn them off. (PR #3875) - Agent: agents report
addon.native.host/
addon.native.host.unavailable, so the control plane is told
outright whether a host installs native add-ons rather than
inferring it. (PR #3875) - Agent: the SELinux relabel of staged add-on binaries also runs
from the agent. A host on a pre-1.4.39 setuid updater, which a
release activation never replaces, left staged binaries var_lib_t
and every add-on start failed 203/EXEC. (PR #3875) - Identity: the duplicate-device sweep groups on the agent_id device
column as well as identifier rows, so a host whose IP changed is
no longer left as two permanent device records. (PR #3875) - Identity: fence pins are observed across agent-gateway sync,
composite-check refresh, sweep event-writer and sync ingest, with
fresh/drift/missing telemetry. Observe-only: no write is blocked.
(PR #3862) - Web UI: a device's Flows tab no longer crashes its own LiveView
into a six-second reload loop. Query fan-out is bounded and pool
exhaustion now degrades one widget rather than the page. The flow
stat cards were reworked in the same range to be index-driven, so
they use the src/dst indexes instead of scanning. (PRs #3872,
#3878) - Feeds: a brief upstream timeout no longer discards an advisory
feed run for a whole six-hour cycle. Retries are spaced about 2,
10 and 30 minutes apart with jitter. (PR #3853) - Feeds: a job stuck
executingbecause its node vanished (pod
replaced, or OOMKilled and restarted under the same pod IP) is
cancelled and re-enqueued at once, rather than waiting up to 240
minutes for Oban's Lifeline. (PR #3861) - Helm:
<component>.enabled: falsenow actually removes the
workload. Eighteen templates deployed regardless, so a values file
read as disabled while the pod ran. Omitting the key still means
enabled. (PR #3860) - Build:
make push_allon macOS defaults to--config=remote.
--config=cipoints at a cache path that exists only on
BuildBuddy executors, so the push aborted before it started.
(PR #3857) - Build: Go, Rust and Elixir benchmarks run in CI instead of only
being compiled, and the metric fixture profile no longer depends on
an uncommitted local corpus. (PRs #3855, #3867) - Docs: clone commands in README, INSTALL and README-Docker point at
GitHub instead of the retired Forgejo host, so the first documented
step works. The OpenText plugin's in-product documentation link --
which an operator clicks from the integration config UI -- pointed
at that dead host too, as did the SRQL cookbook and language
reference. (PR #3852)
Upgrade Notes
- Helm:
<component>.enabled: falseis now HONORED where it was a
silent no-op, for core, nats, datasvc, trapd, logCollector, webNg
and agent. Grep any bespoke values file for those keys before
upgrading: a flag that was aspirational at v1.4.41 will now delete
that workload. Stockvalues.yamlandvalues-demo.yamlrender
byte-identically and are unaffected. (PR #3860) - Netprobe: the passive device census is ON by default and has no
toggle. It creates inventory devices from what it overhears on the
segment. It needs no migration -- observations route through the
existing sync-ingest path. Publish the netprobe add-on at 0.2.37;
the census does not exist on the fleet until that bundle rolls out. - Netprobe: watch
events_emitted_total{event="device_census_snapshot"}
andevents_dropped_total{...}after the rollout. If in-kernel
suppression breaks, the watchdog stops the census and it stays
stopped until netprobe restarts. - Add-ons: expect one-time movement on the first reconcile. Rollouts
that had been ageing out at the health timeout all unblock at once;
assignments whose profile was disabled or deleted are retired off
their hosts; and containerized agents lose native add-on
assignments for every supervision model. Upgrade core and agents
together -- an agent older than 1.4.42 reports neither host
capability, so core stays permissive for it by design. - Identity: the first sweep after upgrade merges devices that share an
agent_idcolumn value, which had been invisible to it. Throttle
withconfig :serviceradar, ServiceRadar.Inventory.Identity.DuplicateSweep, max_merges_per_run: N(default 200) to make that convergence
slower and easier to watch. - Feeds: a failing advisory feed now spreads its retries over about
42 minutes instead of 65 seconds. Intended -- all three old attempts
landed inside the same upstream blip. (PR #3853) - Known, not fixed: about thirty Helm sub-feature flags remain inert,
includingcnpg.enabled=falseandcore.migrations.enabled=false,
which still render their resources (issue #3859). On the device
flows tab the Services facet stays empty and the traffic chart
renders no data.