AnswerDotAI / AnswerDotAI/sqlite-minutils

With manual transactions, race conditions on `last_insert_rowid()` need to be accounted for

Ouverte
#21 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
17
Forks
9
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

## Race condition scenario with new configuration:

```python
# pseudocode

# We insert the record here!
db.insert(...)

# ! Record adding in different process increments the ROWID by another one

# Let's see the last PK, but now it's been incremented 0-to-many times
print(db.last_pk)
```

## Probably not a fix

```python
db.begin()
db.insert(...)
print(db.get_last_rowid()) # Not necessarily the record
db.commit()
```

Guide de contribution

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

Piste de recherche

Commencez par suivre les points d’entrée db.insert, db.last_pk et db.get_last_rowid décrits dans l’issue, puis examinez comment les transactions manuelles interagissent avec les processus concurrents. Reproduisez l’entrelacement montré dans le pseudocode et établissez le comportement attendu de la clé primaire avant de décider ce que devrait couvrir un correctif ou un test complet.

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

Évaluation

Stack technique
python, sqlite
Domaine
databases
Type d'issue
Bug
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

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