aio-libs / aiodocker

Python Docker API client based on asyncio and aiohttp
Other
441 stars 101 forks source link

Stream class is broken due to aiohttp 3.11 breaking change 'FlowControlDataQueue' #918

Closed idan-rahamim-lendbuzz closed 5 days ago

idan-rahamim-lendbuzz commented 6 days ago

This is broken: https://github.com/aio-libs/aiodocker/blob/06cc2a1485fe42795d2bf0d8d96974a17c58ccba/aiodocker/stream.py#L89

Because of aiohttp 3.11 breaking change:

https://github.com/aio-libs/aiohttp/pull/9685

asvetlov commented 6 days ago

@bdraco could you take a look please? I think the report is related to your recent changes.

bdraco commented 6 days ago

We could restore that class even though it won't be used internally for backwards compatibility

bdraco commented 6 days ago

@achimnol FlowControlDataQueue is not used anymore internally in aiohttp. Is better to change here or restore that class in 3.11 and wait until 4.x to fully drop it?

Realized its smaller than I thought so not so hard to maintain back-compat in 3.11, however it will go away in 4.x. see https://github.com/aio-libs/aiodocker/issues/919

bdraco commented 6 days ago

I'm going to restore it and release 3.11.3

Please note that it will go away permanently in 4.x so its will probably be best to vendor the code in that PR if aiodocker will still need this class when 4.x is released.

bdraco commented 6 days ago

created https://github.com/aio-libs/aiodocker/issues/919 so its not lost track of

bdraco commented 6 days ago

3.11.3 releasing with FlowControlDataQueue restored.

Can be watched here https://github.com/aio-libs/aiohttp/actions/runs/11903509416

idan-rahamim-lendbuzz commented 5 days ago

@asvetlov @bdraco Now i get another error AttributeError: 'ResponseHandler' object has no attribute 'force_close' It comes from line 93 of stream.py

bdraco commented 5 days ago

@idan-rahamim-lendbuzz Can you post the full trace?

idan-rahamim-lendbuzz commented 5 days ago

@idan-rahamim-lendbuzz Can you post the full trace?

Traceback (most recent call last): File "/Users/idan.rahamim/repos/sheriff-spec-tator/sheriff_spec_tator/utils/entities.py", line 51, in validate await validate_method() File "/Users/idan.rahamim/repos/sheriff-spec-tator/sheriff_spec_tator/validation/requirements /bronze/production_dockerfile.py", line 38, in validate_general if await DockerUtils.docker_exec_output("id -u") != "0": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/idan.rahamim/repos/sheriff-spec-tator/sheriff_spec_tator/utils/docker.py", line 47, in docker_exec_output chunk = await exec_start.read_out() ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/idan.rahamim/Library/Caches/pypoetry/virtualenvs/sheriff-spec-tator-jHopqe-F-py3 .12/lib/python3.12/site-packages/aiodocker/stream.py", line 98, in read_out await self._init() File "/Users/idan.rahamim/Library/Caches/pypoetry/virtualenvs/sheriff-spec-tator-jHopqe-F-py3 .12/lib/python3.12/site-packages/aiodocker/stream.py", line 93, in _init protocol.force_close() ^^^^^^^^^^^^^^^^^^^^ AttributeError: 'ResponseHandler' object has no attribute 'force_close'

bdraco commented 5 days ago

Looks like that has a different cause

https://github.com/aio-libs/aiohttp/pull/8920

bdraco commented 5 days ago

Since this is a separate problem, and the original issue here has been fixed I've opened https://github.com/aio-libs/aiodocker/issues/920

Please continue there