Skip to content

Update getting-started.md - #907

Merged
jeremydmiller merged 1 commit into
JasperFx:mainfrom
GeeSuth:patch-1
May 29, 2024
Merged

Update getting-started.md#907
jeremydmiller merged 1 commit into
JasperFx:mainfrom
GeeSuth:patch-1

Conversation

@GeeSuth

@GeeSuth GeeSuth commented May 26, 2024

Copy link
Copy Markdown
Contributor

fix some missed/removed link

@jeremydmiller
jeremydmiller merged commit a9460ab into JasperFx:main May 29, 2024
jeremydmiller added a commit that referenced this pull request Aug 1, 2026
…c-metrics

System traffic no longer counts as application message metrics (CritterWatch GH-907)
uniquelau pushed a commit to uniquelau/wolverine that referenced this pull request Aug 1, 2026
…erWatch JasperFxGH-907)

An idle Wolverine app with CritterWatch applied reported ~150 messages a
minute of nothing but its own machinery: agent commands on the node control
queues, acknowledgements, and CritterWatch's monitoring messages — the last
of which fed back on itself, since the accumulator's exports are published
to CritterWatch as messages that were themselves counted.

Three gaps closed, all resolved ONCE at construction time (per endpoint,
per executor) with no per-envelope branching, following the same shape as
InlineSendingAgent's sendWithTracing/sendWithOutTracing split:

- The meter counters in WolverineRuntime.Tracking were unconditional — every
  send incremented wolverine-messages-sent no matter what the traffic was.
  Sending agents, local queues, and listening pipelines now resolve their
  tracker through MessageTrackingFor(endpoint): a System-role endpoint or
  one with TelemetryEnabled = false gets the new metrics-silent
  SystemTrafficMessageTracker, which keeps the debug logging,
  tracked-session bookkeeping, and wire taps but records nothing.
- The executor factory excluded only IAgentCommand, and only in the
  CritterWatch publishing modes. It now excludes the full system-message
  surface (IInternalMessage, IAgentCommand, INotToBeRouted — which covers
  ICritterWatchMessage and acknowledgements — and opted-out assemblies) in
  EVERY metrics mode, and consults the endpoint's role as well.
- An endpoint promoted to node control duty (UseTcpForControlEndpoint) never
  received the System role, unlike the database and shared-memory control
  endpoints that are born with it. The NodeControlEndpoint setter stamps it
  now.

The old IsSystemEndpoint string match stays as defense in depth for the
accumulator paths, but the classification the system actually relies on is
EndpointRole, per the JasperFxGH-907 acceptance criteria.

Wolverine.CritterWatch's own endpoints get marked System-role in a matching
CritterWatch-repo change (InternalsVisibleTo already covers it).

Full CoreTests (2176) and MetricsTests (25, including the pump tests that
prove application traffic is still counted in CritterWatch/Hybrid modes)
pass.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013eR4GL278688VhyhrGcttJ
jeremydmiller added a commit that referenced this pull request Aug 2, 2026
…H-3774)

MessageSucceededContinuation, NoHandlerContinuation, MoveToErrorQueue, and
DiscardEnvelope reported through the runtime's GLOBAL tracker, bypassing the
metrics-silent tracker the GH-907 work resolves at construction time — so a
system message's completion still recorded wolverine-messages-succeeded and
wolverine-effective-time, and in the publishing modes still fed the
accumulator's effective-time rollup (the CritterWatch#880 producer: console
round-trips like dlq-operation reported Avg Effective in the tens of
millions of ms).

The executor now stamps its resolved tracker on the MessageContext at
execution time (NoHandlerExecutor gets the resolved tracker from the factory
and does the same), and completion continuations resolve through
CompletionTrackerFor: divert ONLY when the stamped tracker is the
metrics-silent one; every other resolved tracker keeps the historical
runtime-global reporting, because the Direct/Hybrid publishing trackers'
completion methods post to their own sink AND delegate to the runtime —
routing completions through them would double-count application traffic.

Also guards the effective-time arithmetic against an unset SentAt in the
runtime tracker and both publishing trackers (CritterWatch#880's other
half): success/failure still count, the ~56-year now-minus-default figure is
no longer recorded. Envelope.SentAt auto-initializes to UtcNow; the unset
case arrives via wire deserialization when the header is absent.

Four new tests in system_traffic_metrics_silencing pin the continuation
diversion, the application-traffic fallback, and the SentAt guard; the two
diversion tests were verified to FAIL against the unfixed continuations.

Closes GH-3774

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants