microsoft / microsoft/azure-devops-python-api
This SDK isn't thread-safe (or even multi-process safe) because of OPTIONS cache
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 684
- Forks
- 218
- Merge moyen
- 8 j 10 h
- PR mergées (30 j)
- 1
Description
This SDK is crashing some of my build agents occasionally with this error:
[Errno 13] Permission denied: '/Users/USER_NAME/.azure-devops/python-sdk/cache/options.json'
Based on reading the code, it appears to be coming from here:
https://github.com/microsoft/azure-devops-python-api/blob/dev/azure-devops/azure/devops/_file_cache.py
This code doesn't appear to be at all thread, or even process, safe, as it just asserts handles to the file.
If it can't be made thread/process safe, some option to just not use the cache at all, and just fetch it directly when needed for the connection would work. As is now, I've had to implement a machine level mutex and lock all my calls to this API behind it, which is horribly inefficient, but I can't have my builds crashing with random IO errors.
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par azure-devops/azure/devops/_file_cache.py et suivez la manière dont options.json est ouvert et mis à jour pendant les connexions du SDK. Reproduisez l’échec d’accès concurrent si possible, puis déterminez si le cache peut être rendu sûr pour les threads et les processus, ou être contourné lorsqu’il est désactivé. Le travail sera considéré comme terminé lorsque l’utilisation concurrente par des agents de build ne produira plus l’erreur d’autorisation signalée et que le comportement choisi sera documenté.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100