MagicStack / MagicStack/asyncpg

Test failure in test_executemany_server_failure_during_writes

Offen
#1,099 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Python
Sterne
8.1k
Forks
468
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

* **asyncpg version**: 0.29.0
* **PostgreSQL version**: 15.4
* **Do you use a PostgreSQL SaaS? If so, which? Can you reproduce
the issue with a local PostgreSQL install?**: N/A, building the [`python-asyncpg` package](https://src.fedoraproject.org/rpms/python-asyncpg) on Fedora Linux infrastructure
* **Python version**: 3.12.0
* **Platform**: Fedora Linux Rawhide, ~~`s390x` architecture (only!)~~
* **Do you use pgbouncer?**: No
* **Did you install asyncpg with pip?**: No, I am the maintainer of the distribution package.
* **If you built asyncpg locally, which version of Cython did you use?**: 0.29.35
* **Can the issue be reproduced under both asyncio and
[uvloop](https://github.com/magicstack/uvloop)?**: ~~**No**, only `asyncio`.~~ *yes*

This is new in 0.29.0. I don’t have any idea why it is happening.

~~I can’t reproduce this with `PYTHONASYNCIODEBUG=1`, nor can I reproduce it with `USE_UVLOOP=1`.~~ I have now seen this on `x86_64` with `asyncio` and `PYTHONASYNCIODEBUG=1`.

~~I don’t have interactive access to an `s390x` machine, but~~ I am happy to run experiments or test proposed fixes by submitting package test builds on Fedora infrastructure. For the time being, I plan to simply skip this test ~~on `s390x`~~.

```
=================================== FAILURES ===================================
________ TestExecuteMany.test_executemany_server_failure_during_writes _________
Traceback (most recent call last):
File "/usr/lib64/python3.12/unittest/case.py", line 58, in testPartExecutor
yield
File "/usr/lib64/python3.12/unittest/case.py", line 634, in run
self._callTestMethod(testMethod)
File "/usr/lib64/python3.12/unittest/case.py", line 589, in _callTestMethod
if method() is not None:
^^^^^^^^
File "/builddir/build/BUILDROOT/python-asyncpg-0.29.0-1.fc40.s390x/usr/lib64/python3.12/site-packages/asyncpg/_testbase/__init__.py", line 92, in wrapper
self.loop.run_until_complete(coro)
File "/usr/lib64/python3.12/asyncio/base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/builddir/build/BUILD/asyncpg-0.29.0/tests/test_execute.py", line 215, in test_executemany_server_failure_during_writes
self.assertLess(pos, 128, 'should stop early')
File "/usr/lib64/python3.12/unittest/case.py", line 1257, in assertLess
self.fail(self._formatMessage(msg, standardMsg))
File "/usr/lib64/python3.12/unittest/case.py", line 715, in fail
raise self.failureException(msg)
AssertionError: 128 not less than 128 : should stop early
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit tests/test_execute.py, insbesondere mit TestExecuteMany.test_executemany_server_failure_during_writes rund um die fehlschlagende Assertion in Zeile 215. Reproduziere den Test mit Python 3.12, PostgreSQL 15.4 und asyncio und vergleiche die beobachtete Position von 128 mit dem erwarteten frühen Abbruch des Tests. Erledigt bedeutet, dass der Fehler verstanden ist und der Test ohne einen nicht gerechtfertigten plattformspezifischen Skip konsistent besteht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
postgresql, python
Bereich
backend, databases
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.