Résoudre les problèmes de crochet de service

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Utilisez cet article pour obtenir des conseils généraux de résolution des problèmes et des réponses aux questions fréquemment posées (FAQ).

Afficher les problèmes d’activité et de débogage

La page Crochets de service dans l’administrateur de l’accès web indique 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 de demande/réponse détaillées, ce qui est utile pour le débogage d’un service ou d’un abonnement problématique.

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

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

  2. Pour afficher l’activité détaillée d’un abonnement, y compris les données complètes de demande, de réponse et de charge utile d’événement, sélectionnez un abonnement dans le tableau, puis sélectionnez Historique.

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

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

    Capture d’écran montrant l’affichage des status d’abonnement.

  2. Pour afficher l’activité détaillée d’un abonnement, y compris les données complètes de demande, de réponse et de charge utile d’événement, sélectionnez un abonnement dans la table, puis sélectionnez Historique.

    Capture d’écran montrant l’affichage détaillé de l’activité pour l’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 de terminal est le code d’état HTTP 410 (disparu). Lorsqu’un abonnement voit un échec de terminal, il est automatiquement désactivé, quelle que soit sa status précédente.

É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 la nouvelle tentative 1 attendre ~1 seconde
Avant la nouvelle tentative 2 attendre ~2 secondes (délai total de 3 secondes)
Avant la nouvelle tentative 3 attendre ~4 secondes (délai total de 7 secondes)
Avant la nouvelle tentative 4 attendre ~8 secondes (délai total de 15 secondes)
Avant la nouvelle tentative 5 attendre ~16 secondes (délai total de 31 secondes)
Avant la nouvelle tentative 6 attendre ~32 secondes (délai total de 63 secondes)
Avant la nouvelle tentative 7 attendre ~60 secondes (temps d’arrêt maximal, délai total de 123 secondes)
Avant la nouvelle tentative 8 attendre ~60 secondes (temps d’arrêt maximal, 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’essayer d’envoyer la notification et traite la notification comme s’il voyait un échec durable.

Échecs durables

Les échecs durables incluent tous les autres codes d’échec HTTP, par exemple : 404 (introuvable), 500 (erreur interne du serveur), et ainsi de suite.

Lorsqu’un abonnement voit un échec durable, il est mis en probation.

Probation

Pendant la période de probation, un abonnement est limité dans le nombre de notifications qu’il peut envoyer. Si l’abonnement continue d’atteindre des échecs durables, il devient de plus en plus limité et finalement désactivé. Si l’abonnement reçoit une réponse réussie pendant la période de probation, il est restauré à un état entièrement activé.

Séquence de sept tentatives maximales pendant que l’abonnement est en probation

Lorsqu’un abonnement est en probation, tous les nouveaux événements sont perdus. Une fois qu’une nouvelle tentative a réussi, l’abonnement est activé et les événements sont à nouveau publiés.

Réessayer # Temps d’attente
Avant la nouvelle tentative 1 attendre environ 20 minutes
Avant la nouvelle tentative 2 attendre environ 40 minutes (temps de probation total de 1 heure)
Avant la nouvelle tentative 3 attendre environ 1 heure 20 minutes (temps de probation total de 2,33 heures)
Avant la nouvelle tentative 4 attendre ~2 heures 40 minutes (temps de probation total de 5 heures)
Avant la nouvelle tentative 5 attendre ~5 heures 20 minutes (temps de probation total de 10,33 heures)
Avant la nouvelle tentative 6 attendre environ 10 heures 40 minutes (temps de probation total de 21 heures)
Avant la nouvelle tentative 7 attendre ~15 heures (temps d’interruption maximal, temps de probation total de 36 heures)

Après sept nouvelles tentatives, l’abonnement status est défini sur DisabledBySystem si la notification du consommateur échoue.

Foire aux questions

Q : Quelle est la limite de charge utile d’un service-hook ?

Un: 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 le status Activé (restreint) ?

Un: Un abonnement devient restreint si trop d’échecs se produisent. Activé (restreint) équivaut à être en probation.

Q : Que signifie le status Désactivé (en raison de défaillances) ?

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 . Les types d’échecs temporaires sont retentés plusieurs fois avant d’être déclarés en é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 non disponible), 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 le status Désactivé (projet utilisateur gauche) ?

Un: L’utilisateur qui a créé l’abonnement n’est plus membre de l’équipe.

Q : Que dois-je essayer si un crochet de service ne fonctionne pas ?

Un: Vérifiez les éléments suivants :

  • Vérifier que l’abonnement est activé

  • Vérifiez que les paramètres de l’abonnement sont corrects (filtres d’événements et actions)

  • Examinez l’historique, en particulier en cas d’échecs

Q : Puis-je accorder à un utilisateur de projet normal la possibilité d’afficher et de gérer les abonnements de hook de service pour un projet ?

Un: 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 ?

Un: Oui, utilisez des API REST.