incremental work on cqld4

This commit is contained in:
Jonathan Shook 2020-05-07 15:20:45 -05:00
parent 4278c79006
commit 14afd98d47
3 changed files with 69 additions and 41 deletions

View File

@ -1,7 +1,12 @@
package io.nosqlbench.activitytype.cqld4.core;
import com.datastax.driver.core.*;
import com.datastax.driver.core.policies.*;
import com.datastax.oss.driver.api.core.connection.ReconnectionPolicy;
import com.datastax.oss.driver.api.core.retry.RetryPolicy;
import com.datastax.oss.driver.api.core.session.Session;
import com.datastax.oss.driver.api.core.specex.SpeculativeExecutionPolicy;
import com.datastax.oss.driver.internal.core.connection.ExponentialReconnectionPolicy;
import com.datastax.oss.driver.internal.core.retry.DefaultRetryPolicy;
import com.datastax.oss.driver.internal.core.specex.ConstantSpeculativeExecutionPolicy;
import io.netty.util.HashedWheelTimer;
import io.nosqlbench.nb.api.errors.BasicError;
import org.slf4j.Logger;
@ -69,9 +74,9 @@ public class CQLOptions {
}
public static RetryPolicy retryPolicyFor(String spec) {
public static RetryPolicy retryPolicyFor(String spec, Session session) {
Set<String> retryBehaviors = Arrays.stream(spec.split(",")).map(String::toLowerCase).collect(Collectors.toSet());
RetryPolicy retryPolicy = DefaultRetryPolicy.INSTANCE;
RetryPolicy retryPolicy = new DefaultRetryPolicy(session.getContext(),"default");
if (retryBehaviors.contains("default")) {
return retryPolicy;
@ -84,7 +89,7 @@ public class CQLOptions {
return retryPolicy;
}
public static ReconnectionPolicy reconnectPolicyFor(String spec) {
public static ReconnectionPolicy reconnectPolicyFor(String spec, Session session) {
if(spec.startsWith("exponential(")){
String argsString = spec.substring(12);
String[] args = argsString.substring(0, argsString.length() - 1).split("[,;]");
@ -93,7 +98,7 @@ public class CQLOptions {
}
long baseDelay = Long.parseLong(args[0]);
long maxDelay = Long.parseLong(args[1]);
return new ExponentialReconnectionPolicy(baseDelay,maxDelay);
ExponentialReconnectionPolicy exponentialReconnectionPolicy = new ExponentialReconnectionPolicy(session.getContext());
}else if(spec.startsWith("constant(")){
String argsString = spec.substring(9);
long constantDelayMs= Long.parseLong(argsString.substring(0, argsString.length() - 1));

View File

@ -1,7 +1,6 @@
package io.nosqlbench.activitytype.cqld4.core;
import com.datastax.driver.core.policies.AddressTranslator;
import com.datastax.driver.core.Cluster;
import com.datastax.oss.driver.api.core.addresstranslation.AddressTranslator;
import java.net.InetSocketAddress;
@ -16,11 +15,6 @@ public class ProxyTranslator implements AddressTranslator {
this.address= host;
}
@Override
public void init(Cluster cluster) {
// Nothing to do
}
@Override
public InetSocketAddress translate(InetSocketAddress address) {
return address;

View File

@ -1,57 +1,86 @@
package io.nosqlbench.activitytype.cqld4.errorhandling;
import com.datastax.driver.core.exceptions.*;
import com.datastax.dse.driver.api.core.servererrors.UnfitClientException;
import com.datastax.oss.driver.api.core.*;
import com.datastax.oss.driver.api.core.auth.AuthenticationException;
import com.datastax.oss.driver.api.core.connection.*;
import com.datastax.oss.driver.api.core.servererrors.*;
import com.datastax.oss.driver.api.core.type.codec.CodecNotFoundException;
import com.datastax.oss.driver.internal.core.channel.ClusterNameMismatchException;
import com.datastax.oss.driver.shaded.guava.common.collect.ComputationException;
import io.nosqlbench.activitytype.cqld4.errorhandling.exceptions.*;
import org.apache.tinkerpop.gremlin.driver.exception.ConnectionException;
import java.sql.Driver;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* This enumerates all known exception classes, including supertypes,
* for the purposes of stable naming in error handling.
* This is current as of com.datastax.cassandra:cassandra-driver-core:3.2.0
* This is current as of CQL OSS driver 4.6.0
*/
public class ExceptionMap {
private final static Map<Class<? extends Exception>, Class<? extends Exception>> map
= new LinkedHashMap<Class<? extends Exception>, Class<? extends Exception>>() {
{
put(FrameTooLongException.class, DriverException.class);
put(CodecNotFoundException.class, DriverException.class);
put(AuthenticationException.class, DriverException.class);
put(TraceRetrievalException.class, DriverException.class);
put(UnsupportedProtocolVersionException.class, DriverException.class);
put(NoHostAvailableException.class, DriverException.class);
put(QueryValidationException.class, DriverException.class);
put(InvalidQueryException.class, QueryValidationException.class);
put(InvalidConfigurationInQueryException.class, InvalidQueryException.class);
put(UnauthorizedException.class, QueryValidationException.class);
put(SyntaxError.class, QueryValidationException.class);
put(AlreadyExistsException.class, QueryValidationException.class);
put(AuthenticationException.class, RuntimeException.class);
put(ClusterNameMismatchException.class, RuntimeException.class);
put(CodecNotFoundException.class, RuntimeException.class);
put(ComputationException.class, RuntimeException.class);
put(AllNodesFailedException.class, DriverException.class);
put(NoNodeAvailableException.class, AllNodesFailedException.class);
put(BusyConnectionException.class, DriverException.class);
put(ClosedConnectionException.class, DriverException.class);
put(ConnectionInitException.class, DriverException.class);
put(CoordinatorException.class, DriverException.class);
put(ProtocolError.class, CoordinatorException.class);
put(QueryExecutionException.class, CoordinatorException.class);
put(BootstrappingException.class, QueryExecutionException.class);
put(FunctionFailureException.class, QueryExecutionException.class);
put(OverloadedException.class, QueryExecutionException.class);
put(QueryConsistencyException.class, QueryExecutionException.class);
put(ReadFailureException.class, QueryConsistencyException.class);
put(ReadTimeoutException.class, QueryConsistencyException.class);
put(WriteFailureException.class, QueryConsistencyException.class);
put(WriteTimeoutException.class, QueryConsistencyException.class);
put(TruncateException.class, QueryExecutionException.class);
put(UnavailableException.class, QueryExecutionException.class);
put(QueryValidationException.class, CoordinatorException.class);
put(AlreadyExistsException.class, QueryValidationException.class);
put(InvalidConfigurationInQueryException.class, QueryValidationException.class);
put(InvalidQueryException.class, QueryValidationException.class);
put(SyntaxError.class, QueryValidationException.class);
put(UnauthorizedException.class, QueryValidationException.class);
put(ServerError.class,CoordinatorException.class);
put(UnfitClientException.class, CoordinatorException.class);
put(DriverExecutionException.class, DriverException.class);
put(DriverTimeoutException.class, DriverException.class);
put(FrameTooLongException.class, DriverException.class);
put(HeartbeatException.class,DriverException.class);
put(InvalidKeyspaceException.class,DriverException.class);
put(RequestThrottlingException.class,DriverException.class);
put(UnsupportedProtocolVersionException.class, DriverException.class);
put(UnpreparedException.class, QueryValidationException.class);
put(InvalidTypeException.class, DriverException.class);
put(QueryExecutionException.class, DriverException.class);
put(UnavailableException.class, QueryValidationException.class);
put(BootstrappingException.class, QueryValidationException.class);
put(OverloadedException.class, QueryValidationException.class);
put(TruncateException.class, QueryValidationException.class);
put(QueryConsistencyException.class, QueryValidationException.class);
put(WriteTimeoutException.class, QueryConsistencyException.class);
put(WriteFailureException.class, QueryConsistencyException.class);
put(ReadFailureException.class, QueryConsistencyException.class);
put(ReadTimeoutException.class, QueryConsistencyException.class);
put(FunctionExecutionException.class, QueryValidationException.class);
put(DriverInternalError.class, DriverException.class);
put(ProtocolError.class, DriverInternalError.class);
put(ServerError.class, DriverInternalError.class);
put(BusyPoolException.class, DriverException.class);
put(ConnectionException.class, DriverException.class);
put(TransportException.class, ConnectionException.class);
put(OperationTimedOutException.class, ConnectionException.class);
put(PagingStateException.class, DriverException.class);
put(UnresolvedUserTypeException.class, DriverException.class);
put(UnsupportedFeatureException.class, DriverException.class);
put(BusyConnectionException.class, DriverException.class);
put(ChangeUnappliedCycleException.class, CqlGenericCycleException.class);
put(ResultSetVerificationException.class, CqlGenericCycleException.class);