public static class ErrorAwarePolicy.Builder extends Object
ErrorAwarePolicy
.Constructor and Description |
---|
Builder(LoadBalancingPolicy childPolicy)
Creates a
ErrorAwarePolicy.Builder instance. |
Modifier and Type | Method and Description |
---|---|
ErrorAwarePolicy |
build()
Creates the
ErrorAwarePolicy instance. |
ErrorAwarePolicy.Builder |
withErrorsFilter(ErrorAwarePolicy.ErrorFilter errorFilter)
Provides a filter that will decide which errors are counted towards
withMaxErrorsPerMinute(int) . |
ErrorAwarePolicy.Builder |
withMaxErrorsPerMinute(int maxErrorsPerMinute)
Defines the maximum number of errors allowed per minute for each host.
|
ErrorAwarePolicy.Builder |
withRetryPeriod(long retryPeriod,
TimeUnit retryPeriodTimeUnit)
Defines the time during which a host is excluded by the policy once it has exceeded
withMaxErrorsPerMinute(int) . |
public Builder(LoadBalancingPolicy childPolicy)
ErrorAwarePolicy.Builder
instance.childPolicy
- the load balancing policy to wrap with error
awareness.public ErrorAwarePolicy.Builder withMaxErrorsPerMinute(int maxErrorsPerMinute)
#withErrorsFilter(ErrorFilter)
) over a sliding 1-minute window. If a host had more than this number
of errors, it will be excluded from the query plan for the duration defined by
withRetryPeriod(long, TimeUnit)
.
Default value for the threshold is 1.maxErrorsPerMinute
- the number.ErrorAwarePolicy.Builder
instance, for method chaining.public ErrorAwarePolicy.Builder withRetryPeriod(long retryPeriod, TimeUnit retryPeriodTimeUnit)
withMaxErrorsPerMinute(int)
.
Default value for the retry period is 2 minutes.retryPeriod
- the period of exclusion for a host.retryPeriodTimeUnit
- the time unit for the retry period.ErrorAwarePolicy.Builder
instance, for method chaining.public ErrorAwarePolicy.Builder withErrorsFilter(ErrorAwarePolicy.ErrorFilter errorFilter)
withMaxErrorsPerMinute(int)
.
The default implementation will exclude from the error counting, the following exception types:
QueryConsistencyException
and UnavailableException
: the assumption is that these errors
are most often caused by other replicas being unavailable, not by something wrong on the coordinator;InvalidQueryException
, AlreadyExistsException
, SyntaxError
: these are likely
caused by a bad query in client code, that will fail on all hosts. Excluding hosts could lead to complete
loss of connectivity, rather the solution is to fix the query;FunctionExecutionException
: similarly, this is caused by a bad function definition and likely to
fail on all hosts.errorFilter
- the filter class that the policy will use.ErrorAwarePolicy.Builder
instance, for method chaining.public ErrorAwarePolicy build()
ErrorAwarePolicy
instance.ErrorAwarePolicy
.