Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
¿Ha recibido errores generales? A continuación se indican algunos problemas comunes y la forma de resolverlos.
Errores generales
Recibe una de las siguientes excepciones de nivel superior que pueden producirse por muchos motivos diferentes.
NoNodeAvailableException
NoHostAvailableException
AllNodesFailedException
Estas excepciones las genera el controlador del cliente y pueden producirse al establecer la conexión de control o al realizar read/write/prepare/execute/batch solicitudes.
Cuando el error se produce al establecer la conexión de control, es una señal de que no se puede acceder a todos los puntos de contacto especificados en la aplicación. Cuando el error se produce al realizar read/write/prepare/execute las consultas, indica que se han agotado todos los reintentos de esa solicitud. Cada reintento se realiza en un nodo diferente cuando se utiliza la política de reintentos predeterminada.
Cómo aislar el error subyacente de las excepciones de los controladores Java de nivel superior
Estos errores generales pueden deberse a problemas de conexión o al realizar read/write/prepare/execute operaciones. Cabe esperar que se produzcan errores transitorios en los sistemas distribuidos, y deben solucionarse reintentando la solicitud. El controlador Java no vuelve a intentarlo automáticamente cuando se producen errores de conexión, por lo que se recomienda implementar la política de reintentos al establecer la conexión del controlador en la aplicación. Para obtener una descripción detallada de las prácticas recomendadas para la conexión, consulte Optimización de las conexiones de los controladores del cliente para el entorno sin servidor.
De forma predeterminada, el controlador Java se establece en false idempotence
para todas las solicitudes, lo que significa que el controlador Java no reintenta automáticamente las read/write/prepare solicitudes fallidas. Para configurar idempotence
como true
e indicarle al controlador que vuelva a intentar las solicitudes fallidas, puede hacerlo de diferentes maneras. Este es un ejemplo de cómo se puede configurar la idempotencia mediante programación para una sola solicitud en su aplicación Java.
Statement s = new SimpleStatement("SELECT * FROM my_table WHERE id = 1");
s.setIdempotent(true);
También puede establecer la idempotencia predeterminada mediante programación para toda la aplicación Java, tal y como se muestra en el siguiente ejemplo.
// Make all statements idempotent by default:
cluster.getConfiguration().getQueryOptions().setDefaultIdempotence(true);
//Set the default idempotency to true in your Cassandra configuration
basic.request.default-idempotence = true
Otra recomendación es crear una política de reintentos en el nivel de la aplicación. En este caso, la aplicación debe detectar la NoNodeAvailableException
y reintentar la solicitud. Recomendamos realizar 10 reintentos con un retroceso exponencial a partir de 10 ms y continuar hasta los 100 ms con un tiempo total de 1 segundo para todos los reintentos.
Otra opción es aplicar la política de reintentos exponenciales de Amazon Keyspaces al establecer la conexión del controlador Java disponible en Github
Confirme que ha establecido conexiones con más de un nodo cuando utilice la política de reintentos predeterminada. Para ello, utilice la siguiente consulta en Amazon Keyspaces.
SELECT * FROM system.peers;
Si la respuesta de esta consulta está vacía, esto indica que está trabajando con un único nodo para Amazon Keyspaces. Si utiliza la política de reintentos predeterminada, no se producirán reintentos porque el reintento predeterminado siempre se produce en un nodo diferente. Para obtener más información sobre cómo establecer conexiones a través de VPC puntos finales, consulte. Configuración de conexiones sobre puntos de conexión de VPC en Amazon Keyspaces
Para ver un step-by-step tutorial que muestra cómo establecer una conexión con Amazon Keyspaces mediante el controlador Cassandra de Datastax 4.x, consulte. Step-by-step tutorial para conectarse a Amazon Keyspaces mediante el controlador DataStax Java 4.x para Apache Cassandra y el complemento de autenticación SigV4