Download failure leaves invalid file

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

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
À l'abandon
Stack technique
github, ruby
Domaine
devops

Piste de recherche

Commencez par lire libraries/github_asset.rb vers la ligne 94, où le téléchargement écrit dans le chemin de destination. Vérifiez le comportement en cas d’échec et le flux de ressources existant, puis assurez-vous qu’un téléchargement échoué ne laisse pas l’archive de destination, tandis qu’un téléchargement réussi la produit via le flux de fichier temporaire décrit dans l’issue.

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

Description

Bug

I just ran into an issue where Github failed to serve up a file properly, and that prevented all future runs of my cookbook from converging successfully.

The github_asset resource downloads directly into the destination file (/var/chef/cache/github_assets/org/repo/version/foo-version.tar.gz). If the download fails it leaves a zero-length archive behind with that name, and future cookbook runs don't re-download the file because the zero-length file exists. See https://github.com/reset/github-cookbook/blob/master/libraries/github_asset.rb#L94.

Suggested solution: download to a temporary file and rename it if the download completes successfully. I suggest downloading to a temporary name in the same directory so that the rename step doesn't also require a copy, if (for example) the /tmp directory is on a different volume than the /var/chef/cache/github_assets directory.

Langage dominant
Ruby
Étoiles
25
Forks
25
Merge moyen
2 min
PR mergées (30 j)
1

Préparer son environnement

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.

Autres issues de sous-chefs/github

Toutes les issues de sous-chefs/github

Issues similaires

Plus d'issues Ruby

Recevez les nouvelles issues par e-mail

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