Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

WebSearchPlugin page fetch to external host fails at connect with SocketException (EAGAIN), aborting the fetch

Open
#7,186 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
csharp

Research direction

Read src/MeshWeaver.AI/Plugins/WebSearchPlugin.cs, focusing on FetchWebPageCore and its fetch lambda; #1561 tracks failure handling at the same log site and may cover this case. Start by checking the pod's metrics and connection failures around 2026-10-25T11:22Z, then determine whether #1561 includes connect-time EAGAIN. Done when the relationship to #1561 and the handling scope are established.

Written by the indexing model from the issue text.

Description

bug sev:L

Observed

WebSearchPlugin.FetchWebPageCore (the fetch lambda <>c__DisplayClass14_0.<FetchWebPageCore>b__0 in src/MeshWeaver.AI/Plugins/WebSearchPlugin.cs) failed to fetch https://www.hotel-schmitta.ch. The HttpClient connect attempt raised HttpRequestException wrapping System.Net.Sockets.SocketException (11) "Resource temporarily unavailable" from HttpConnectionPool.ConnectToTcpHostAsync (www.hotel-schmitta.ch:443). EAGAIN at connect time is the pod's local socket layer refusing the operation — the host never answered, and no HTTP or TLS response was received.

Where and when

One occurrence, one pod, one instant — no burst, no recurrence since. The fetch is part of the AI web-search flow (retrieving a search-result page's content), an outbound call to an arbitrary external host.

Impact

One page fetch inside one web-search operation failed; that search result lost its page content. The numbers show no outage, no user-facing degradation beyond this single fetch.

Not established

  • The cause: EAGAIN identifies where (the local socket/connect layer) but not why the kernel refused.
  • Whether it recurs — first and only sighting at the time of triage.
  • Whether other outbound connections from the same pod failed in the same window — not read.
  • The pod's resource state (sockets, ephemeral ports, memory) at 2026-10-25T11:22Z — not available on the incident.

Candidate causes and the reading that separates them

  1. Transient local socket-resource exhaustion on the pod (ephemeral-port limit, conntrack table, memory pressure). Predicts other outbound connects failing in the same window, possibly on other hosts. Separating reading: container metrics and connection counts for memex-portal-deployment-69cc6c74d9-tw8vd around 11:22Z, plus any other connect-failure log lines from that pod in the same minute.
  2. Transient egress-path fault (CNI/NAT/proxy on the node). Predicts a brief burst across pods and destination hosts. Separating reading: whether any other pod logged connect EAGAIN in the same window — this fingerprint has none so far.
  3. The external host/network being unreachable. Least consistent with the evidence: an unresolvable or refusing host yields Name or service not known or Connection refused (both already seen on this plugin's log site), not EAGAIN. A later successful fetch of the same URL would refute it.

Related

The same log site (a4b2b983d01b440d) and the same method are already filed as Systemorph/MeshWeaver#1561 — FetchWebPageCore throws on failed and non-success fetches, aborting the page-fetch operation. SSL-connect failures at the same site were triaged separately as incidents bd553c7c00beb6c1 and f1fe69ef875c9d95 (different fingerprints). This ticket is a distinct fingerprint (connect-time EAGAIN vs. 404/DNS/TLS); if #1561's scope is read to cover all external-fetch failure handling, this may close as a duplicate of it.

Where to look

  • src/MeshWeaver.AI/Plugins/WebSearchPlugin.cs — FetchWebPageCore and the fetch lambda named in the top frame (EnsureSuccessStatusCode was at line 186 in the build cited by #1561).
  • The pod's egress behaviour in the minute around 2026-10-25T11:22Z.

Evidence
Fingerprint c7c20efb574e1075
Category MeshWeaver.AI.Plugins.WebSearchPlugin
Severity Error
Exception System.Net.Http.HttpRequestException
Top frame MeshWeaver.AI.Plugins.WebSearchPlugin.<>c__DisplayClass14_0.<<FetchWebPageCore>b__0>d.MoveNext()
Namespace memex-cloud
Pods memex-portal-deployment-69cc6c74d9-tw8vd
Occurrences 1
First seen 2026-10-25 11:22:06Z
Last seen 2026-10-25 11:22:06Z
Routing not determined — no configured route matches the category MeshWeaver.AI.Plugins.WebSearchPlugin. 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-25 11:22:06Z memex-portal-deployment-69cc6c74d9-tw8vd fail: MeshWeaver.AI.Plugins.WebSearchPlugin[0]
      Failed to fetch web page url=https://www.hotel-schmitta.ch
      System.Net.Http.HttpRequestException: Resource temporarily unavailable (www.hotel-schmitta.ch:443)
       ---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
         at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
         at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
         --- End of inner exception stack trace ---
         at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionPool.InjectNewHttp11ConnectionAsync(QueueItem queueItem)
         at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
         at System.Net.Http.HttpConnectionWaiter`1.WaitForConnectionWithTelemetryAsync(HttpRequestMessage request, HttpConnectionPool pool, Boolean async, CancellationToken requestCancellationToken)
         at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
         at System.Net.Http.Metrics.MetricsHandler.SendAsyncWithMetrics(HttpRequestMess…[truncated]

This log site's previous ticket, https://github.com/Systemorph/MeshWeaver/issues/7084, 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/c7c20efb574e1075. Recurrences are folded into this issue rather than opening new ones.
It also stands for the whole log site a4b2b983d01b440d: other fingerprints of this site fold in here as comments rather than opening tickets of their own.

Dominant language
C#
Stars
12
Forks
5
Avg merge
6h 37m
Merged PRs (30d)
929

Getting set up

  • No Dockerfile or Docker Compose file
  • Has a pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Systemorph/MeshWeaver

All issues in Systemorph/MeshWeaver

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.