python / python/cpython

os.writev() behaviour unpredictable when hitting file system full (28)

Aperta
#99,691 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

docs type-bug
Lingua principale
Python
Stelle
77.2k
Fork
36k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug report

os.writev() has an unpredictable behaviour when writing on a file system that becomes full:

For example:

try:
    fd=os.open(file,  os.O_WRONLY|os.O_CREAT|os.O_APPEND)
    result = os.writev(fd,iovtable[0:MAXIOV])
except OSError as e:
    ...
    # at this point result might return some bytes written (not necessarly corresponding to iov lengths, or even not be defined at all.

Your environment

centos 7.
Python 3.9 (but probably the same on 3.11)

This can easily be worked around by specifying in the documentation that os.writev() returns the actual number of bytes written in case of success, but the contents of the return value are unpredicatbale in case of errors.

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.

Direzione di ricerca

Inizia dalla documentazione di os.writev() e verifica come sono attualmente descritti il suo valore restituito e il comportamento di OSError. Confronta quella formulazione con il caso segnalato di un file system pieno; il lavoro è completo quando la documentazione indica chiaramente su cosa i chiamanti possono fare affidamento dopo un successo e dopo un errore.

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

Valutazione

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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.