public interface ResultSetFuture extends ListenableFuture<ResultSet>
Modifier and Type | Method and Description |
---|---|
boolean |
cancel(boolean mayInterruptIfRunning)
Attempts to cancel the execution of the request corresponding to this future.
|
ResultSet |
getUninterruptibly()
Waits for the query to return and return its result.
|
ResultSet |
getUninterruptibly(long timeout,
TimeUnit unit)
Waits for the provided time for the query to return and return its result if available.
|
addListener
get, get, isCancelled, isDone
ResultSet getUninterruptibly()
This method is usually more convenient than Future.get()
because it:
InterruptedException
.
NoHostAvailableException
- if no host in the cluster can be contacted successfully to
execute this query.QueryExecutionException
- if the query triggered an execution exception, that is an
exception thrown by Cassandra when it cannot execute the query with the requested
consistency level successfully.QueryValidationException
- if the query is invalid (syntax error, unauthorized or any
other validation problem).ResultSet getUninterruptibly(long timeout, TimeUnit unit) throws TimeoutException
This method is usually more convenient than Future.get()
because it:
InterruptedException
.
timeout
- the time to wait for the query to return.unit
- the unit for timeout
.NoHostAvailableException
- if no host in the cluster can be contacted successfully to
execute this query.QueryExecutionException
- if the query triggered an execution exception, that is an
exception thrown by Cassandra when it cannot execute the query with the requested
consistency level successfully.QueryValidationException
- if the query if invalid (syntax error, unauthorized or any
other validation problem).TimeoutException
- if the wait timed out (Note that this is different from a Cassandra
timeout, which is a QueryExecutionException
).boolean cancel(boolean mayInterruptIfRunning)
Please note that this only cancel the request driver side, but nothing is done to interrupt
the execution of the request Cassandra side (and that even if mayInterruptIfRunning
is
true) since Cassandra does not support such interruption.
This method can be used to ensure no more work is performed driver side (which, while it doesn't include stopping a request already submitted to a Cassandra node, may include not retrying another Cassandra host on failure/timeout) if the ResultSet is not going to be retried. Typically, the code to wait for a request result for a maximum of 1 second could look like:
ResultSetFuture future = session.executeAsync(...some query...); try { ResultSet result = future.get(1, TimeUnit.SECONDS); ... process result ... } catch (TimeoutException e) { future.cancel(true); // Ensure any resource used by this query driver // side is released immediately ... handle timeout ... }
Copyright © 2012–2020. All rights reserved.