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

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

Aperta
#7,085 6 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

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

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.

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

  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.