Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

ThreadChatView's live update selector throws ArgumentException converting a value to ThreadViewModel for the Thread/1 chat view

Chiusa
#6,980 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend

Direzione di ricerca

Read MeshWeaver.Blazor.Chat/ThreadChatView.razor.cs, starting with ConvertThreadViewModel at the stack frame around line 4793 and the code that builds the /data/… address from the area string. Compare the resolved node and runtime type with the expected ThreadViewModel, and check the pod logs for content type registration failures. Done means the live update handles the reported value without terminating the subscription and the Thread/1 chat view continues updating.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug sev:M

Observed

ThreadChatView (log category MeshWeaver.Blazor.Chat.ThreadChatView) logged Loading '/data/"thread"' in area 'Thread/1' together with System.ArgumentException: Cannot convert type ThreadViewModel. thrown from ThreadChatView.ConvertThreadViewModel(Object value, ThreadViewModel previous) (/repo/src/MeshWeaver.Blazor.Chat/ThreadChatView.razor.cs:4793), reached through System.Reactive.ObservableImpl.Select…OnNext — i.e. the failure is in the live update selector that converts each streamed value to a ThreadViewModel, not in the initial render.

Two details in the concrete instance the fingerprint masks:

  • the data path the view addresses is /data/"thread" — a quoted literal standing where a path segment should be — for area Thread/1;
  • the observability shape discriminator labelled every sample [case-only-path-collision] (the Plugins#2770 label, see Observability/IncidentIdentity §3a): the quoted atom "thread" and the area's Thread segments differ only by case — the same shape as the rbuergi/Agent/voice ≠ 'Voice' collision (MeshWeaver#4817).

Note also that the exception message names ThreadViewModel itself — the very type the method converts to.

Where and when

A single short burst on one pod of the memex-cloud portal this morning, all of it on the one thread area Thread/1 — consistent with one visit or a reload sequence for one thread, not a fleet-wide condition. Nothing I read ties it to a roll, restart or sync; that absence is an unestablished point, not a finding.

Impact

The failing operation is the thread chat view's live conversion of the thread's streamed state. An exception escaping a Reactive Select selector's OnNext ends that subscription sequence, so the likely user-visible effect is the chat view for that thread stopping updating while the page stays open — the same failure class described for control bindings in Doc/WhatsNew 2026-09-09. Whether the view rendered anything at all before stopping is not established; only this log site was read.

Not established

  • The cause — see candidates below; the evidence does not fix it.
  • The incoming value's actual runtime type at the throw site; the exception names only ThreadViewModel.
  • Whether the quoted "thread" segment is itself an addressing defect or a legitimate serialized path shape for this view.
  • Whether the failure recurs, and whether other thread areas are affected — only this thread area appears in the burst.

Candidate causes and the reading that separates them

  1. Case-only addressing mismatch. The view derives /data/"thread" from area Thread/1; if the real node segment is Thread, the address misses the thread the area names, and whatever content it reaches is not convertible to the expected ThreadViewModel. This is the same class as the MeshWeaver#4817 voice collision. Predicts: the portal resolves a different (or no) node at "thread"-case than at Thread-case. Discriminating reading: the node the portal actually resolved at /data/"thread" for this request, or the code in ThreadChatView that builds the data address from the area string.
  2. Two ThreadViewModel identities. The message naming ThreadViewModel — the target type — fits a value whose runtime type is named ThreadViewModel but is not assignable to the expected one (a second copy of the type from a recompiled view pack or stale assembly; cf. Doc/Architecture/FrameworkIdentityChurn). Predicts: episodic occurrence right after a portal roll or view-pack recompile. Discriminating reading: the runtime assembly identity of the value logged at the ConvertThreadViewModel throw site, or whether the burst tracks a deployment event.
  3. Degraded content delivery. The value arrives as untyped/degraded content — the known pattern of content types reading untyped until their NodeTypes recompile — so no conversion to ThreadViewModel is possible. Predicts: neighbouring untyped-content messages on the same pod in the same window. Discriminating reading: the pod's log around the burst for content-type-registration failures, and whether the ThreadViewModel NodeType had compiled there.

Where to look

MeshWeaver.Blazor.Chat/ThreadChatView.razor.cs — ConvertThreadViewModel (the stack frame names line 4793) and the code that builds the /data/… address from the area string. The incident's single shape row is the discriminated [case-only-path-collision] key shape\n7a6e7e28ba3895e1.

Nearest neighbours, not duplicates — other ThreadChatView failure modes with different frames and symptoms: MeshWeaver#5372 (composer load for anonymous visitors), MeshWeaver#5962 (thread node deleted mid-use), MeshWeaver#6081 (context resolution on a bound context node).


Evidence
Fingerprint eee19f799d5b744f
Category MeshWeaver.Blazor.Chat.ThreadChatView
Severity Error
Exception System.ArgumentException
Top frame MeshWeaver.Blazor.Chat.ThreadChatView.ConvertThreadViewModel(Object value, ThreadViewModel previous)
Namespace memex-cloud
Pods memex-portal-deployment-7b84db8bfd-4f7xc
Occurrences 2
First seen 2026-10-19 08:26:46Z
Last seen 2026-10-19 08:26:53Z
Routing not determined — no configured route matches the category MeshWeaver.Blazor.Chat.ThreadChatView. 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-10-19 08:26:46Z memex-portal-deployment-7b84db8bfd-4f7xc fail: MeshWeaver.Blazor.Chat.ThreadChatView[0]
      Loading '/data/"thread"' in area 'Thread/1' in Area Thread/1
      System.ArgumentException: Cannot convert type ThreadViewModel.
         at MeshWeaver.Blazor.Chat.ThreadChatView.ConvertThreadViewModel(Object value, ThreadViewModel previous) in /repo/src/MeshWeaver.Blazor.Chat/ThreadChatView.razor.cs:line 4793
         at System.Reactive.Linq.ObservableImpl.Select`2.Selector._.OnNext(TSource value)
2026-10-19 08:26:53Z memex-portal-deployment-7b84db8bfd-4f7xc fail: MeshWeaver.Blazor.Chat.ThreadChatView[0]
      Loading '/data/"thread"' in area 'Thread/1' in Area Thread/1
      System.ArgumentException: Cannot convert type ThreadViewModel.
         at MeshWeaver.Blazor.Chat.ThreadChatView.ConvertThreadViewModel(Object value, ThreadViewModel previous) in /repo/src/MeshWeaver.Blazor.Chat/ThreadChatView.razor.cs:line 4793
         at System.Reactive.Linq.ObservableImpl.Select`2.Selector._.OnNext(TSource value)

Opened automatically from Admin/_LogIncident/eee19f799d5b744f. Recurrences are folded into this issue rather than opening new ones.
It also stands for the whole log site 29e216a9a3464eb2: other fingerprints of this site fold in here as comments rather than opening tickets of their own.

Lingua principale
C#
Stelle
12
Fork
5
Merge medio
5h 57m
PR unite (30g)
967

Preparare l'ambiente

  • Nessun Dockerfile né file Docker Compose
  • Ha un modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Systemorph/MeshWeaver

Tutte le issue di Systemorph/MeshWeaver

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.