Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Windows: file operations don't always succeed as expected

Aperta
#114 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
python
Ambito
cli, tooling

Direzione di ricerca

Esamina travis_build_script.py per la funzione try_remove_tree e gli script di installazione che eseguono operazioni sui file. Comprendi le race condition specifiche di Windows con shutil.rmtree e os.remove. Testa il meccanismo di polling e considera di applicarlo ad altre operazioni sui file nella codebase.

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

Descrizione

Problems
  • shutil.rmtree or os.remove does not always ensure that files are fully removed after function returns
  • remove may take multiple attempts to succeed
  • mkdir(path, exist_ok=True) might have a race condition if it is called just after the folder is "removed"
Related Issues
Description

I noticed that sometimes in travis_build_script.py, try_remove_tree() didn't always remove the file immediately (the file would exist for some time after the function was called. The function used to be defined like this:

def try_remove_tree(path):
	try:
		if os.path.isdir(path):
			shutil.rmtree(path)
		else:
			os.remove(path)
	except FileNotFoundError:
		pass

but I changed it to this

def try_remove_tree(path):
	try:
		if os.path.isdir(path):
			shutil.rmtree(path)
		else:
			os.remove(path)
	except FileNotFoundError:
		pass

	# Make sure the folder is really removed
	poll_cnt = 0
	while os.path.exists(path):
		print(f"Waiting for {path} to be removed ({poll_cnt})")
		if poll_cnt < 5:
			time.sleep(1)
		else:
			raise Exception(f"Folder {path} could not be removed!")

		poll_cnt += 1

The # Make sure the folder is really removed did trigger on my machine (at least once), and after 1 second the file was "properly" removed.

If this behavior can happen on windows, we should also update the installer scripts, which use the same functions, to add this kind of functionality.

The installer scripts currently don't do multiple attempts when doing operations like extraction, deletion etc, so it may be worth checking for those sort of issues as well.

Lingua principale
JavaScript
Stelle
214
Fork
12
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 07th-mod/python-patcher

Tutte le issue di 07th-mod/python-patcher

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.