in core/src/main/java/com/datastax/oss/driver/internal/core/cql/Conversions.java [447:536]
public static CoordinatorException toThrowable(
Node node, Error errorMessage, InternalDriverContext context) {
switch (errorMessage.code) {
case ProtocolConstants.ErrorCode.UNPREPARED:
throw new AssertionError(
"UNPREPARED should be handled as a special case, not turned into an exception");
case ProtocolConstants.ErrorCode.SERVER_ERROR:
return new ServerError(node, errorMessage.message);
case ProtocolConstants.ErrorCode.PROTOCOL_ERROR:
return new ProtocolError(node, errorMessage.message);
case ProtocolConstants.ErrorCode.AUTH_ERROR:
// This method is used for query execution, authentication errors should only happen during
// connection init
return new ProtocolError(
node, "Unexpected authentication error (" + errorMessage.message + ")");
case ProtocolConstants.ErrorCode.UNAVAILABLE:
Unavailable unavailable = (Unavailable) errorMessage;
return new UnavailableException(
node,
context.getConsistencyLevelRegistry().codeToLevel(unavailable.consistencyLevel),
unavailable.required,
unavailable.alive);
case ProtocolConstants.ErrorCode.OVERLOADED:
return new OverloadedException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.IS_BOOTSTRAPPING:
return new BootstrappingException(node);
case ProtocolConstants.ErrorCode.TRUNCATE_ERROR:
return new TruncateException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.WRITE_TIMEOUT:
WriteTimeout writeTimeout = (WriteTimeout) errorMessage;
return new WriteTimeoutException(
node,
context.getConsistencyLevelRegistry().codeToLevel(writeTimeout.consistencyLevel),
writeTimeout.received,
writeTimeout.blockFor,
context.getWriteTypeRegistry().fromName(writeTimeout.writeType));
case ProtocolConstants.ErrorCode.READ_TIMEOUT:
ReadTimeout readTimeout = (ReadTimeout) errorMessage;
return new ReadTimeoutException(
node,
context.getConsistencyLevelRegistry().codeToLevel(readTimeout.consistencyLevel),
readTimeout.received,
readTimeout.blockFor,
readTimeout.dataPresent);
case ProtocolConstants.ErrorCode.READ_FAILURE:
ReadFailure readFailure = (ReadFailure) errorMessage;
return new ReadFailureException(
node,
context.getConsistencyLevelRegistry().codeToLevel(readFailure.consistencyLevel),
readFailure.received,
readFailure.blockFor,
readFailure.numFailures,
readFailure.dataPresent,
readFailure.reasonMap);
case ProtocolConstants.ErrorCode.FUNCTION_FAILURE:
return new FunctionFailureException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.WRITE_FAILURE:
WriteFailure writeFailure = (WriteFailure) errorMessage;
return new WriteFailureException(
node,
context.getConsistencyLevelRegistry().codeToLevel(writeFailure.consistencyLevel),
writeFailure.received,
writeFailure.blockFor,
context.getWriteTypeRegistry().fromName(writeFailure.writeType),
writeFailure.numFailures,
writeFailure.reasonMap);
case ProtocolConstants.ErrorCode.CDC_WRITE_FAILURE:
return new CDCWriteFailureException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.CAS_WRITE_UNKNOWN:
CASWriteUnknown casFailure = (CASWriteUnknown) errorMessage;
return new CASWriteUnknownException(
node,
context.getConsistencyLevelRegistry().codeToLevel(casFailure.consistencyLevel),
casFailure.received,
casFailure.blockFor);
case ProtocolConstants.ErrorCode.SYNTAX_ERROR:
return new SyntaxError(node, errorMessage.message);
case ProtocolConstants.ErrorCode.UNAUTHORIZED:
return new UnauthorizedException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.INVALID:
return new InvalidQueryException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.CONFIG_ERROR:
return new InvalidConfigurationInQueryException(node, errorMessage.message);
case ProtocolConstants.ErrorCode.ALREADY_EXISTS:
AlreadyExists alreadyExists = (AlreadyExists) errorMessage;
return new AlreadyExistsException(node, alreadyExists.keyspace, alreadyExists.table);
default:
return new ProtocolError(node, "Unknown error code: " + errorMessage.code);
}
}