diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseApiException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseApiException.java deleted file mode 100644 index 3d91d75aabc6e2fd930d305e441a9cc602f41025..0000000000000000000000000000000000000000 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseApiException.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.yandex.metrika.clickhouse.except; - -import ru.yandex.metrika.clickhouse.CHException; - -/** - * @author lopashev - * @since 16.02.15 - */ -public class ClickhouseApiException extends CHException { - - public ClickhouseApiException(Integer code, Throwable cause, String host, int port) { - super(code, cause, host, port); - } -} diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseDbException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseDbException.java deleted file mode 100644 index d8655c7aff975ca0b926e22beea908bd43f5055f..0000000000000000000000000000000000000000 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseDbException.java +++ /dev/null @@ -1,14 +0,0 @@ -package ru.yandex.metrika.clickhouse.except; - -import ru.yandex.metrika.clickhouse.CHException; - -/** - * @author lopashev - * @since 16.02.15 - */ -public class ClickhouseDbException extends CHException { - - public ClickhouseDbException(Integer code, Throwable cause, String host, int port) { - super(code, cause, host, port); - } -} diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java index 8ed2963a2487b3f8f5a014582b6b872ca230feae..f4f839e73d1ee6b02a7d0f4c45c47603f7c1d3bc 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java @@ -16,6 +16,7 @@ public enum ClickhouseErrorCode { NOT_IMPLEMENTED (48), LOGICAL_ERROR (49), TYPE_MISMATCH (53), + TABLE_ALREADY_EXISTS (57), UNKNOWN_TABLE (60), SYNTAX_ERROR (62), TOO_MUCH_ROWS (158), @@ -23,12 +24,15 @@ public enum ClickhouseErrorCode { TOO_SLOW (160), TOO_MUCH_TEMPORARY_NON_CONST_COLUMNS (166), TOO_BIG_AST (168), + CYCLIC_ALIASES (174), MULTIPLE_EXPRESSIONS_FOR_ALIAS (179), SET_SIZE_LIMIT_EXCEEDED (191), SOCKET_TIMEOUT (209), NETWORK_ERROR (210), EMPTY_QUERY (211), MEMORY_LIMIT_EXCEEDED (241), + TOO_MUCH_PARTS (252), + DOUBLE_DISTRIBUTED (288), POCO_EXCEPTION (1000), UNKNOWN_EXCEPTION (1002); @@ -46,38 +50,6 @@ public enum ClickhouseErrorCode { this.code = code; } - public static final Set<ClickhouseErrorCode> ALL = Collections.unmodifiableSet(EnumSet.allOf(ClickhouseErrorCode.class)); - - public static final Set<ClickhouseErrorCode> API = Collections.unmodifiableSet(EnumSet.of( - EMPTY_QUERY, - NOT_FOUND_COLUMN_IN_BLOCK, - ILLEGAL_TYPE_OF_ARGUMENT, - ILLEGAL_COLUMN, - UNKNOWN_IDENTIFIER, - NOT_IMPLEMENTED, - LOGICAL_ERROR, - TYPE_MISMATCH, - UNKNOWN_TABLE, - SYNTAX_ERROR, - TOO_MUCH_TEMPORARY_NON_CONST_COLUMNS, - TOO_BIG_AST, - MULTIPLE_EXPRESSIONS_FOR_ALIAS, - SET_SIZE_LIMIT_EXCEEDED, - MEMORY_LIMIT_EXCEEDED - )); - - public static final Set<ClickhouseErrorCode> DB = Collections.unmodifiableSet(EnumSet.of( - ATTEMPT_TO_READ_AFTER_EOF, - SOCKET_TIMEOUT, - NETWORK_ERROR, - POCO_EXCEPTION - )); - - public static final Set<ClickhouseErrorCode> QUERY = Collections.unmodifiableSet(EnumSet.of( - TOO_MUCH_ROWS, - TIMEOUT_EXCEEDED, - TOO_SLOW - )); public static ClickhouseErrorCode fromCode(Integer code) { return byCodes.get(code); diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java index 56c3b489b6e90f29ed0200c8d15e6334b7a6e445..5c9ccce5c142f6bb42ef554964b0eaf6040f14dd 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java @@ -36,41 +36,6 @@ public final class ClickhouseExceptionSpecifier { private static final Logger log = Logger.of(ClickhouseExceptionSpecifier.class); - private static final Map<Integer, ClickhouseExceptionFactory> FACTORIES; - - static { - Map<Integer, ClickhouseExceptionFactory> map = new HashMap<Integer, ClickhouseExceptionFactory>(); - for (ClickhouseErrorCode errorCode : ClickhouseErrorCode.API) - map.put(errorCode.code, new ClickhouseExceptionFactory() { - @Override - public CHException create(Integer code, Throwable cause, String host, int port) { - return new ClickhouseApiException(code, cause, host, port); - } - }); - for (ClickhouseErrorCode errorCode : ClickhouseErrorCode.DB) - map.put(errorCode.code, new ClickhouseExceptionFactory() { - @Override - public CHException create(Integer code, Throwable cause, String host, int port) { - return new ClickhouseDbException(code, cause, host, port); - } - }); - for (ClickhouseErrorCode errorCode : ClickhouseErrorCode.QUERY) - map.put(errorCode.code, new ClickhouseExceptionFactory() { - @Override - public CHException create(Integer code, Throwable cause, String host, int port) { - return new ClickhouseQueryException(code, cause, host, port); - } - }); - FACTORIES = Collections.unmodifiableMap(map); - } - - private static final ClickhouseExceptionFactory DEFAULT_FACTORY = new ClickhouseExceptionFactory() { - @Override - public CHException create(Integer code, Throwable cause, String host, int port) { - return new ClickhouseUnhandledException(code, cause, host, port); - } - }; - private ClickhouseExceptionSpecifier() { } @@ -92,11 +57,11 @@ public final class ClickhouseExceptionSpecifier { if (cause instanceof SocketTimeoutException) // еÑли приехал STE, то Ñкажем, что Ñто Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð¾Ñ…Ð¾Ð¹, Ñто не то же Ñамое, что SOCKET_TIMEOUT от кликхауÑа // Ñ…Ð¾Ñ‚Ñ Ñто также может значить падающий кликхауÑ, поÑмотрим что выглÑдит правдоподобнее - return new ClickhouseQueryException(ClickhouseErrorCode.TIMEOUT_EXCEEDED.code, cause, host, port); + return new CHException(ClickhouseErrorCode.TIMEOUT_EXCEEDED.code, cause, host, port); else if (cause instanceof ConnectTimeoutException || cause instanceof ConnectException) // не Ñмогли ÑоединитьÑÑ Ñ ÐºÐ»Ð¸ÐºÑ…Ð°ÑƒÑом за connectTimeout - в принципе, может быть никто не виноват // Ñреди наших ÑущноÑтей (query/api/db), но обвинить кого-то надо, и Ñто будет db - return new ClickhouseDbException(ClickhouseErrorCode.NETWORK_ERROR.code, cause, host, port); + return new CHException(ClickhouseErrorCode.NETWORK_ERROR.code, cause, host, port); else return new ClickhouseUnhandledException(cause, host, port); } @@ -110,11 +75,7 @@ public final class ClickhouseExceptionSpecifier { } // ошибку в изначальном виде вÑе-таки укажем Throwable messageHolder = cause != null ? cause : new Throwable(clickhouseMessage); - if (FACTORIES.containsKey(code)) { - return FACTORIES.get(code).create(code, messageHolder, host, port); - } else { - return DEFAULT_FACTORY.create(code, messageHolder, host, port); - } + return new CHException(code, messageHolder, host, port); } catch (Exception e) { log.error("Unsupported clickhouse error format, please fix ClickhouseExceptionSpecifier, message: " + clickhouseMessage + ", error: " + e.getMessage()); diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseQueryException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseQueryException.java deleted file mode 100644 index 3427f1c85e7c4682943e1a165f568eac039c849b..0000000000000000000000000000000000000000 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseQueryException.java +++ /dev/null @@ -1,15 +0,0 @@ -package ru.yandex.metrika.clickhouse.except; - - -import ru.yandex.metrika.clickhouse.CHException; - -/** - * @author lopashev - * @since 16.02.15 - */ -public class ClickhouseQueryException extends CHException { - - public ClickhouseQueryException(Integer code, Throwable cause, String host, int port) { - super(code, cause, host, port); - } -}