Manejo de errores en caché
Hay escenarios donde NCache Las operaciones del cliente pueden fallar debido a varios errores, como se demuestra a continuación.
La clave especificada existe en la memoria caché
- Tipo de excepción:
OperationFailedException
Mensaje: "La clave especificada ya existe en la memoria caché".
Razón: Esta excepción es específica de la Añada API si se usa la misma clave con el objeto. La operación solo agrega un elemento al caché si la clave dada no existe previamente. Agrega datos al caché por primera vez cuando la clave no existe dentro del caché.
Puede manejar esto de las siguientes maneras según los requisitos de su negocio:
- Especifique una nueva clave para el objeto que está tratando de agregar.
- Uso recuadro API si se usa la misma clave con el objeto.
- Uso Eliminar API si se usa la misma clave con el objeto. Elimine el objeto primero y luego agréguelo nuevamente al caché con la misma clave.
Fallo de conexión
- Tipo de excepción:
OperationFailedException
Mensaje: "La operación se ha interrumpido debido a una pérdida de conectividad entre el servidor y el cliente".
Razón: Las operaciones pueden fallar en caso de que se pierda una conexión entre el servidor y el cliente. Esto podría deberse a una falla en la red o una interrupción física entre el cliente y el servidor.
Puede encontrarse con esta excepción si se interrumpe una conexión ya establecida con el servidor. En tal caso, se recomienda resolver primero la causa de la red y luego volver a intentar la operación si es muy necesaria.
No hay servidor disponible para procesar la solicitud
- Tipo de excepción:
OperationFailedException
Mensaje: "No hay servidor disponible para procesar la solicitud".
Razón: Puede encontrar esta excepción si el caché no está disponible debido a una detención o inaccesibilidad.
Tiempo de expiración de operación
- Tipo de excepción:
OperationFailedException
Mensaje: "Operación agotada".
Razón: En caso de transacciones pesadas en el servidor, las operaciones entrantes del cliente pueden ponerse en cola mientras el servidor procesa las operaciones actuales. Cada operación de cliente de caché tiene un valor de tiempo de espera configurable asociado. Esto significa que si el servidor de caché no responde a la operación dentro del tiempo dado, la operación se considerará fallida aunque realmente no haya fallado, o no haya tenido éxito, en realidad.
No se recomienda volver a intentar inmediatamente una operación cuyo tiempo de espera se agotó, ya que aún puede provocar que se agote el tiempo de espera nuevamente si el servidor aún está procesando las operaciones anteriores. Por lo tanto, se recomienda que si tu negocio lo permite, amplía el valor de tiempo de espera antes de volver a intentar la operación.
In NCache, el valor de tiempo de espera predeterminado es de 90 segundos durante los cuales se debe completar una operación de cliente. En caso de que desee que la operación espere más, puede configurar el client-request-timeout
valor de la cliente.ncconf archivo.
Operación realizada durante la transferencia de estado
- Tipo de excepción:
OperationFailedException
Mensaje: "La operación no se pudo completar debido a la transferencia estatal".
Razón: Una vez que cambia el estado de distribución del clúster, se requiere coherencia inmediata de los datos en todo el clúster, especialmente para las topologías particionadas y de réplica de partición. Este cambio de estado se produce debido a que los nodos se unen o abandonan el clúster. Esto significa que una vez que un nodo se une al clúster, el nodo recién agregado debe recibir los datos de la caché de acuerdo con la distribución. De manera similar, si un nodo abandona el clúster, los datos se redistribuyen entre los nodos restantes.
Para atender este problema, NCache inicia internamente una transferencia de estado: un mecanismo de transferencia de datos a nivel de nodo, que se activa después de que se cambia la distribución de datos en una memoria caché agrupada.
Puede ocurrir una transferencia de estado entre dos nodos de un solo clúster, donde los datos se transfieren depósito por depósito. El nodo solicitante inicia la transferencia de estado bloqueando ese depósito específico. Se registran todas las operaciones que se realizan en este depósito durante la transferencia de estado. Estas operaciones pueden generar duplicados o menos resultados de los esperados, ya que puede existir el mismo depósito en ambos nodos durante la transferencia o ninguno. Una vez que un depósito se transfiere por completo, las operaciones registradas se transfieren al nodo solicitante.
Se recomienda monitorear los contadores State Transfer PerfMon para su caché después de cada cambio en el clúster. Una vez que los contadores muestran que la transferencia de estado está completa, puede continuar con la realización de operaciones en el caché.
Vea también
Cómo conectarse a la memoria caché
Agregar datos a la caché
Recuperar datos de caché existentes
Quitar datos de la caché
Crear caché