tarantool / tarantool/tarantool-python

`load_schema` race

Ouverte
#333 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Python
Étoiles
108
Forks
51
Merge moyen
1 j 8 h
PR mergées (30 j)
1

Description

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:

https://github.com/tarantool/tarantool-python/blob/28310fc4e927c77d3be75e98360bf3b09f72482a/tarantool/connection.py#L1409-L1410

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]])

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans tarantool/connection.py, aux lignes liées autour de 1409-1410, puis suivez load_schema jusqu’à tarantool/schema.py et fetch_index_all au niveau de l’appel en échec. Reproduisez le cas de création concurrente d’objets Tarantool et examinez comment les deux récupérations non transactionnelles interagissent. C’est terminé lorsque load_schema ne lève plus d’exception d’index et gère un schéma cohérent.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
database
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.