Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

WebSearchPlugin page fetch of www.eahv.ch ends in a TLS handshake reset by the remote side after Standard-Retry exhausts

Abierto
#7,085 6 comentarios 0 reacciones 0 asignados Ver en GitHub

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

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

bug sev:L

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

  1. 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.ch from 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.
  2. 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.
  3. 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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Systemorph/MeshWeaver

Todos los issues de Systemorph/MeshWeaver

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.