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.
|
get, get, isCancelled, isDone
ResultSet getUninterruptibly()
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
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)
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 ... }