WebSearchPlugin page fetch of www.eahv.ch ends in a TLS handshake reset by the remote side after Standard-Retry exhausts
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- csharp
- Área
- backend, networking
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- C#
- Estrellas
- 12
- Forks
- 5
- Merge medio
- 6 h 30 min
- PR fusionados (30 d)
- 960
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Systemorph/MeshWeaver
-
bug ci-failure sev:H
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
Systemorph/MeshWeaver#7549 ·
Los mantenedores suelen responder en 1 día
-
bug sev:M
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Systemorph/MeshWeaver#7548 ·
Los mantenedores suelen responder en 1 día
-
bug sev:M
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Systemorph/MeshWeaver#7542 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
area:hosting enhancement feature:registry-retention sev:M
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
Systemorph/MeshWeaver#7530 ·
Los mantenedores suelen responder en 1 día
-
bug sev:L
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Systemorph/MeshWeaver#7497 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de Systemorph/MeshWeaver
Issues similares
-
[Bug] Dashboard renders attachment links that resolve to 404 when the FILES binding is absentAbiertobug 優先: 低
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
-
.NET area: storage bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Larson-Logan/medal-sync#61 ·
Los mantenedores suelen responder en 1 día
-
area-ai bug untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
dotnet/extensions#7893 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100