tarantool / tarantool/tarantool-python
`load_schema` race
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 108
- Forks
- 51
- Ø Merge
- 1 T. 8 Std.
- Gemergte PRs (30 T.)
- 1
Beschreibung
These lines result in an index exception, trying to connect to the instance that actively applies DDL due to the race with the tarantool object creation:
As these two fetches are non-transactional, the second one can return an index for space that is not fetched at the first fetch, resulting in:
Traceback (most recent call last):
File "/python/lib/python3.11/site-packages/tarantool/connection.py", line 1097, in connect
self.load_schema()
File "/python/lib/python3.11/site-packages/tarantool/connection.py", line 1316, in load_schema
self.schema.fetch_index_all()
File "/python/lib/python3.11/site-packages/tarantool/schema.py", line 377, in fetch_index_all
SchemaIndex(row, self.schema[row[0]])
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne in tarantool/connection.py bei den verlinkten Zeilen um 1409–1410, folge dann load_schema in tarantool/schema.py und fetch_index_all beim fehlschlagenden Aufruf. Reproduziere den Fall der gleichzeitigen Erstellung von Tarantool-Objekten und untersuche, wie die beiden nicht-transaktionalen Abrufe miteinander interagieren. Als erledigt gilt die Aufgabe, wenn load_schema keine Index-Ausnahme mehr auslöst und ein konsistentes Schema verarbeitet.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- database
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100