Control: tags -1 + patch

¡Hola!

El 2023-12-12 a las 09:22 +0100, Lucas Nussbaum escribió:
Severity: serious
Justification: FTBFS

During a rebuild of all packages in sid, your package failed to build
on amd64.

Doing a rebuild of python related packages in order to test the support
of python 3.15 I stumbled upon this issue. The underlying issue is that
the tests are dealing with an already done future, so the callbacks
added with add_done_callback are never called.

I'm attaching patch to fix this, the patch was applied in the python
3.15 sandbox [1].

Please consider applying this or a similar patch.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/

--
"If you optimize everything, you will always be unhappy."
-- Donald Knuth
Saludos /\/\ /\ >< `/
Description: Handle completed futures in _send_pipeline
 In Python 3.12+, awaiting asyncio.gather on completed futures returns
 immediately without yielding to the event loop. Check if result_fut is
 already done and invoke _check_result directly so waiters are populated.
Author: Maximiliano Curia <[email protected]>
Forwarded: not-needed
--- a/aioredis/commands/transaction.py
+++ b/aioredis/commands/transaction.py
@@ -203,8 +203,11 @@ class Pipeline:
             for fut, cmd, args, kw in self._pipeline:
                 try:
                     result_fut = conn.execute(cmd, *args, **kw)
-                    result_fut.add_done_callback(
-                        functools.partial(self._check_result, waiter=fut))
+                    if result_fut.done():
+                        self._check_result(result_fut, waiter=fut)
+                    else:
+                        result_fut.add_done_callback(
+                            functools.partial(self._check_result, waiter=fut))
                 except Exception as exc:
                     fut.set_exception(exc)
                 else:

Attachment: signature.asc
Description: PGP signature

Reply via email to