A client called `run_in_transaction` be stuck if Spanner is down

Aperta Adatta ai principianti
#18,375 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
python
Ambito
databases

Direzione di ricerca

Inizia da packages/google-cloud-spanner/google/cloud/spanner_v1/database.py, in run_in_transaction e nella relativa chiamata a get_session. Traccia lo stato di esecuzione della transazione quando la creazione della sessione non riesce mentre Spanner non è disponibile, quindi aggiungi la copertura per questo percorso di errore. Il lavoro è completato quando il client non rimane bloccato e può riprovare quando Spanner torna disponibile.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

priority: p2 type: bug
Determine this is the right repository
  • I determined this is the correct repository in which to report this bug.
Summary of the issue

Context
When the Spanner is unavailable. If we call run_in_transaction, the Spanner client will stuck forever.

We believe the get_session should in the try catch block. Otherwise, the self._local.transaction_running = True will be forever True.

Expected Behavior:
The client will retry when the Spanner DB is back.

Actual Behavior:
The client stuck forever.

API client name and version

No response

Reproduction steps: code

No response

Reproduction steps: supporting files
  • Try to create a session when Spanner is unavailable.
  • The client will be stuck forever.
Reproduction steps: actual results

No response

Reproduction steps: expected results

No response

OS & version + platform

No response

Python environment

No response

Python dependencies

No response

Additional context

No response

Lingua principale
Python
Stelle
5.4k
Fork
1.8k
Merge medio
1g 17h
PR unite (30g)
93

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di googleapis/google-cloud-python

Tutte le issue di googleapis/google-cloud-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.