WebSearchPlugin page fetch of www.eahv.ch ends in a TLS handshake reset by the remote side after Standard-Retry exhausts
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, networking
Direzione di ricerca
Start with src/MeshWeaver.AI/Plugins/WebSearchPlugin.cs, method FetchWebPageCore, and inspect the Standard-Retry pipeline configuration that wraps it. Check whether the fetch succeeds on a later attempt and compare results from inside and outside the cluster to help distinguish a remote reset from a transient network fault. Done means the cause or recurrence is understood and the failed page fetch is handled appropriately; the issue notes that its user-visible effect is unknown and may duplicate #5912.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Observed
The Standard-Retry Polly pipeline (-standard/(unnamed)/Standard-Retry) reported its third retry attempt as handled after a web-page fetch's TLS handshake failed: System.Net.Http.HttpRequestException ("The SSL connection could not be established") wrapping System.IO.IOException ("Connection reset by peer") wrapping System.Net.Sockets.SocketException (104), raised in System.Net.Security.SslStream.EnsureFullTlsFrameAsync — the connection was reset by the remote side while receiving a TLS handshake frame. The sibling incident at the plugin's own log site (Admin/_LogIncident/bd553c7c00beb6c1, same pod, same instant) names the concrete request: a page fetch of https://www.eahv.ch by MeshWeaver.AI.Plugins.WebSearchPlugin.FetchWebPageCore. All three attempts together took ~79 ms, so each connection was reset almost immediately rather than timing out.
Where and when
A single occurrence on a single pod in namespace memex, logged at both the Polly retry site and the plugin's own site within the same second. No burst, no other pods, and no other external host failing at that instant — the only concurrent incident on this pod is the same event seen through the plugin's logger.
Impact
Minimal: one AI web-search page fetch of one external page failed; nothing on the portal side is broken. The visible cost is fail-level log noise at two sites for one event.
Not established
- The cause. A single sample cannot distinguish a reset issued by the remote host from one issued by an intermediary (NAT/egress) or a transient pod-network fault.
- Whether it still occurs or recurs — one sample only.
- How the failure surfaced to the user — whether the search degraded per-result or the whole flow failed.
Candidate causes and the reading that separates them
- The remote host (or a WAF/anti-bot layer in front of it) closes the connection during the TLS handshake — e.g. filtering non-browser TLS fingerprints or datacenter egress IPs. Predicts: a repeatable reset when fetching
www.eahv.chfrom the portal network while the same fetch from a browser or residential network succeeds. Reading: attempt the fetch from inside the cluster and from outside and compare; a reset only from inside supports this. - A transient fault between pod and host. Predicts: not reproducible on retry, and scattered failures on other hosts at the same instant. Reading: check whether the other URLs fetched by the same search succeeded (the plugin's information-level fetch logs), and whether the fetch succeeds on a later attempt.
- A pod-local networking issue at that instant. Predicts: no pattern across hosts or time. Reading: a recurrence on the same pod against a different external host would point here.
Known-related / possible duplicate
This is the same log site (siteFold 1108a4f93af857df) and the same defect class as issue #5912 (filed from incident Admin/_LogIncident/f1fe69ef875c9d95: FetchWebPageCore logs a failed external page fetch at fail level instead of degrading per-result) and issue #5910 (from incident Admin/_LogIncident/0501dce7eab984c5: the Standard-Retry pipeline retried a non-transient TLS validation failure). The inner shape here differs — a connection reset during the handshake, which is genuinely transient-shaped, rather than a deterministic certificate validation failure — so #5910's retry-classification point does not clearly cover it, but #5912's per-result handling would cover the user-visible effect. A human may close this as a duplicate of #5912.
Where to look
src/MeshWeaver.AI/Plugins/WebSearchPlugin.cs, method FetchWebPageCore (the <<FetchWebPageCore>b__0>d lambda named in the sibling incident's top frame), and the Standard-Retry resilience pipeline configuration that wraps it.
Evidence
| Fingerprint | 0dd52a2baf21c212 |
| Category | Polly |
| Severity | Error |
| Exception | System.Net.Http.HttpRequestException |
| Namespace | memex |
| Pods | memex-portal-deployment-68b697b54f-zjc6v |
| Occurrences | 1 |
| First seen | 2026-10-23 10:10:07Z |
| Last seen | 2026-10-23 10:10:07Z |
| Routing | not determined — no configured route matches the category Polly. 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-23 10:10:07Z memex-portal-deployment-68b697b54f-zjc6v fail: Polly[3]
Execution attempt. Source: '-standard/(unnamed)/Standard-Retry', Operation Key: '', Result: 'The SSL connection could not be established, see inner exception.', Handled: 'True', Attempt: '3', Execution Time: 78.6062ms
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.IO.IOException: Unable to read data from the transport connection: Connection reset by peer.
---> System.Net.Sockets.SocketException (104): Connection reset by peer
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.CreateException(SocketError error, Boolean forAsyncThrow)
at System.Net.Sockets.NetworkStream.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken)
at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.Sockets.SocketAsyncEngine.System.Threading.IThreadPoolWorkItem.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
at System.Threading.Thread.StartCallback()
--- End of stack trace from previous location ---
--- End of inner exception stack trace ---
at System.Net.Security.SslStream.EnsureFullTlsFrameAsync[TIOAdapter](CancellationToken cancellationToken, Int32 estimatedSize)
at System.Runtime.CompilerServices.PoolingAsyncValueTaskMethodBuilder`1.StateMachineBox`1.System.Threading.Tasks.Sources.IValueTaskSource<TResult>.GetResult(Int16 token)
at System.Net.Security.SslStream.ReceiveHandshakeFrameAsync[TIOAdapter](CancellationToken cancellationToken)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthentic…[truncated]
This log site's previous ticket, https://github.com/Systemorph/MeshWeaver/issues/5910, was closed about a different fingerprint, and this fault fired after that close. It is left closed: an occurrence of this fingerprint is no evidence that the fault it was closed for came back. This issue now tracks the log site, and later fingerprints of it fold in here.
Opened automatically from Admin/_LogIncident/0dd52a2baf21c212. Recurrences are folded into this issue rather than opening new ones.
It also stands for the whole log site 1108a4f93af857df: 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
- 6h 28m
- PR unite (30g)
- 951
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Systemorph/MeshWeaver
-
bug sev:L
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Systemorph/MeshWeaver#7480 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement feedback sev:L
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Systemorph/MeshWeaver#7408 ·
I maintainer di solito rispondono entro 1 giorno
-
bug feedback sev:M
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Systemorph/MeshWeaver#7390 ·
I maintainer di solito rispondono entro 1 giorno
-
bug feedback sev:L
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Systemorph/MeshWeaver#7375 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug feedback sev:M
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Systemorph/MeshWeaver#7366 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Systemorph/MeshWeaver
Issue simili
-
area-ai bug untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
dotnet/extensions#7893 ·
I maintainer di solito rispondono entro 1 giorno
-
devtools documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
area-System.ComponentModel untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
dotnet/runtime#136608 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
fix: Cannot reopen dialog after closing with escape key in FluentDialogForse già presa @bryan-ramirez l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
microsoft/fluentui-blazor#5572 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sillsdev/languageforge-lexbox#2846 ·
I maintainer di solito rispondono entro 1 giorno