Opcionalmente, establezca tiempos de espera al nivel de consulta
Neptune ofrece la posibilidad de definir un tiempo de espera para sus consultas con la opción de grupo de parámetros neptune_query_timeout (consulte Parámetros). También puede anular el tiempo de espera global con un código como este:
final Cluster cluster = Cluster.build("localhost") .port(8182) .maxInProcessPerConnection(32) .maxSimultaneousUsagePerConnection(32) .serializer(Serializers.GRAPHBINARY_V1D0) .create(); try { final GraphTraversalSource g = traversal().withRemote(DriverRemoteConnection.using(cluster)); List<Object> verticesWithNamePumba = g.with(ARGS_EVAL_TIMEOUT, 500L).V().has("name", "pumba").out("friendOf").id().toList(); System.out.println(verticesWithNamePumba); } finally { cluster.close(); }
O bien, para envío de consultas basado en cadenas, el código sería el siguiente:
RequestOptions options = RequestOptions.build().timeout(500).create(); List<Result> result = client.submit("g.V()", options).all().get();
nota
Es posible incurrir en costos inesperados si se establece un valor de tiempo de espera de consulta demasiado alto, especialmente en una instancia sin servidor. Si la configuración del tiempo de espera no es razonable, es posible que la consulta siga ejecutándose durante mucho más tiempo del esperado, lo que dará lugar a costos que no había previsto. Esto ocurre especialmente en una instancia sin servidor que podría escalarse verticalmente hasta convertirse en un tipo de instancia grande y caro mientras se ejecuta la consulta.
Puede evitar gastos inesperados de este tipo si utiliza un valor de tiempo de espera de consulta que se adapte al tiempo de ejecución esperado y que solo provoque un tiempo de espera inusualmente largo.
A partir de la versión 1.3.2.0 del motor de Neptune, Neptune admite un nuevo parámetro neptune_lab_mode como StrictTimeoutValidation. Cuando este parámetro tiene el valor Enabled, el valor de tiempo de espera por consulta especificado como una opción de solicitud o una sugerencia de consulta no puede superar el valor establecido globalmente en el grupo de parámetros. En tal caso, Neptune generará una excepción InvalidParameterException.
Esta configuración se puede confirmar con una respuesta en el punto de conexión “/status” cuando el valor es Disabled, y en 1.3.2.0, el valor predeterminado de este parámetro es Disabled. A partir de 1.4.0.0, StrictTimeoutValidation se modificó para que estuviera Enabled de forma predeterminada.