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.

  1. Pour afficher l’activité et l’état de vos abonnements, accédez à la page Hooks de service.

    Capture d’écran montrant l’affichage de l’activité et de l’état des abonnements.

  2. 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.

    Capture d’écran montrant une vue détaillée de l’activité pour un abonnement.

É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.