Partager via


Diagnostics JournaledGrain

Surveillez les erreurs de connexion

Par conception, les fournisseurs de cohérence des journaux sont résilients en cas d’erreurs de connexion (y compris les connexions au stockage et les connexions entre clusters). Mais la tolérance des erreurs ne suffit pas, car les applications doivent généralement surveiller de tels problèmes et les porter à l’attention d’un opérateur s’ils sont sérieux.

Les sous-classes JournaledGrain peuvent remplacer les méthodes suivantes pour recevoir des notifications en cas d’erreurs de connexion observées et lorsque ces erreurs sont résolues :

protected override void OnConnectionIssue(
    ConnectionIssue issue)
{
    /// handle the observed error described by issue
}

protected override void OnConnectionIssueResolved(
    ConnectionIssue issue)
{
    /// handle the resolution of a previously reported issue
}

ConnectionIssue est une classe abstraite, avec plusieurs champs courants décrivant le problème, y compris le nombre de fois où cela a été observé depuis la dernière fois que la connexion a réussi. Le type réel de problème de connexion est défini par les sous-classes. Les problèmes de connexion sont classés en types, tels que PrimaryOperationFailed ou NotificationFailed, et ont parfois des clés supplémentaires (telles que RemoteCluster) qui réduisent davantage la catégorie.

Si la même catégorie de problème se produit plusieurs fois (par exemple, nous obtenons toujours un NotificationFailed qui cible le même RemoteCluster), il est signalé à chaque fois par OnConnectionIssue. Une fois cette catégorie de problème résolue (par exemple, nous avons enfin réussi à envoyer une notification à ce RemoteCluster), OnConnectionIssueResolved est ensuite appelé une fois, avec le même objet issue qui a été signalé en dernier par OnConnectionIssue. Les problèmes de connexion et leur résolution, pour les catégories indépendantes, sont signalés indépendamment.

Statistiques simples

Nous offrons actuellement une prise en charge simple des statistiques de base (à l’avenir, nous allons probablement remplacer cela par un mécanisme de télémétrie plus standard). La collection de statistiques peut être activée ou désactivée pour un JournaledGrain en appelant :

void EnableStatsCollection()
void DisableStatsCollection()

Les statistiques peuvent être récupérées en appelant :

LogConsistencyStatistics GetStats()