Skip to content

RoutingGrain dispatch slots saturate with legs head-of-line blocked behind one shared-cache destination while the second pod starves on load #5009

Closed as not planned

Description

@systemorph-com

What is failing

The Orleans RoutingGrain dispatch-slot pool (64 slots) saturates repeatedly on both memex-portal pods, and the two pods show two different failures at the same log site:

  • Pod s246c (head-of-line blockage): in every burst, ~62 of the 64 in-flight legs are queued behind a single destination — cache/12xX8OXQIEmdwvf_ZZ8LjA, a shared node-cache address — with routing pool subscribing 0 and stream destinations queued 1. By the alert's own semantics, a deepest per-destination queue of 62 means legs are blocked behind one leg that is not terminating.
  • Pod ndnxt (load/starvation): the same threshold is crossed with deepest per-destination queue 0 and stream destinations queued 0 — nothing is waiting on anything, so this is dispatch volume / CPU starvation on the silo, not a stuck delivery.

Rising episode stamps on both activations (#1→#3 on s246c, #6→#12 on ndnxt) mean each episode drained — slots are not leaking and the grain was not recycled. The problem is recurrence: the routing layer ran at its back-pressure ceiling for ~1.5 hours straight.

Probable cause

  • s246c — medium confidence: a slow or stuck leg to the shared node-cache destination cache/12xX8OXQIEmdwvf_ZZ8LjA. The same shape recurs in Ops logs as [STALE-CALLBACK] cache/…: N callback(s) pending > 30000ms going back to 2026-08-12 on the memex-cloud cluster — deliveries to cache addresses that hang for >30s. A head leg to that destination stalling would queue every other cache-bound leg behind it and hold 62 of 64 slots. The evidence supports this; it does not prove it — the episode stamps show the blockage does eventually clear, so the leg is slow, not permanently dead.
  • ndnxt — lower confidence: pure dispatch-load starvation. The 2026-09-14 fix moved bulk imports/copies/moves off the routing switchboard precisely because heavy work competing with routing produced this symptom; worth checking whether the traffic running 19:07–20:34 today was another caller reintroduced on the switchboard, or simply legitimate volume the silo can't drain.

Impact

17 critical bursts over ~87 minutes (19:07–20:34 UTC) across both pods of the memex-cloud portal. Every message the portal routes passed through a grain repeatedly running at its back-pressure ceiling — user-facing page subscriptions and sync streams routed through these grains saw recurring head-of-line queuing (s246c) or slot exhaustion (ndnxt). Not a full outage — episodes drained — but a sustained degradation, not a blip.

Where to look

Note for the assignee: this log site reports genuinely different conditions (head-of-line blockage vs. load starvation) that the masking rule folds into one fingerprint — the two shapes above should be investigated as separate leads.


Evidence

Fingerprint 1ae8e45450e08823
Category MeshWeaver.Hosting.Orleans.RoutingGrain
Severity Critical
Namespace memex-cloud
Pods memex-portal-deployment-69956b6dbc-ndnxt, memex-portal-deployment-69956b6dbc-s246c
Occurrences 17
First seen 2026-09-20 19:07:47Z
Last seen 2026-09-20 20:34:25Z
Routing not determined — no configured route matches the category MeshWeaver.Hosting.Orleans.RoutingGrain. This repository is the configured fallback, not a finding about who owns the fault; the category names the LOGGER, which may not be the subject.
Recent log lines
2026-09-20 20:07:47Z memex-portal-deployment-69956b6dbc-s246c crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [9d926d64#1 started 2026-09-20T20:07:47.8062870Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/12xX8OXQIEmdwvf_ZZ8LjA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:07:47Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#6 started 2026-09-20T20:07:47.8263262Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 0. Latest dispatch target Ifrs17/PartnerRating — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:27:47Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#8 started 2026-09-20T20:27:47.7964913Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 0. Latest dispatch target Edu/Quiz — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:27:47Z memex-portal-deployment-69956b6dbc-s246c crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [b39b1032#1 started 2026-09-20T20:27:47.7985847Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/12xX8OXQIEmdwvf_ZZ8LjA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:30:35Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#9 started 2026-09-20T20:30:35.8246860Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 0. Latest dispatch target Hosting/IssueClassificationRun — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:30:35Z memex-portal-deployment-69956b6dbc-s246c crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [b39b1032#2 started 2026-09-20T20:30:35.8417081Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/12xX8OXQIEmdwvf_ZZ8LjA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:30:36Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#10 started 2026-09-20T20:30:36.3321684Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 1. Latest dispatch target Reinsurance/AggregateSection — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:30:36Z memex-portal-deployment-69956b6dbc-s246c crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [b39b1032#3 started 2026-09-20T20:30:36.3622892Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/12xX8OXQIEmdwvf_ZZ8LjA — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:32:56Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#11 started 2026-09-20T20:32:56.3249797Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 2. Latest dispatch target Ifrs17/LineOfBusiness — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
2026-09-20 20:34:25Z memex-portal-deployment-69956b6dbc-ndnxt crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
      [ROUTE] Routing back-pressure [bd087f9a#12 started 2026-09-20T20:34:25.8222055Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 1. Latest dispatch target Edu/PromptCell — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.

Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

Opened automatically from Admin/_LogIncident/1ae8e45450e08823. Recurrences are folded into this issue rather than opening new ones.

Activity

  1. rbuergi commented on Sep 21, 2026

    @rbuergi
    Contributor

    Consolidation: this is the canonical ticket for the cache-destination head-of-line block

    29 of the 87 bot-filed tickets opened 2026-09-19 → 2026-09-21 describe one defect: a route leg to a cache/* pod-hub destination does not terminate, and because dispatches to one destination are serialized, the per-destination queue absorbs nearly the whole 64-slot in-flight budget. They are being closed as duplicates of this ticket. Everything below is evidence those tickets carried that this one did not — it is migrated here so nothing is lost with them.

    Closed into this ticket: #4897, #4899, #4900, #4904, #4908, #4989, #4992, #4993, #4994, #4995, #4996, #4998, #4999, #5000, #5002, #5003, #5004, #5005, #5006, #5007, #5010, #5012, #5014, #5029, #5031, #5032, #5061, #5063.

    1. It is not one bad cache hub — twelve distinct destinations were measured

    destination tickets
    cache/12xX8OXQIEmdwvf_ZZ8LjA #4899 #4994 #5002 #5003 #5005 #5006 #5007 #5061 (and this one)
    cache/PlOy4bo4wUGD_muJVcJzcg #4993 #4996 #5000 #5010 #5012
    cache/YORFhwiyqEyTP9ESF-NUNg #4900 #4904
    cache/pY9MmqY9YECUi-OLU-u1pA #4995 #4999
    cache/Lmzw6ArfrECTSTdqx1hFTg #5014 #5031 #5032
    cache/Xpi-G1Q-lU6s2Moll9rUcw #5029 #5031
    cache/sJ0Xk1NSsEaHD_ONqJ314Q #4999 #5007
    cache/vyK5n1IlsUqe7j8OHpW-Sg #4897
    cache/_mPaH5nYqE2LNR0tiWR3DQ #4908
    cache/UQaJgLdynkKmdsldLQJQgg #5004
    cache/V9iMXHCKVkurS1KMrArQ3Q, cache/z_5Dny2pKkeS2yNS_gWx7A #5063
    cache/fT_xtrn7fkukavHMBB4MqA #5061

    Both production portals, every portal pod. So the fix is in the routing leg's bound, not in one destination hub.

    2. The depth is NOT always 62 — it scales with the backlog

    62 is the common reading, not a signature: #5031/#5032 measured 16 and 13, #5029 measured 25, #5002 measured 14 and 62, #5063 measured 5, 36, 39 and 62 in one 53-second burst. #5063's reading of its own mixed depths is that the backlog was spread across several destinations rather than pinned on one — worth keeping as the counter-example to "one slow hub".

    3. It is not a leaked slot, in every longitudinal sample

    Episode stamps advance on the same activation, which by the log site's own rule means each episode drained:

    Two samples do not settle it and should not be read as settled: #5003 and #5014 each captured a crossing (d9e0b2de#3/#4, b5b0cd54#1) with no higher episode and no clear line inside the sample window. That excludes nothing; it is the one reading that would turn this into a slot-release bug.

    4. Periodicity, and the "dead pod hub" reading

    #5000 is the sharpest single hypothesis and is worth reading in full: 8 crossings on a ~37-minute cadence, identical destination and identical depth 62 every time — which it reads as a periodic dispatcher re-triggering against a hub that is not there, rather than random load. It cites prior evidence: on 2026-09-14 the same namespace logged repeated [ROUTE] Directed delivery to pod hub 'cache/…' was refused (Ops/Logs/memex-1789416031191996185-6b6b44-klrt7 and neighbours). Refused ≠ terminated (#4900's phrasing) — a refused delivery may leave its leg hanging.

    5. Corroborating log family: stale cache callbacks

    [STALE-CALLBACK] cache/…: N callback(s) pending > 30000ms recurs in Ops/Logs back to 2026-08-12. #5061 names instances: cache/fT_xtrn7fkukavHMBB4MqA with up to 6 pending, cache/zKwDrfWglUmNHD3114bDxA, cache/kiEWsIS0wkadPmkFkynoog. If a cache-hub callback can hang for >30 s, that is long enough to produce every reading above.

    6. Volume and simultaneity

    Largest bursts: #5006 40 occurrences over 2 h across 3 pods; #4992 22 over 2 h; #4989 20 over 1.5 h; #5007 17 over 1 h; this ticket 17 over 87 min. #4900 measured both pods crossing within 11 ms of each other — one platform-wide event, not two coincidences. #4999 measured all four pods crossing inside the same 4-minute window.

    7. Prior art the duplicates surfaced

    8. What none of the 29 establishes

    Why the head leg does not terminate. The two candidates — a stuck cache-hub callback, and the unbounded pre-timeout ThreadPool wait that the slot is held across — are not separated by any sample in the set. That separation is the first task, not the fix.

    Consolidated from the bot-filed incident backlog. Severity assigned per Doc/Architecture/IssueTaxonomy: sev:H — an intermittent, user-visible failure of the primary path (everything the portal routes), live on both production portals and recurring hourly for at least two days, with episodes that degrade rather than wedge.

  2. added
    area:orleansCore subsystem: the Orleans silo - grains, placement, routing
    sev:HBLOCKING: primary path broken, intermittent user-visible failure, or silently wrong results.
    on Sep 21, 2026
  3. rbuergi commented on Sep 21, 2026

    @rbuergi
    Contributor

    Consolidation 2026-09-21 — 19 tickets folded here

    Folded as duplicates: #5091 #5092 #5094 #5095 #5127 #5129 #5130 #5131 #5132 #5133 #5134 #5137 #5138 #5139 #5141 #5142 #5144 #5145 #5147.

    Grouped on the discriminator the log site itself defines, not on titles: a deepest per-destination queue ≥ 1 means legs are blocked behind a leg. Every ticket folded here measured a deepest reading of 23–62 of the 64-slot budget; the empty-queue (deepest 0) shape is a different verdict at the same log site and is tracked separately at #5018, and the alerting-policy verdict at #5118. All three were being filed as the same-looking title.

    The finding worth acting on: six tickets, one stuck client

    cache/wpWb1fSJPUacoVxY6LnltQ is the named blocked destination in #5129, #5130, #5131, #5132 and #5133 (09:08Z–09:42Z, deepest 41/62/62/48/61) and its nodeops sibling portal/nodeops-wpWb1fSJPUacoVxY6LnltQ in #5134. Six separately-filed incidents, one client. Two more client pairs show the same cache/<id> + portal/nodeops-<id> pattern: 9VkLPkBrRU-rwTJ4WyrfiQ (#5137, #5139, #5145) and TmrXhZkCpE6r94nulQBzpQ (#5142, #5144).

    🔗 Cross-group link: that same client address, cache/wpWb1fSJPUacoVxY6LnltQ, is the one whose SubscribeRequests were discarded at 08:21Z by the Hosting/TriageItem recycle cascade — see #5110, folded into #4888. It began head-of-line blocking routing ~47 minutes later. Whether the dropped-subscription state is what wedges the client, or both are downstream of a third cause, is not established — but it connects the two largest groups in this backlog and is the most promising thread in the burst.

    Denominator

    memex and memex-cloud both (#5138 and #5141 are memex-cloud), so the shape is not confined to one portal. #5134 is the cleanest slot-leak sample: episode 7c973d7f#1 is followed by neither a clear nor a higher episode, which by the log site's own rule means the leg never terminated. #5147 additionally lost a user-visible agent-thread message (UWDeepfield/IndustryNews/_Thread/…); that directed-delivery half is #2299.

  4. rbuergi commented on Sep 21, 2026

    @rbuergi
    Contributor

    Root cause: the ordering FIFO's key, not a slow leg — fix in #5151

    Not a stuck or slow cache/… leg. The ticket's medium-confidence hypothesis (a stalled leg to the shared node-cache destination, supported by the historical [STALE-CALLBACK] cache/… lines) is not what the code does. The mechanism is in OrderedRouteDispatcher, and the ticket's own "Where to look" asks the right question — why 62 legs can pile behind one destination before any bound kicks in.

    The queueing structure

    OrderedRouteDispatcher serialises stream-routed legs one in flight per destination address, so the delta protocol's receive-side monotonicity guard stays sound (reorder two frames of one stream and the earlier one is discarded as stale forever, with nothing logged above Debug on either side).

    But that guard operates per mirror — per synchronization stream — and a stream-routed address is a multiplexer. cache/{meshId} fronts one sync/{streamId} sub-hub per node the process mirrors, and DataExtensions.RouteStreamMessage receives every frame at the cache hub's own address and forwards it internally by StreamId. So keying the FIFO on the address alone put a whole process's data-sync traffic on one channel with one in-flight IPodHubGrain.Deliver grain call — a directed call carrying the full delivery, which Orleans' JsonCodec copies both ways.

    Where that destination is on another silo, the channel's service rate is one network round trip per frame. A busy portal's change fan-out exceeds it, and a single-server queue then grows.

    The asymmetry in this ticket is the proof, not a second lead

    The ticket reads the two pods as two leads. They are the two ends of one cross-silo channel:

    cache/{meshId} is keyed by the mesh hub's id, which is per process, so each pod has its own cache address and its own PodHubGrain activation on its own silo.

    • A pod's channel to its own cache hub is a local call and drains as fast as it fills → deepest 0.
    • Its channel to the peer pod's cache hub is a network round trip → 62 legs stacked.

    Which is why s246c queued 62 deep behind cache/12xX8OXQIEmdwvf_ZZ8LjA while ndnxt showed deepest 0, and why gx6z6 saw the same 12xX8… address on 09-19: in both windows the queueing pod is the non-ndnxt pod of the day, i.e. 12xX8… is the long-lived pod's cache hub and the queue is always the remote lane.

    Rising episode stamps on both activations are consistent with this and rule out the alternatives the line itself names: every episode drained, so no slot leaked and no leg was stuck. The 62 legs were independent streams with no ordering relationship, waiting on each other because the channel key could not tell them apart. The log line's rule (deepest ≥ 1 means legs are blocked behind a leg) was applied correctly and still produced the wrong conclusion, because the line is silent about why the legs share a queue.

    Why #1172 (cited as primary) did not hold

    It was never closed by a fix to this structure, and it predates the instrument that separates the two shapes.

    • Closed 2026-08-10 on An in-place update no longer costs the router a storage query per message #1179 — an amplifier (an in-place Updated no longer costs a storage query per routed message).
    • Reopened 2026-08-12; live dotnet-stack/EventPipe profiling on the pod reclassified it — "nothing is stuck. The silo is CPU-starved" — and a further comment corrected the ticket outright: 64 is RoutingGrain.SaturationThreshold, not Orleans' NonReentrancyQueueSize, and "nothing throttles, queues or refuses at 64".
    • Closed again 2026-08-13 with the log line rewritten — which is the change that first added deepest per-destination queue to it.

    So #1172's accepted diagnosis is deepest 0, i.e. #5018's shape. Every fix on it lowered the arrival rate or service time of a lane that was still one lane wide (#1179, #1341, #1358, and the seven-copies-per-timeout amplifier). A single-server queue whose arrival rate exceeds its service rate recurs at any offered load above that rate — reducing the load moves the threshold, it does not remove it. Both #5009 and #5018 inherited the same fingerprint e4a97855ab595beb, which is why "#1172 is primary" kept being cited for a shape it never covered. (#4903 was closed as a duplicate consolidated onto #4904; the shape itself was never worked.)

    Doc/Architecture/ATimedOutDeliveryIsStillHeldByTheCallee already states this diagnosis in prose and marks it "Not addressed here." #5151 is that.

    The fix

    The channel key becomes (destination, payload identity). The identity is IDiagnosticKeyed.DiagnosticKey — the stream id for every StreamMessage — which MessageDelivery.Package already stamps on the envelope before erasing the payload type, so the routing grain reads it with one dictionary lookup of a string on the turn: no cast, nothing parsed. Same stream ⇒ same channel (order preserved exactly); different streams ⇒ different channels; no identity ⇒ the destination-wide channel, unchanged.

    No bound is raised: the routing IIoPool cap, SaturationThreshold and PodHubGrain's non-reentrancy are untouched. Controls measured on both sides — with the old key the two blocking tests fail and the 8 order/load/drain controls pass; with the new key all 10 pass.

    Not closing this on the merge

    The defect is only observable under real cross-silo fan-out on a multi-pod portal. Verification, after the image is confirmed running per instance on the Fleet Console:

    • Positive: back-pressure lines, if any, read deepest per-channel queue 0 with ordered channels queued ≈ the in-flight count over few destinations. A line still spelling deepest per-destination queue is a pre-fix replica, not a result.
    • Falsifier: deepest per-channel queue ≥ ~10 on a cache/… destination means frames of ONE stream are genuinely stacking up — a different, real defect this does not cover; re-open naming it.
    • Counter-check (the risk this change carries): no increase in "awaiting first data" / "Building layout…" stuck views. A reordering regression is silent by construction, so it has to be watched rather than queried.

    RoutingGrain binds no NodeType, so no address needs an explicit recycle — but the pods must be replaced for the new assembly to serve.

  5. rbuergi commented on Sep 21, 2026

    @rbuergi
    Contributor

    The fix is merged — and this issue stays OPEN until a roll verifies it

    #5151 merged to main through the merge queue: the ordering FIFO's channel is (destination, stream), not the destination.

    🚨 Not closing this on the merge, and the reason is not caution. The defect is only observable
    under real cross-silo fan-out on a multi-pod portal, so nothing in CI can show it gone. RoutingGrain
    binds no NodeType and needs no recycle, but the pods must be REPLACED for the new assembly to
    serve
    — a roll ends the activations on the pods it replaces. Until an instance is confirmed running
    the new image on the Fleet Console (/Hosting/Console), the only thing established is that the
    mechanism was identified and the controls hold.

    What to read on the rolled portal, in order

    1. Positive signal. [ROUTE] Routing back-pressure lines, if any appear, read
      deepest per-channel queue 0 with ordered channels queued ≈ the in-flight count over a small
      number of destinations. Many channels over few destinations is load, and is the expected
      post-fix shape for the traffic that used to read deepest 62.
    2. 🚨 A line still spelling deepest per-destination queue is a PRE-FIX REPLICA, not a result.
      The field was renamed, so the old spelling is how you tell which image produced a given sample —
      which matters in any window that straddles the roll.
    3. Falsifier. deepest per-channel queue ≥ ~10 on a cache/… destination means frames of ONE
      stream are genuinely stacking behind one another. That is a different, real defect this fix does
      not cover — re-open naming it rather than reading it as "the fix did not work".
    4. Counter-check, because this change carries a reordering risk that is silent by construction.
      No increase in "awaiting first data" / "Building layout…" stuck views. A reordering regression logs
      nothing above Debug on either side, so it has to be watched, not queried.

    Where the reasoning lives now

    The grouping of this issue against the other five in the cluster — and the finding that for four of the
    six the causal arrow runs the other way (a silo that has lost its CPU or heap raises this gauge as
    a symptom) — is recorded at
    #5018 (comment).

    Two things that bear on this issue specifically:

    A named, unproven link worth re-checking after the roll

    Every leg queued in OrderedRouteDispatcher retains its whole IMessageDelivery, so a 62-deep
    lane pinned 62 full payloads on top of Orleans' own JsonCodec copies. That makes this structure a
    plausible retention amplifier for the OOM bursts in #4824. Not established — I have no per-pod
    back-pressure reading for 58dbb6d98d-8msww in its 06:28–06:31Z window. Falsifier: if OOM bursts
    of that shape continue at the same rate after this rolls, lane retention was not a contributor.

  6. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (97 total).

    • Last seen: 2026-09-21 23:26:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld
    Recent log lines
    2026-09-21 23:05:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [d361ad6e#1 started 2026-09-21T23:05:24.5387958Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:06:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [cb417a42#1 started 2026-09-21T23:06:24.5224356Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:26:24Z memex-portal-deployment-7b4776b9f-mqfr6 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [017895f8#1 started 2026-09-21T23:26:24.2654817Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/adQjx8eg8UyB5mWb_cRd5Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  7. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (98 total).

    • Last seen: 2026-09-21 23:30:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld
    Recent log lines
    2026-09-21 23:06:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [cb417a42#1 started 2026-09-21T23:06:24.5224356Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:26:24Z memex-portal-deployment-7b4776b9f-mqfr6 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [017895f8#1 started 2026-09-21T23:26:24.2654817Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/adQjx8eg8UyB5mWb_cRd5Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:30:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [d030393c#1 started 2026-09-21T23:30:24.3297651Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  8. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (100 total).

    • Last seen: 2026-09-21 23:42:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld
    Recent log lines
    2026-09-21 23:30:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [d030393c#1 started 2026-09-21T23:30:24.3297651Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:37:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [09c862cc#1 started 2026-09-21T23:37:24.4893393Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-21 23:42:24Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [aec1ec7f#7 started 2026-09-21T23:42:24.7013257Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 0, deepest per-destination queue 0, routing pool subscribing 0. Latest dispatch target Ifrs17/PnlVariableType — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  9. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 4 more since the last update (104 total).

    • Last seen: 2026-09-22 00:08:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld
    Recent log lines
    2026-09-22 00:06:24Z memex-portal-deployment-7b4776b9f-mqfr6 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [e9468836#1 started 2026-09-22T00:06:24.3889955Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 61, routing pool subscribing 0. Latest dispatch target cache/adQjx8eg8UyB5mWb_cRd5Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 00:08:24Z memex-portal-deployment-7b4776b9f-mqfr6 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ebd24047#1 started 2026-09-22T00:08:24.3978378Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/adQjx8eg8UyB5mWb_cRd5Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 00:08:24Z memex-portal-deployment-7b4776b9f-mqfr6 crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ebd24047#1 started 2026-09-22T00:08:24.3978378Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/adQjx8eg8UyB5mWb_cRd5Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  10. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 3 more since the last update (107 total).

    • Last seen: 2026-09-22 00:56:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld
    Recent log lines
    2026-09-22 00:54:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [7fd27871#1 started 2026-09-22T00:54:24.4965978Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 00:55:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [997fb7f8#1 started 2026-09-22T00:55:24.2931206Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 00:56:24Z memex-portal-deployment-7b4776b9f-8khld crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [1ed86a7d#1 started 2026-09-22T00:56:24.3239711Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/FtxSQnNgjkmJzr-09vwCJQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  11. 31 remaining items

  12. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (175 total).

    • Last seen: 2026-09-22 09:22:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:17:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [edcfdc8c#1 started 2026-09-22T09:17:24.4420315Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:20:24Z memex-portal-deployment-6466cf967f-4phpq crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [9b34920a#1 started 2026-09-22T09:20:24.5754851Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/_YvUmN1QU0WCWBzek0iB1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:22:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [0fe4048f#1 started 2026-09-22T09:22:25.0169914Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 61, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  13. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (175 total).

    • Last seen: 2026-09-22 09:22:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:17:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [edcfdc8c#1 started 2026-09-22T09:17:24.4420315Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:20:24Z memex-portal-deployment-6466cf967f-4phpq crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [9b34920a#1 started 2026-09-22T09:20:24.5754851Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/_YvUmN1QU0WCWBzek0iB1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:22:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [0fe4048f#1 started 2026-09-22T09:22:25.0169914Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 61, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  14. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 3 more since the last update (178 total).

    • Last seen: 2026-09-22 09:33:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:28:25Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [a246ddba#1 started 2026-09-22T09:28:25.5545781Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/xFMO23Y5r0uAuw3jmEtZpQ — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:32:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [f9a7f9bb#1 started 2026-09-22T09:32:24.6327796Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 2, deepest per-destination queue 41, routing pool subscribing 0. Latest dispatch target Signature — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:33:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [48459b32#1 started 2026-09-22T09:33:25.1537695Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  15. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (180 total).

    • Last seen: 2026-09-22 09:41:24Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:33:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [48459b32#1 started 2026-09-22T09:33:25.1537695Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:36:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [62778d77#1 started 2026-09-22T09:36:25.6899572Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:41:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [913980fd#1 started 2026-09-22T09:41:24.6287009Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  16. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (181 total).

    • Last seen: 2026-09-22 09:44:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:36:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [62778d77#1 started 2026-09-22T09:36:25.6899572Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:41:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [913980fd#1 started 2026-09-22T09:41:24.6287009Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:44:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [6fd64a6a#1 started 2026-09-22T09:44:25.4149089Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 1. Latest dispatch target Marketing/_Policy — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  17. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (182 total).

    • Last seen: 2026-09-22 09:50:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:41:24Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [913980fd#1 started 2026-09-22T09:41:24.6287009Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 0. Latest dispatch target cache/vYr_yfT5Gkm2msRJE6fl1g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:44:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [6fd64a6a#1 started 2026-09-22T09:44:25.4149089Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 1. Latest dispatch target Marketing/_Policy — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:50:25Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [c081bad4#1 started 2026-09-22T09:50:25.7208730Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 2, deepest per-destination queue 32, routing pool subscribing 0. Latest dispatch target cache/Z19-2lQhmUCuy7OJkXVqNw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  18. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (183 total).

    • Last seen: 2026-09-22 09:59:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 09:44:25Z memex-portal-deployment-6466cf967f-gjzpf crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [6fd64a6a#1 started 2026-09-22T09:44:25.4149089Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 62, routing pool subscribing 1. Latest dispatch target Marketing/_Policy — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:50:25Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [c081bad4#1 started 2026-09-22T09:50:25.7208730Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 2, deepest per-destination queue 32, routing pool subscribing 0. Latest dispatch target cache/Z19-2lQhmUCuy7OJkXVqNw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 09:59:25Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [c9cd6252#2 started 2026-09-22T09:59:25.5673381Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 3, deepest per-destination queue 22, routing pool subscribing 0. Latest dispatch target cache/Z19-2lQhmUCuy7OJkXVqNw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  19. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 3 more since the last update (186 total).

    • Last seen: 2026-09-22 10:09:26Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 10:07:24Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [dd2e2ac0#2 started 2026-09-22T10:07:24.7414897Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 3, deepest per-destination queue 2, routing pool subscribing 0. Latest dispatch target cache/mr9jbhbuyEGL3xTrvoGS9g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:09:24Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [cf192cfd#1 started 2026-09-22T10:09:24.7033503Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 3, deepest per-destination queue 21, routing pool subscribing 0. Latest dispatch target cache/kisatGkjFEm4kxcH_rjS2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:09:26Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [cf192cfd#2 started 2026-09-22T10:09:26.2606121Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 3, deepest per-destination queue 28, routing pool subscribing 0. Latest dispatch target cache/kisatGkjFEm4kxcH_rjS2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  20. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (188 total).

    • Last seen: 2026-09-22 10:24:26Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 10:09:26Z memex-portal-deployment-77494bdbcc-bphfb crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [cf192cfd#2 started 2026-09-22T10:09:26.2606121Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 3, deepest per-destination queue 28, routing pool subscribing 0. Latest dispatch target cache/kisatGkjFEm4kxcH_rjS2g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:22:28Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ba72f7d6#1 started 2026-09-22T10:22:28.4590638Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 8, deepest per-destination queue 28, routing pool subscribing 0. Latest dispatch target cache/GZVmDQ1PckmbjySqJNbRTw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:24:26Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [a4ef903a#1 started 2026-09-22T10:24:26.0232959Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 7, deepest per-destination queue 9, routing pool subscribing 0. Latest dispatch target cache/UEV3tuw06UKhG31Fex87_Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  21. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 1 more since the last update (189 total).

    • Last seen: 2026-09-22 10:28:25Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr
    Recent log lines
    2026-09-22 10:22:28Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ba72f7d6#1 started 2026-09-22T10:22:28.4590638Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 8, deepest per-destination queue 28, routing pool subscribing 0. Latest dispatch target cache/GZVmDQ1PckmbjySqJNbRTw — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:24:26Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [a4ef903a#1 started 2026-09-22T10:24:26.0232959Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 7, deepest per-destination queue 9, routing pool subscribing 0. Latest dispatch target cache/UEV3tuw06UKhG31Fex87_Q — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:28:25Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ed32b9fd#1 started 2026-09-22T10:28:25.1837034Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 8, deepest per-destination queue 11, routing pool subscribing 0. Latest dispatch target cache/gC-K78ozC0G1cp13_ko8ww — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  22. systemorph-com commented on Sep 22, 2026

    @systemorph-com
    ContributorAuthor

    Still occurring: 2 more since the last update (191 total).

    • Last seen: 2026-09-22 10:39:26Z
    • Pods: memex-portal-deployment-77494bdbcc-7ndrn, memex-portal-deployment-7fc5f4874b-tl6zn, memex-portal-deployment-7fc5f4874b-9zwrg, memex-portal-deployment-77494bdbcc-bphfb, memex-portal-deployment-8d98c8fc6-w6clj, memex-portal-deployment-8d98c8fc6-f674p, memex-portal-deployment-7b4776b9f-mqfr6, memex-portal-deployment-7b4776b9f-8khld, memex-portal-deployment-77494bdbcc-6sv8l, memex-portal-deployment-77494bdbcc-kkjld, memex-portal-deployment-6466cf967f-4phpq, memex-portal-deployment-6466cf967f-gjzpf, memex-portal-deployment-77494bdbcc-5djgr, memex-portal-deployment-77494bdbcc-rg99v
    Recent log lines
    2026-09-22 10:28:25Z memex-portal-deployment-77494bdbcc-6sv8l crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ed32b9fd#1 started 2026-09-22T10:28:25.1837034Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 8, deepest per-destination queue 11, routing pool subscribing 0. Latest dispatch target cache/gC-K78ozC0G1cp13_ko8ww — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:37:24Z memex-portal-deployment-77494bdbcc-rg99v crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [81d89883#10 started 2026-09-22T10:37:24.6765062Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 60, routing pool subscribing 0. Latest dispatch target cache/mr9jbhbuyEGL3xTrvoGS9g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    2026-09-22 10:39:26Z memex-portal-deployment-77494bdbcc-rg99v crit: MeshWeaver.Hosting.Orleans.RoutingGrain[0]
          [ROUTE] Routing back-pressure [ba20210a#1 started 2026-09-22T10:39:26.5564187Z]: 64 route dispatches in flight (reporting threshold 64); stream destinations queued 1, deepest per-destination queue 42, routing pool subscribing 0. Latest dispatch target cache/mr9jbhbuyEGL3xTrvoGS9g — the address that happened to cross the threshold, NOT a diagnosis. A slot is held from dispatch until the leg terminates, INCLUDING the unbounded wait for a ThreadPool thread before the leg's own timeouts start, so a CPU-starved silo raises this with nothing stuck. A deepest queue of 1 or more means legs are blocked behind a leg (head-of-line on one destination); 0 means nothing is waiting on anything, so read it as load. 🚨 Deepest is sampled AT THE CROSSING, so like the in-flight count it is partly an artefact of the threshold: with N destinations sharing the backlog it is ~InFlight/N whatever is wrong. READ THE EPISODE STAMP, not the depth: a later line with a HIGHER episode on this activation means this episode drained; a line with a DIFFERENT activation id means the grain was recycled; and if neither a clear nor a higher episode ever follows, the in-flight count never fell below half the threshold — which means a leg never terminated and its slot leaked, not that the silo was busy.
    

    Re-addressed by the current identity function: this incident inherited e4a97855ab595beb (Systemorph/MeshWeaver.Plugins#1796). Those nodes are superseded and will not fold, file or comment again.

  23. rbuergi commented on Sep 22, 2026

    @rbuergi
    Contributor

    #5261 is not a recurrence of #5009 — and it is #5009's first post-roll POSITIVE reading

    #5261's body offers that it "may simply be a production recurrence of #5009". Its own log text refutes that, using the discriminator #5009 comment 3 fixed in advance: "a line still spelling deepest per-destination queue is a PRE-FIX REPLICA, not a result" — #5151 renamed the field.

    So on that replica the head-of-line queueing is gone: 0 channels queued over 0 destinations, deepest 0. That is the positive signal #5151 has been missing, and it is the first one on file.

    And in-flight still reached 64 anyway — for a different reason. #5261's own gauges: waiting for a pool slot 51, subscribing 0, deepest 0, oldest leg 26,372 ms, that leg's target Ops/Logs/memex-cloud-…-v7q45. By the log line's own rubric ("High [waiting] while subscribing is below the pool's cap is a THREAD shortage") this reads as the unbounded pre-subscribe wait the slot is held across — not a too-coarse channel key.

    🚨 So deduping #5261 into #5009 would destroy the only post-roll positive sample on file. They are two defects that raise the same gauge, which is exactly the trap of reading a symptom gauge as an identity.

    Not excluded, and worth the next session's first hour: a slot that is never decremented. Core #5281 (f2f00c9db4, merged 18:35:15Z) fixed precisely the class "a pooled leaf holds a permit across work that cannot observe its token" — in OrleansRoutingService.cs, the same file family — so that shape was live today rather than speculative. It is not this fix: it touches the teardown unsubscribe leaf, not the routing dispatch leg or the pool's slot accounting, and it merged 50 minutes after the #5261 incident, so that pod cannot have carried it. The place to start is its new guard, test/MeshWeaver.Documentation.Test/PooledLeafObservesItsTokenGuard.cs — does its sweep cover the routing dispatch leg?

    What is NOT established here: none of this was read from code. The channel key's construction, the pool's cap, and whether any path fails to release a slot are all unverified — the above is the issue record plus #5261's own instrument reading, with no control run and no two-sided verification. #5037 and #2299 were not examined at all.

    🤖 Generated with Claude Code

  24. rbuergi commented on Sep 22, 2026

    @rbuergi
    Contributor

    A second post-fix reading, on the OTHER portal — and it is not the falsifier

    The 19:06Z comment counts #5261 as "1 of 1 carrying the post-fix spelling". There is a second one on file, sitting in the evidence of #5271 (the incident-filer ticket), and it is on memex-cloud, so between them both portals now have a post-#5151 sample:

    incident namespace / pod time channels / destinations deepest per-channel oldest leg subscribing / waiting
    #5261 (98112c599c16b3ae) memex / 5c99d79997-xs87x 2026-09-22 17:45:19Z 0 / 0 0 26,372 ms — dispatch → Ops/Logs/… 0 / 51
    #5271 (76dea3f1ce951aa2) memex-cloud / 5c89c7f5f9-sddb5 2026-09-22 12:43:54Z 8 / 3 12 84 ms — stream-routed → portal/egXML8v7Y… 0 / 0

    Both spell ordered channels queued … deepest per-channel queue, the field #5151 introduced, so both are post-fix replicas by this thread's own discriminator.

    Reading the memex-cloud one against the falsifier this thread fixed in advance ("deepest per-channel queue ≥ ~10 on a cache/… destination means frames of ONE stream are genuinely stacking up"): the depth is 12, but the channel is on a portal/… circuit address, not cache/…, the backlog is spread over 8 channels on 3 destinations, and the oldest leg is 84 ms — i.e. 12 frames of one circuit's stream queued behind each other and draining in well under a tenth of a second. By the line's own rubric that is load being absorbed, not a stream that is not draining. It is not the falsifier; I am recording it because a depth of 12 would otherwise read as one at a glance.

    And #5261's crossing is the other gauge entirely (waiting for a pool slot 51, subscribing 0, deepest 0) — the pre-subscribe ThreadPool wait, tracked on #5261, not a channel-key defect.

    Remaining before this can close — unchanged from 22:44Z: the counter-check (no rise in "awaiting first data" / "Building layout…" stuck views after the roll), which is silent by construction and has to be watched, not queried. I have not done it and cannot from here.

    What I did NOT establish: both readings are single crossings; I read no episode follow-up, ran no Logs query, and did not confirm pod 5c89c7f5f9-sddb5's image other than by the field spelling.

  25. rbuergi commented on Sep 22, 2026

    @rbuergi
    Contributor

    Closing as a duplicate of #5118 — the fingerprint-split flood.

    Why this is a duplicate. Every one of these comes from the same log site — [ROUTE] Routing back-pressure, category MeshWeaver.Hosting.Orleans.RoutingGrain — split into one issue per grain activation. The 8-hex activation id survived normalization (a0e2984b → a0e2{n}b): HexBlob required 16+ chars, and Number() then masked only the digit-run preceded by a digit, leaving a per-activation residue in the hash.

    Measured over 101 verbatim bursts drawn from 29 issues, covering 42 activation ids: the old parser yields 41 distinct fingerprints, the current parser yields 1.

    The fix is already merged in MeshWeaver.Plugins — #2165 (MixedHexId), #2167, #2168 (positional episode/target masking) and #2218 (the portal re-parses raw samples, instead of hashing text a stale watcher already masked).

    It is not live yet. The control instance is sealed on an older set because the Plugins Portal image rebuild workflow fails at its GitHub App token step — actions: write is not granted to the installation — so core's rebuild is never dispatched. Until that is granted, new split issues will keep arriving, and an issue whose activation is still alive may reopen here.

    Not closed by this. The underlying routing condition — cache-destination head-of-line blocking versus ThreadPool starvation — is a real defect and stays open in #5118. The normaliser itself is tracked in #5270 and #5271.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:orleansCore subsystem: the Orleans silo - grains, placement, routingbugSomething isn't workingfeature:routing-back-pressureFeature: routing back pressuresev:HBLOCKING: primary path broken, intermittent user-visible failure, or silently wrong results.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions