@Beta public class PercentileSpeculativeExecutionPolicy extends Object implements SpeculativeExecutionPolicy
PerHostPercentileTrackerthat must be registered with the cluster instance:
PerHostPercentileTracker tracker = PerHostPercentileTracker .builderWithHighestTrackableLatencyMillis(15000) .build(); PercentileSpeculativeExecutionPolicy policy = new PercentileSpeculativeExecutionPolicy(tracker, 99.0, 2); cluster = Cluster.builder() .addContactPoint("127.0.0.1") .withSpeculativeExecutionPolicy(policy) .build(); cluster.register(tracker);You must register the tracker with the cluster yourself (as shown on the last line above), this class will not do it itself. This class is currently provided as a beta preview: it hasn't been extensively tested yet, and the API is still subject to change.
|Constructor and Description|
Builds a new instance.
|Modifier and Type||Method and Description|
Gets invoked at cluster shutdown.
Gets invoked at cluster startup.
Returns the plan to use for a new query.
public PercentileSpeculativeExecutionPolicy(PerHostPercentileTracker percentileTracker, double percentile, int maxSpeculativeExecutions)
percentileTracker- the component that will record latencies. Note that this policy doesn't register it with the
Cluster, you must do it yourself (see the code example in this class's Javadoc).
percentile- the percentile that a request's latency must fall into to be considered slow (ex:
maxSpeculativeExecutions- the maximum number of speculative executions that will be triggered for a given request (this does not include the initial, normal request). Must be strictly positive.
public SpeculativeExecutionPolicy.SpeculativeExecutionPlan newPlan(String loggedKeyspace, Statement statement)
loggedKeyspace- the currently logged keyspace (the one set through either
Cluster.connect(String)or by manually doing a
USEquery) for the session on which this plan need to be built. This can be
nullif the corresponding session has no keyspace logged in.
statement- the query for which to build a plan.
public void init(Cluster cluster)