Skip to content

BlockingIOError and File descriptor xx is used by transport #10617

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
1 task done
xiaoxiper opened this issue Mar 23, 2025 · 44 comments · Fixed by #10656
Closed
1 task done

BlockingIOError and File descriptor xx is used by transport #10617

xiaoxiper opened this issue Mar 23, 2025 · 44 comments · Fixed by #10656
Labels
bug reproducer: missing This PR or issue lacks code, which reproduce the problem described or clearly understandable STR

Comments

@xiaoxiper
Copy link

xiaoxiper commented Mar 23, 2025

Describe the bug

I encountered a similar issue while using the latest version of aiohttp
aiohappyeyeballs: 2.6.1

#10506 (comment)

BlockingIOError: [Errno 115] Operation now in progress

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "<inner>.py", line 135, in plan
 agent_result, _ = await asyncio.gather(
 File "<inner>.py", line 175, in a_invoke
 result = await func(parameter)
 File "<inner>.py", line 1524, in load
 result.append(await func(parameter))
 File "<inner>.py", line 129, in convert
 enum = await func(parameter)
 File "<inner>.py", line 54, in enum
 await self.enum_func(parameter)
 File "<inner>.py", line 55, in wrapper
 result = await func(*args, **kwargs)
 File "<inner>.py", line 38, in load
 async with session.post(
 File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 1425, in __aenter__
 self._resp: _RetType = await self._coro
 File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 703, in _request
 conn = await self._connector.connect(
 File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 548, in connect
 proto = await self._create_connection(req, traces, timeout)
 File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1056, in _create_connection
 _, proto = await self._create_direct_connection(req, traces, timeout)
 File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1383, in _create_direct_connection
 transp, proto = await self._wrap_create_connection(
 File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1116, in _wrap_create_connection
 sock = await aiohappyeyeballs.start_connection(
 File "/usr/local/lib/python3.10/site-packages/aiohappyeyeballs/impl.py", line 127, in start_connection
 raise first_exception
 File "/usr/local/lib/python3.10/site-packages/aiohappyeyeballs/_staggered.py", line 132, in run_one_coro
 result = await coro_fn()
 File "/usr/local/lib/python3.10/site-packages/aiohappyeyeballs/impl.py", line 208, in _connect_sock
 await loop.sock_connect(sock, address)
 File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 499, in sock_connect
 self._sock_connect(fut, sock, address)
 File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 515, in _sock_connect
 self._ensure_fd_no_transport(fd)
 File "/usr/local/lib/python3.10/asyncio/selector_events.py", line 248, in _ensure_fd_no_transport
 raise RuntimeError(
 RuntimeError: File descriptor 68 is used by transport <_SelectorSocketTransport fd=68 read=polling write=<idle, bufsize=0>>
'}

To Reproduce

It's difficult to reproduce directly - currently unable to reproduce with script-based stress testing; it can only be reproduced in the production environment and occurs after a period of testing

Expected behavior

Logs/tracebacks

-

Python Version

$ python --version
3.10.14

aiohttp Version

$ python -m pip show aiohttp
Name: aiohttp                                                                                                                                                                                                            
Version: 3.11.14                                                                                                                                                                                                         
Summary: Async http client/server framework (asyncio)                                                                                                                                                                    
Home-page: https://github.com/aio-libs/aiohttp                                                                                                                                                                           
Author:                                                                                                                                                                                                                  
Author-email:                                                                                                                                                                                                            
License: Apache-2.0                                                                                                                                                                                                      
Location: /usr/local/lib/python3.10/site-packages                                                                                                                                                                        
Requires: aiohappyeyeballs, aiosignal, async-timeout, attrs, frozenlist, multidict, propcache, yarl                                                                                                                      
Required-by: livekit-api

multidict Version

$ python -m pip show multidict
Name: multidict                                                                                                                                                                                                          
Version: 6.2.0                                                                                                                                                                                                           
Summary: multidict implementation                                                                                                                                                                                        
Home-page: https://github.com/aio-libs/multidict                                                                                                                                                                         
Author: Andrew Svetlov                                                                                                                                                                                                   
Author-email: [email protected]                                                                                                                                                                                   
License: Apache 2                                                                                                                                                                                                        
Location: /usr/local/lib/python3.10/site-packages                                                                                                                                                                        
Requires: typing-extensions                                                                                                                                                                                              
Required-by: aiohttp, yarl

propcache Version

$ python -m pip show propcache
Name: propcache                                                                                                                                                                                                          
Version: 0.3.0                                                                                                                                                                                                           
Summary: Accelerated property cache                                                                                                                                                                                      
Home-page: https://github.com/aio-libs/propcache                                                                                                                                                                         
Author: Andrew Svetlov                                                                                                                                                                                                   
Author-email: [email protected]                                                                                                                                                                                   
License: Apache-2.0                                                                                                                                                                                                      
Location: /usr/local/lib/python3.10/site-packages                                                                                                                                                                        
Requires:                                                                                                                                                                                                                
Required-by: aiohttp, yarl

yarl Version

$ python -m pip show yarl
Name: yarl                                                                                                                                                                                                               
Version: 1.18.3                                                                                                                                                                                                          
Summary: Yet another URL library                                                                                                                                                                                         
Home-page: https://github.com/aio-libs/yarl                                                                                                                                                                              
Author: Andrew Svetlov                                                                                                                                                                                                   
Author-email: [email protected]                                                                                                                                                                                   
License: Apache-2.0                                                                                                                                                                                                      
Location: /usr/local/lib/python3.10/site-packages                                                                                                                                                                        
Requires: idna, multidict, propcache                                                                                                                                                                                     
Required-by: aiohttp

OS

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Related component

Client

Additional context

No response

Code of Conduct

  • I agree to follow the aio-libs Code of Conduct
@xiaoxiper xiaoxiper added the bug label Mar 23, 2025
@bdraco bdraco added the reproducer: missing This PR or issue lacks code, which reproduce the problem described or clearly understandable STR label Mar 23, 2025
@bdraco
Copy link
Member

bdraco commented Mar 23, 2025

I don't think we will be able to do anything without a reproducer here as I've already been over the aiohttp and aiohappyeyeballs code line by line for many days looking for potential leaks and have not been able to find any.

The only thing that hasn't been audited is CPython loop.sock_connect for cancellation safety issues.

@xiaoxiper
Copy link
Author

What other issues might be causing this exception? When this error occurs, all aiohttp-related code requests fail despite using independent client sessions. I've reviewed the surrounding logs and found no unusual activity.

Do you have suggestions for reproducing this issue?
What indicators should I monitor?
How can I mitigate this issue?
Should I consider switching to different versions?

Any leads would be greatly appreciated.

@bdraco
Copy link
Member

bdraco commented Mar 23, 2025

What other issues might be causing this exception

Anything that creates an asyncio.Transport and than potentially reuses the fd. aiohttp is going to create them frequently so it could be that aiohttp is getting unlucky and losing a race against something else creating these.

? When this error occurs, all aiohttp-related code requests fail despite using independent client sessions. I've reviewed the surrounding logs and found no unusual activity.

Do you have suggestions for reproducing this issue? What indicators should I monitor?

I don't know how you are using aiohttp or if there are other things running in the event loop that are allocating file handles so its hard to give you a suggestion.

How can I mitigate this issue?

If you don't care about IPv6/IPv4 failover, you could try turning off the happyeyeballs by setting happy_eyeballs_delay=None on the TCPConnector
https://docs.aiohttp.org/en/stable/client_reference.html#aiohttp.TCPConnector

Should I consider switching to different versions?

Can you try Python 3.12+ and see if you can still reproduce the issue? We haven't had any reports with newer Python versions.

Any leads would be greatly appreciated.

@olindho1
Copy link

I've been seeing this issue in our CI systems as well last 2-3 weeks. As described, hard to reproduce, happens intermittently. To mitigate this issue we locked our package versions as per #10506 (comment) and #10561 .

(Python 3.10.12)

aiohttp==3.11.14
aiohappyeyeballs==2.4.8

Unfortunately, we are still seeing the issue.

@bdraco
Copy link
Member

bdraco commented Mar 25, 2025

Do you have a backtrace that includes the BlockingIOError. It would be helpful to figure out where its being raised

Its got to be at https://github.com/python/cpython/blob/b8b4b713c5f8ec0958c7ef8d29d6711889bc94ab/Lib/asyncio/selector_events.py#L510

@bdraco
Copy link
Member

bdraco commented Mar 25, 2025

Also are you running a Python version with python/cpython#88863 fixed?

@bdraco
Copy link
Member

bdraco commented Mar 25, 2025

I got around to checking the cpython code for races:

So there is a race in cpython if loop.sock_connect gets cancelled (timeout in our case):

https://github.com/python/cpython/blob/b8b4b713c5f8ec0958c7ef8d29d6711889bc94ab/Lib/asyncio/selector_events.py#L518

self._sock_connect(fut, sock, address) gets called, a future gets returned, the connect times out, the future gets cancelled, but the writer is already added, but the cleanup doesn't happen until one event loop iteration later because its delivered via add_done_callback which uses call_soon https://github.com/python/cpython/blob/b8b4b713c5f8ec0958c7ef8d29d6711889bc94ab/Lib/asyncio/selector_events.py#L518 https://github.com/python/cpython/blob/b8b4b713c5f8ec0958c7ef8d29d6711889bc94ab/Lib/asyncio/selector_events.py#L530

But sock_connect returns before its actually torn down because of the delay, than we close the socket, and it gets reallocated before the call_soon cleans it up for asyncio so it thinks its still in use

@bdraco
Copy link
Member

bdraco commented Mar 25, 2025

python/cpython#131728

@bdraco
Copy link
Member

bdraco commented Mar 25, 2025

@xiaoxiper Can you try #10624 ?

@olindho1
Copy link

Do you have a backtrace that includes the BlockingIOError. It would be helpful to figure out where its being raised

Its got to be at https://github.com/python/cpython/blob/b8b4b713c5f8ec0958c7ef8d29d6711889bc94ab/Lib/asyncio/selector_events.py#L510

That's correct. The traceback (with proprietary parts redacted) is:

Traceback (most recent call last):
  File "/usr/lib/python3.10/asyncio/selector_events.py", line 509, in _sock_connect
    sock.connect(address)
BlockingIOError: [Errno 115] Operation now in progress

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "lib/python3.10/site-packages/aiohttp/client.py", line 1425, in __aenter__
    self._resp: _RetType = await self._coro
  File "lib/python3.10/site-packages/aiohttp/client.py", line 703, in _request
    conn = await self._connector.connect(
  File "lib/python3.10/site-packages/aiohttp/connector.py", line 548, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "lib/python3.10/site-packages/aiohttp/connector.py", line 1056, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "lib/python3.10/site-packages/aiohttp/connector.py", line 1383, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "lib/python3.10/site-packages/aiohttp/connector.py", line 1116, in _wrap_create_connection
    sock = await aiohappyeyeballs.start_connection(
  File "lib/python3.10/site-packages/aiohappyeyeballs/impl.py", line 115, in start_connection
    raise first_exception
  File "lib/python3.10/site-packages/aiohappyeyeballs/impl.py", line 72, in start_connection
    sock = await _connect_sock(
  File "lib/python3.10/site-packages/aiohappyeyeballs/impl.py", line 197, in _connect_sock
    await loop.sock_connect(sock, address)
  File "/usr/lib/python3.10/asyncio/selector_events.py", line 499, in sock_connect
    self._sock_connect(fut, sock, address)
  File "/usr/lib/python3.10/asyncio/selector_events.py", line 515, in _sock_connect
    self._ensure_fd_no_transport(fd)
  File "/usr/lib/python3.10/asyncio/selector_events.py", line 248, in _ensure_fd_no_transport
    raise RuntimeError(
RuntimeError: File descriptor 53 is used by transport <_SelectorSocketTransport fd=53 read=polling write=<idle, bufsize=0>>

@olindho1
Copy link

Also are you running a Python version with python/cpython#88863 fixed?

At least for me, as I am running Python 3.10.12 (more specifically 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0] installed/setup using uv venv) I believe I am running with a python version with this fixed. At least looking at python/cpython#88863 it should have been fixed by python/cpython#99722 which was merged in python/cpython@b191bc3 and is in tag v3.10.12.

@bdraco
Copy link
Member

bdraco commented Mar 26, 2025

@olindho1 Can you try the linked PR #10624 ?

@bdraco
Copy link
Member

bdraco commented Mar 26, 2025

Looks like we can work around this in aiohappyeyeballs

@bdraco
Copy link
Member

bdraco commented Mar 26, 2025

The race in cpython can happen even if the happyeyeballs algorithm isn't being used.

Since aiohappyeyeballs is responsible for connecting all sockets so we can still work around python/cpython#131728 there

@xiaoxiper @olindho1 Can you try this PR:
aio-libs/aiohappyeyeballs#157

@bdraco
Copy link
Member

bdraco commented Mar 27, 2025

I wasn't able to make a reproducer for python/cpython#131728

I think the issue is actually with create_connection getting cancelled
python/cpython#131728 (comment)

@bdraco
Copy link
Member

bdraco commented Mar 27, 2025

It seems #10624 would probably work around that issue

@olindho1
Copy link

Hello! I really appreciate you taking the time looking into this, and the frequent updates from your findings. But I will be honest, I'm rather confused whether you'd like me to test aio-libs/aiohappyeyeballs#157 or #10624 .

Regardless, the issue is infrequent and not immediately reproducible as you know. So in order to know if the PR solves the issue, I reckon we'd just have to run with it for a while, and then be satisfied that we haven't seen it occur in X amount of time.

I could try and run any of the PRs in our systems, but it's rather cumbersome without a downloadable version from pypi. Would it be possible to deploy it as a dev version or so?

PS: I've also been thinking about why your unable to reproduce it, it should be possible, somehow. So I looked into our code stack, and maybe something we're missing here (I am kind of clueless here, just throwing ideas). Our python application runs async, but also starts up additional multiprocessing.Process. Could it be a race condition between the different processes?

When I looked into the logs, I've seen occurrences of the error both from the main process, or the sub process.

@bdraco
Copy link
Member

bdraco commented Mar 27, 2025

Hello! I really appreciate you taking the time looking into this, and the frequent updates from your findings. But I will be honest, I'm rather confused whether you'd like me to test aio-libs/aiohappyeyeballs#157 or #10624 .

Since I can't find an actual bug in aiohttp, aiohappyeyeballs, or CPython for this case I can only guess which one might solve the issue for you so it's best to try both independently for an extended time and report back if either one solves the issue.

I'll keep looking for a race bug when I have some more free cycles.

@rajeevn1
Copy link

any workaround suggestions? I am seeing this error a lot with python v3.13.2, and aiohttp v3.11.14

@bdraco
Copy link
Member

bdraco commented Mar 31, 2025

No workaround available at this time. We still need a reproducer

@bdraco
Copy link
Member

bdraco commented Mar 31, 2025

import asyncio
import socket


async def repro_sock_connect_race():
    tasks = [
        asyncio.create_task(socket_runner(port))
        for port in range(200)
    ]
    await asyncio.gather(*tasks)
        

async def socket_runner(port: int) -> None:
    loop = asyncio.get_running_loop()
    while True:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.setblocking(False)
        task = asyncio.current_task()
        loop.call_soon(task.cancel)
        try:
            await loop.create_connection(asyncio.Protocol, None, None, sock=sock)
        except asyncio.CancelledError:
            sock.close()

Failed attempt at reproducing

@bdraco
Copy link
Member

bdraco commented Mar 31, 2025

My guess it that its only reproducible when sockets are also being opened/closed in another thread

@bdraco
Copy link
Member

bdraco commented Mar 31, 2025

failed attempt at making a reproducer with a thread involved

import asyncio
import socket
import time
from threading import Thread


class MyThread(Thread):

    def run(*args):
        while True:
            sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            print(["thread sock", sock.fileno()])
            sock.setblocking(False)
            time.sleep(0.0001)
            sock.close()


async def repro_sock_connect_race():
    tasks = [asyncio.create_task(socket_runner(port)) for port in range(200)]
    await asyncio.gather(*tasks)


async def socket_runner(port: int) -> None:
    loop = asyncio.get_running_loop()
    while True:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        print(["asyncio sock", sock.fileno()])
        sock.setblocking(False)
        task = asyncio.current_task()
        loop.call_soon(task.cancel)
        try:
            await loop.create_connection(asyncio.Protocol, None, None, sock=sock)
        except asyncio.CancelledError:
            sock.close()


print("Starting threads")
for _ in range(10):
    t = MyThread()
    t.start()
    print("Thread started")
print("Starting asyncio")
asyncio.run(repro_sock_connect_race())

@bdraco

This comment has been minimized.

@bdraco

This comment has been minimized.

item4 added a commit to item4/yui that referenced this issue Apr 1, 2025
3.11.13 and 3.11.14 was yanked.
ref: aio-libs/aiohttp#10617
@bdraco
Copy link
Member

bdraco commented Apr 1, 2025

Absent a solution, I'm going to proceed with the revert

@bdraco
Copy link
Member

bdraco commented Apr 1, 2025

tried again to make a reproducer.. all it shows is that its cleaned up correctly with the even with the revert

import asyncio
import pprint
import socket
from types import TracebackType
from typing import Optional
from asyncio.selector_events import _SelectorSocketTransport
import gc

readers = []


class FakeTimeout:
    async def __aenter__(self) -> "FakeTimeout":
        return self

    async def __aexit__(
        self,
        exc_type: Optional[type[BaseException]],
        exc_val: Optional[BaseException],
        exc_tb: Optional[TracebackType],
    ) -> Optional[bool]:
        if exc_type is asyncio.CancelledError:
            raise TimeoutError
        return None


def _set_result_and_call_cancel(fut):
    """Helper setting the result only if the future was not cancelled."""
    if not fut.cancelled():
        fut.set_result(None)


def _add_reader(sock):
    """Helper to add a reader callback to the socket."""
    readers.append(sock)


async def _create_connection_transport(sock):
    print("_create_connection_transport")
    loop = asyncio.get_event_loop()

    future = loop.create_future()
    loop.call_soon(_add_reader, sock)
    #    loop.call_soon(_set_result_and_call_cancel, future)
    try:
        await future
    except:
        # The real create_connection_transport will
        # call transport.close()
        readers.remove(sock)
        print("Cancelled, socket will be closed")
        raise

    return "transport", "protocol"


async def create_connection(sock):
    print("create_connection")
    # The real create_connection will no await
    # anything here because its passed a sock, but will call
    # _create_connection_transport()

    transport, protocol = await _create_connection_transport(sock)
    return transport, protocol


async def happyeyeballs_start():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.setblocking(False)
    return sock


async def socket_runner() -> None:
    sock: Optional[socket.socket] = None
    connection = None
    try:
        async with FakeTimeout():
            sock = await happyeyeballs_start()
            asyncio.current_task().cancel()  # simulate timeout
            connection = await create_connection(sock)
            sock = None
            return (
                f"Finished socket_runner: connection={connection}, sock={sock} readers={readers}",
                sock.fileno(),
            )
    except TimeoutError:
        print("TimeoutError")
    finally:
        assert sock is not None
    return (
        f"Failed socket_runner: connection={connection}, sock={sock}, readers={readers}",
        sock.fileno(),
    )


async def run():
    result, fileno = await socket_runner()
    print(f"Fileno: {fileno} Result: {result}")
    await asyncio.sleep(0)  # give time for socket to close
    gc.collect()

    # Open a new socket, should get the same fileno
    # as the one that was closed in socket_runner
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    assert sock.fileno() == fileno
    print("New socket fileno: ", sock.fileno())


asyncio.run(run())

@bdraco bdraco closed this as completed in 06db052 Apr 1, 2025
patchback bot pushed a commit that referenced this issue Apr 1, 2025
…10464 (#10656)

Reverts #10464

While this change improved the situation for uvloop users, it caused a
regression with `SelectorEventLoop` (issue #10617)

The alternative fix is MagicStack/uvloop#646
(not merged at the time of this PR)

issue #10617 appears to be very similar to
python/cpython@d5aeccf

If someone can come up with a working reproducer for #10617 we can
revisit this.
cc @top-oai

Minimal implementation that shows on cancellation the socket is cleaned
up without the explicit `close`
#10617 (comment)
so this should be unneeded unless I've missed something (very possible
with all the moving parts here)

## Related issue number

fixes #10617

(cherry picked from commit 06db052)
patchback bot pushed a commit that referenced this issue Apr 1, 2025
…10464 (#10656)

Reverts #10464

While this change improved the situation for uvloop users, it caused a
regression with `SelectorEventLoop` (issue #10617)

The alternative fix is MagicStack/uvloop#646
(not merged at the time of this PR)

issue #10617 appears to be very similar to
python/cpython@d5aeccf

If someone can come up with a working reproducer for #10617 we can
revisit this.
cc @top-oai

Minimal implementation that shows on cancellation the socket is cleaned
up without the explicit `close`
#10617 (comment)
so this should be unneeded unless I've missed something (very possible
with all the moving parts here)

## Related issue number

fixes #10617

(cherry picked from commit 06db052)
bdraco added a commit that referenced this issue Apr 1, 2025
…'s a failure in start_connection() #10464 (#10657)

**This is a backport of PR #10656 as merged into master
(06db052).**

Reverts #10464

While this change improved the situation for uvloop users, it caused a
regression with `SelectorEventLoop` (issue #10617)

The alternative fix is MagicStack/uvloop#646
(not merged at the time of this PR)

issue #10617 appears to be very similar to
python/cpython@d5aeccf

If someone can come up with a working reproducer for #10617 we can
revisit this.
cc @top-oai

Minimal implementation that shows on cancellation the socket is cleaned
up without the explicit `close`
#10617 (comment)
so this should be unneeded unless I've missed something (very possible
with all the moving parts here)

## Related issue number

fixes #10617

Co-authored-by: J. Nick Koston <[email protected]>
@bdraco
Copy link
Member

bdraco commented Apr 1, 2025

@bdraco
Copy link
Member

bdraco commented Apr 1, 2025

3.11.15 #10659

bdraco added a commit that referenced this issue Apr 1, 2025
We yanked 3.11.13 and 3.11.14 and reverted #10464 because of #10617 so
we are doing another release to make sure nobody has to go without the
other fixes in .13 and .14

<img width="643" alt="Screenshot 2025-03-31 at 5 42 58 PM"
src="https://github.com/user-attachments/assets/08317aa3-27f8-4400-87c1-15eeec0c3682"
/>
xen0n added a commit to ruyisdk/ruyi-backend that referenced this issue Apr 2, 2025
In particular, upgrade to a non-yanked aiohttp.

See: aio-libs/aiohttp#10617
JoseJuan98 added a commit to JoseJuan98/transformer-attention-with-hdc-binding that referenced this issue Apr 8, 2025
@olindho1
Copy link

olindho1 commented Apr 9, 2025

This seems to have resolved the issue. We have not seen the issue since 3.11.15.

Great job, thanks :)

Alex-Bair added a commit to estuary/connectors that referenced this issue Apr 28, 2025
`aiohttp` version 3.11.13 was yanked per this issue:
aio-libs/aiohttp#10617. I've seen errors
similar to those described in the issue for this connector, so I'm
updating the `aiohttp` version to hopefully address those errors.
Alex-Bair added a commit to estuary/connectors that referenced this issue Apr 29, 2025
`aiohttp` version 3.11.13 was yanked per this issue:
aio-libs/aiohttp#10617. I've seen errors
similar to those described in the issue for this connector, so I'm
updating the `aiohttp` version to hopefully address those errors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug reproducer: missing This PR or issue lacks code, which reproduce the problem described or clearly understandable STR
Projects
None yet
4 participants