Résoudre les problèmes de crochet de service
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Utilisez cet article pour obtenir des conseils généraux sur la résolution des problèmes et des réponses aux questions fréquentes (FAQ).
Afficher les problèmes d’activité et de débogage
La page Service Hooks de l’administrateur d’accès web affiche votre activité récente (14 derniers jours) pour chaque abonnement et indique si un abonnement est activé, désactivé ou restreint.
Vous pouvez accéder à l’historique détaillé d’un abonnement, y compris les données détaillées de demande/réponse, qui sont utiles pour le débogage d’un service ou d’un abonnement problématique.
Pour afficher l’activité et l’état de vos abonnements, accédez à la page Hooks de service.
Pour afficher l’activité détaillée d’un abonnement, notamment les données complètes de la demande, de la réponse et de la charge utile des événements, sélectionnez un abonnement dans la table, puis sélectionnez Historique.
Échecs d’abonnement et probation (restreint)
Types d’échecs
Les échecs d’une notification Service Hooks sont regroupés dans les catégories suivantes :
- Échecs de terminal
- Échecs temporaires
- Échecs durables
Échecs de terminal
Le seul échec du terminal est le code d’état HTTP 410 (disparu). Lorsqu’un abonnement voit un échec de terminal, il est automatiquement désactivé, quel que soit son état antérieur.
Échecs temporaires
Lorsqu’un abonnement voit un échec temporaire, il tente de renvoyer la notification jusqu’à huit fois, avec un délai croissant entre chaque tentative. Les échecs temporaires incluent les codes suivants :
- 408 (Délai d’expiration de la demande)
- 502 (Passerelle incorrecte)
- 503 (Service indisponible)
- 504 (Délai d’expiration de la passerelle)
Séquence de nouvelles tentatives pour les échecs temporaires
Réessayer # | Temps d’attente |
---|---|
Avant de réessayer 1 | attendre ~1 seconde |
Avant de réessayer 2 | attendre environ 2 secondes (délai total de 3 secondes) |
Avant de réessayer 3 | attendre environ 4 secondes (délai total de 7 secondes) |
Avant de réessayer 4 | attendre environ 8 secondes (délai total de 15 secondes) |
Avant de réessayer 5 | attendre environ 16 secondes (délai total de 31 secondes) |
Avant de réessayer 6 | attendre ~32 secondes (délai total de 63 secondes) |
Avant de réessayer 7 | attendre environ 60 secondes (délai maximal d’interruption, délai total de 123 secondes) |
Avant de réessayer 8 | attendre environ 60 secondes (délai maximal d’interruption, délai total de 183 secondes) |
Si la notification épuise toutes ses nouvelles tentatives et continue de voir un échec temporaire pour chaque tentative, l’abonnement cesse d’envoyer la notification et traite la notification comme si elle voyait un échec durable.
Échecs durables
Les échecs durables incluent tous les autres codes d’échec HTTP, par exemple : 404 (introuvable), 500 (erreur de serveur interne), et ainsi de suite.
Lorsqu’un abonnement voit un échec durable, il est mis en probation.
Probation
Pendant la probation, un abonnement est limité dans le nombre de notifications qu’il peut envoyer. Si l’abonnement continue d’atteindre les échecs durables, il est de plus en plus limité et finalement désactivé. Si l’abonnement reçoit une réponse réussie lors de la probation, il est restauré dans un état entièrement activé.
Séquence de sept nouvelles tentatives maximales pendant que l’abonnement est en probation
Lorsqu’un abonnement est en probation, tous les nouveaux événements sont perdus. Une fois une nouvelle tentative réussie, l’abonnement est activé et les événements sont à nouveau publiés.
Réessayer # | Temps d’attente |
---|---|
Avant de réessayer 1 | attendre environ 20 minutes |
Avant de réessayer 2 | attendre environ 40 minutes (durée totale de probation de 1 heure) |
Avant de réessayer 3 | attendre environ 1 heure 20 minutes (durée totale de probation de 2,33 heures) |
Avant de réessayer 4 | attendre environ 2 heures 40 minutes (durée totale de probation de 5 heures) |
Avant de réessayer 5 | attendre environ 5 heures 20 minutes (durée totale de probation de 10,33 heures) |
Avant de réessayer 6 | attendre environ 10 heures 40 minutes (durée totale de probation de 21 heures) |
Avant de réessayer 7 | attendre environ 15 heures (durée maximale de retour, durée totale de probation de 36 heures) |
Après sept nouvelles tentatives, l’état de l’abonnement est défini sur DisabledBySystem si la notification du consommateur échoue.
FAQ
Q : Quelle est la limite de charge utile d’un hook de service ?
R : La limite de charge utile est de 2 Mo. Les charges utiles plus volumineuses entraînent une dégradation des performances et de la fiabilité. En guise de bonne pratique, les crochets de service doivent limiter la charge utile à 2 Mo ou moins.
Q : Que signifie l’état Activé (restreint) ?
R : Un abonnement devient restreint si un trop grand nombre d’échecs se produisent. Activé (restreint) est identique à celui de la probation.
Q : Que signifie l’état Désactivé (en raison d’échecs) ?
R : Un abonnement est automatiquement désactivé après une série d’échecs consécutifs sur une période prolongée ou une défaillance de terminal est rencontrée. Les types d’échecs temporaires sont retentés plusieurs fois avant d’être déclarés comme un échec. Les types d’échecs durables ne sont pas retentés. Voici des exemples de chaque type de défaillance.
- Temporaire : 408 (Délai d’expiration de la demande), 502 (Passerelle incorrecte), 503 (Service indisponible), 504 (Délai d’expiration de la passerelle)
- Terminal : 410 (Disparu)
- Durable : toutes les défaillances qui ne sont pas temporaires ou terminales
Q : Que signifie l’état Désactivé (projet de gauche de l’utilisateur) ?
R : L’utilisateur qui a créé l’abonnement n’est plus membre de l’équipe.
Q : Que dois-je essayer si un hook de service ne fonctionne pas ?
R : Vérifiez les éléments suivants :
Vérifiez que l’abonnement est activé
Vérifiez que les paramètres d’abonnement sont corrects (filtres d’événements et actions)
Examinez l’historique, en particulier s’il y a des défaillances
Q : Puis-je accorder à un utilisateur de projet standard la possibilité d’afficher et de gérer les abonnements de hook de service pour un projet ?
R : Par défaut, seuls les administrateurs de projet disposent de ces autorisations. Pour les accorder directement à d’autres utilisateurs, vous pouvez utiliser l’outil en ligne de commande ou l’API REST Sécurité.
Q : Puis-je créer des abonnements par programmation ?
R : Oui, utilisez des API REST.