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)
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–2015. All rights reserved.