Diagnóstico de JournaledGrain
Supervisión de errores de conexión
Por diseño, los proveedores de coherencia de registros son resistentes en caso de errores de conexión (incluidas las conexiones al almacenamiento y las conexiones entre clústeres). Pero no basta con tolerar los errores, ya que las aplicaciones normalmente necesitan supervisar estos problemas y ponerlos en conocimiento de un operador si son graves.
Las subclases JournaledGrain pueden invalidar los métodos siguientes para recibir notificaciones cuando se observan y se resuelven errores de conexión:
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 es una clase abstracta con varios campos comunes que describen el problema, incluido cuántas veces se ha observado desde la última vez que la conexión se realizó correctamente. El tipo real del problema de conexión se define mediante subclases. Los problemas de conexión se clasifican en tipos, como PrimaryOperationFailed o NotificationFailed, y a veces tienen claves adicionales (como RemoteCluster) que limitan aún más la categoría.
Si la misma categoría de problema se produce varias veces (por ejemplo, se sigue obteniendo un objeto NotificationFailed
que tiene como destino el mismo RemoteCluster
), OnConnectionIssue lo notifica cada vez. Una vez que se ha resuelto esta categoría de problema (por ejemplo, finalmente se consigue enviar correctamente una notificación a RemoteCluster
), se llama a OnConnectionIssueResolved una vez con el mismo objeto issue
que OnConnectionIssue
notificó por última vez. Los problemas de conexión (y su resolución) de cada categoría se notifican de forma independiente.
Estadísticas simples
Actualmente ofrecemos una compatibilidad sencilla con estadísticas básicas (en el futuro, probablemente la reemplazaremos por un mecanismo de telemetría más estándar). La recopilación de estadísticas se puede habilitar o deshabilitar para JournaledGrain mediante una llamada a:
void EnableStatsCollection()
void DisableStatsCollection()
Las estadísticas se pueden recuperar mediante una llamada a:
LogConsistencyStatistics GetStats()