redis-py icon indicating copy to clipboard operation
redis-py copied to clipboard

4.4.0rc2: read() called while another coroutine is already waiting for incoming data

Open JonasKs opened this issue 2 years ago • 0 comments

Version: 4.4.0rc2

Platform: MacOS and Windows. Python 3.10.6.

Description: We've noticed that we are no longer able to enqueue_job() with arq. All of this works in 4.4.0rc1.

Traceback (most recent call last):
  File "<redacted>", line <redacted>, in <redacted>
    await redis.enqueue_job(
  File "<redacted>", line 137, in enqueue_job
    if any(await asyncio.gather(pipe.exists(job_key), pipe.exists(result_key_prefix + job_id))):
  File "<redacted>/lib/python3.10/site-packages/redis/asyncio/client.py", line 1161, in immediate_execute_command
    return await conn.retry.call_with_retry(
  File "<redacted>lib/python3.10/site-packages/redis/asyncio/retry.py", line 59, in call_with_retry
    return await do()
  File "<redacted>lib/python3.10/site-packages/redis/asyncio/client.py", line 463, in _send_command_parse_response
    return await self.parse_response(conn, command_name, **options)
  File "<redacted>lib/python3.10/site-packages/redis/asyncio/client.py", line 1293, in parse_response
    result = await super().parse_response(connection, command_name, **options)
  File "/<redacted>/lib/python3.10/site-packages/redis/asyncio/client.py", line 505, in parse_response
    response = await connection.read_response()
  File "<redacted>/lib/python3.10/site-packages/redis/asyncio/connection.py", line 886, in read_response
    response = await self._parser.read_response(
  File "<redacted>/lib/python3.10/site-packages/redis/asyncio/connection.py", line 468, in read_response
    await self.read_from_socket()
  File "<redacted>/lib/python3.10/site-packages/redis/asyncio/connection.py", line 451, in read_from_socket
    buffer = await self._stream.read(self._read_size)
  File "<redacted>/lib/python3.10/asyncio/streams.py", line 669, in read
    await self._wait_for_data('read')
  File "<redacted>lib/python3.10/asyncio/streams.py", line 488, in _wait_for_data
    raise RuntimeError(
RuntimeError: read() called while another coroutine is already waiting for incoming data

I can try to provide a reproducible example later if you'd like, but that would require arq as a dependency.

JonasKs avatar Oct 05 '22 11:10 JonasKs