From 63270020572191310f27464b8c5bca6916d2b060 Mon Sep 17 00:00:00 2001 From: serebrserg <serebrserg@yandex-team.ru> Date: Tue, 29 Mar 2016 17:23:44 +0300 Subject: [PATCH] METR-20494: Clickhouse -> CH everywhere --- .../metrika/clickhouse/CHConnectionImpl.java | 4 +-- .../metrika/clickhouse/CHStatement.java | 8 +++--- .../metrika/clickhouse/CHStatementImpl.java | 27 ++++++++++--------- ...ckhouseLZ4Stream.java => CHLZ4Stream.java} | 4 +-- ...lickhouseResponse.java => CHResponse.java} | 2 +- ...ckhouseErrorCode.java => CHErrorCode.java} | 12 ++++----- .../clickhouse/{ => except}/CHException.java | 2 +- ...ecifier.java => CHExceptionSpecifier.java} | 18 +++++-------- .../clickhouse/except/CHUnknownException.java | 22 +++++++++++++++ .../except/ClickhouseUnhandledException.java | 24 ----------------- 10 files changed, 59 insertions(+), 64 deletions(-) rename src/main/java/ru/yandex/metrika/clickhouse/copypaste/{ClickhouseLZ4Stream.java => CHLZ4Stream.java} (96%) rename src/main/java/ru/yandex/metrika/clickhouse/copypaste/{ClickhouseResponse.java => CHResponse.java} (98%) rename src/main/java/ru/yandex/metrika/clickhouse/except/{ClickhouseErrorCode.java => CHErrorCode.java} (84%) rename src/main/java/ru/yandex/metrika/clickhouse/{ => except}/CHException.java (92%) rename src/main/java/ru/yandex/metrika/clickhouse/except/{ClickhouseExceptionSpecifier.java => CHExceptionSpecifier.java} (88%) create mode 100644 src/main/java/ru/yandex/metrika/clickhouse/except/CHUnknownException.java delete mode 100644 src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseUnhandledException.java diff --git a/src/main/java/ru/yandex/metrika/clickhouse/CHConnectionImpl.java b/src/main/java/ru/yandex/metrika/clickhouse/CHConnectionImpl.java index a4057da1..d0d18754 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/CHConnectionImpl.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/CHConnectionImpl.java @@ -2,7 +2,7 @@ package ru.yandex.metrika.clickhouse; import org.apache.http.impl.client.CloseableHttpClient; import ru.yandex.metrika.clickhouse.copypaste.CHProperties; -import ru.yandex.metrika.clickhouse.except.ClickhouseUnhandledException; +import ru.yandex.metrika.clickhouse.except.CHUnknownException; import ru.yandex.metrika.clickhouse.util.CHHttpClientBuilder; import ru.yandex.metrika.clickhouse.util.LogProxy; import ru.yandex.metrika.clickhouse.util.Logger; @@ -118,7 +118,7 @@ public class CHConnectionImpl implements CHConnection { httpclient.close(); closed = true; } catch (IOException e) { - throw new ClickhouseUnhandledException("HTTP client close exception", e, dataSource.getHost(), dataSource.getPort()); + throw new CHUnknownException("HTTP client close exception", e, dataSource.getHost(), dataSource.getPort()); } } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/CHStatement.java b/src/main/java/ru/yandex/metrika/clickhouse/CHStatement.java index 54892ec0..42294bfa 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/CHStatement.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/CHStatement.java @@ -1,7 +1,7 @@ package ru.yandex.metrika.clickhouse; import ru.yandex.metrika.clickhouse.copypaste.CHQueryParam; -import ru.yandex.metrika.clickhouse.copypaste.ClickhouseResponse; +import ru.yandex.metrika.clickhouse.copypaste.CHResponse; import java.io.InputStream; import java.sql.ResultSet; @@ -14,9 +14,9 @@ import java.util.Map; * @since 22.03.16 */ public interface CHStatement extends Statement { - ClickhouseResponse executeQueryClickhouseResponse(String sql) throws SQLException; - ClickhouseResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams) throws SQLException; - ClickhouseResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams, boolean ignoreDatabase) throws SQLException; + CHResponse executeQueryClickhouseResponse(String sql) throws SQLException; + CHResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams) throws SQLException; + CHResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams, boolean ignoreDatabase) throws SQLException; ResultSet executeQuery(String sql, Map<CHQueryParam, String> additionalDBParams) throws SQLException; void sendStream(InputStream content, String table) throws SQLException; } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/CHStatementImpl.java b/src/main/java/ru/yandex/metrika/clickhouse/CHStatementImpl.java index f551e1f0..7ea82d47 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/CHStatementImpl.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/CHStatementImpl.java @@ -10,7 +10,8 @@ import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.util.EntityUtils; import ru.yandex.metrika.clickhouse.copypaste.*; -import ru.yandex.metrika.clickhouse.except.ClickhouseExceptionSpecifier; +import ru.yandex.metrika.clickhouse.except.CHException; +import ru.yandex.metrika.clickhouse.except.CHExceptionSpecifier; import ru.yandex.metrika.clickhouse.util.CopypasteUtils; import ru.yandex.metrika.clickhouse.util.Logger; @@ -68,7 +69,7 @@ public class CHStatementImpl implements CHStatement { InputStream is = getInputStream(sql, additionalDBParams, false); try { currentResult = new CHResultSet(properties.isCompress() - ? new ClickhouseLZ4Stream(is) : is, properties.getBufferSize(), + ? new CHLZ4Stream(is) : is, properties.getBufferSize(), extractDBName(sql), extractTableName(sql) ); @@ -76,29 +77,29 @@ public class CHStatementImpl implements CHStatement { return currentResult; } catch (Exception e){ CopypasteUtils.close(is); - throw ClickhouseExceptionSpecifier.specify(e, source.getHost(), source.getPort()); + throw CHExceptionSpecifier.specify(e, source.getHost(), source.getPort()); } } - public ClickhouseResponse executeQueryClickhouseResponse(String sql) throws SQLException { + public CHResponse executeQueryClickhouseResponse(String sql) throws SQLException { return executeQueryClickhouseResponse(sql, null); } - public ClickhouseResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams) throws SQLException { + public CHResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams) throws SQLException { return executeQueryClickhouseResponse(sql, additionalDBParams, false); } - public ClickhouseResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams, boolean ignoreDatabase) throws SQLException { + public CHResponse executeQueryClickhouseResponse(String sql, Map<CHQueryParam, String> additionalDBParams, boolean ignoreDatabase) throws SQLException { InputStream is = getInputStream(clickhousifySql(sql, "JSONCompact"), additionalDBParams, ignoreDatabase); try { byte[] bytes = null; try { if (properties.isCompress()){ - bytes = CopypasteUtils.toByteArray(new ClickhouseLZ4Stream(is)); + bytes = CopypasteUtils.toByteArray(new CHLZ4Stream(is)); } else { bytes = CopypasteUtils.toByteArray(is); } - return objectMapper.readValue(bytes, ClickhouseResponse.class); + return objectMapper.readValue(bytes, CHResponse.class); } catch (IOException e) { if (bytes != null) log.warn("Wrong json: "+new String(bytes)); throw e; @@ -419,14 +420,14 @@ public class CHStatementImpl implements CHStatement { try { InputStream messageStream = entity.getContent(); if (properties.isCompress()) { - messageStream = new ClickhouseLZ4Stream(messageStream); + messageStream = new CHLZ4Stream(messageStream); } chMessage = CopypasteUtils.toString(messageStream); } catch (IOException e) { chMessage = "error while read response " + e.getMessage(); } EntityUtils.consumeQuietly(entity); - throw ClickhouseExceptionSpecifier.specify(chMessage, source.getHost(), source.getPort()); + throw CHExceptionSpecifier.specify(chMessage, source.getHost(), source.getPort()); } if (entity.isStreaming()) { is = entity.getContent(); @@ -443,7 +444,7 @@ public class CHStatementImpl implements CHStatement { EntityUtils.consumeQuietly(entity); CopypasteUtils.close(is); log.info("Error sql: " + sql); - throw ClickhouseExceptionSpecifier.specify(e, source.getHost(), source.getPort()); + throw CHExceptionSpecifier.specify(e, source.getHost(), source.getPort()); } } @@ -465,12 +466,12 @@ public class CHStatementImpl implements CHStatement { } catch (IOException e) { chMessage = "error while read response "+ e.getMessage(); } - throw ClickhouseExceptionSpecifier.specify(chMessage, source.getHost(), source.getPort()); + throw CHExceptionSpecifier.specify(chMessage, source.getHost(), source.getPort()); } } catch (CHException e) { throw e; } catch (Exception e) { - throw ClickhouseExceptionSpecifier.specify(e, source.getHost(), source.getPort()); + throw CHExceptionSpecifier.specify(e, source.getHost(), source.getPort()); } finally { EntityUtils.consumeQuietly(entity); } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseLZ4Stream.java b/src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHLZ4Stream.java similarity index 96% rename from src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseLZ4Stream.java rename to src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHLZ4Stream.java index ee2cae2d..f52af35b 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseLZ4Stream.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHLZ4Stream.java @@ -12,7 +12,7 @@ import java.io.InputStream; * @author jkee */ -public class ClickhouseLZ4Stream extends InputStream { +public class CHLZ4Stream extends InputStream { private static final LZ4Factory factory = LZ4Factory.safeInstance(); @@ -24,7 +24,7 @@ public class ClickhouseLZ4Stream extends InputStream { private byte[] currentBlock; private int pointer; - public ClickhouseLZ4Stream(InputStream stream) { + public CHLZ4Stream(InputStream stream) { this.stream = stream; dataWrapper = new LittleEndianDataInputStream(stream); } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseResponse.java b/src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHResponse.java similarity index 98% rename from src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseResponse.java rename to src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHResponse.java index 410b76f8..a3340d8e 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/copypaste/ClickhouseResponse.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/copypaste/CHResponse.java @@ -8,7 +8,7 @@ import java.util.List; * ÐœÑп-объект Ð´Ð»Ñ Ð´Ð¶ÐµÐºÑона Ð´Ð»Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð° кликхауÑа * @author jkee */ -public class ClickhouseResponse { +public class CHResponse { private List<Meta> meta; @JsonDeserialize(contentUsing = ArrayToStringDeserializer.class) private List<List<String>> data; diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java b/src/main/java/ru/yandex/metrika/clickhouse/except/CHErrorCode.java similarity index 84% rename from src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java rename to src/main/java/ru/yandex/metrika/clickhouse/except/CHErrorCode.java index f4f839e7..d9b8b707 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseErrorCode.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/CHErrorCode.java @@ -6,7 +6,7 @@ import java.util.*; * @author lopashev * @since 18.02.15 */ -public enum ClickhouseErrorCode { +public enum CHErrorCode { OK (0), NOT_FOUND_COLUMN_IN_BLOCK (10), ATTEMPT_TO_READ_AFTER_EOF (32), @@ -38,20 +38,20 @@ public enum ClickhouseErrorCode { public final Integer code; - private static final Map<Integer, ClickhouseErrorCode> byCodes; + private static final Map<Integer, CHErrorCode> byCodes; static { - Map<Integer, ClickhouseErrorCode> map = new HashMap<Integer, ClickhouseErrorCode>(); - for (ClickhouseErrorCode errorCode : values()) + Map<Integer, CHErrorCode> map = new HashMap<Integer, CHErrorCode>(); + for (CHErrorCode errorCode : values()) map.put(errorCode.code, errorCode); byCodes = Collections.unmodifiableMap(map); } - ClickhouseErrorCode(Integer code) { + CHErrorCode(Integer code) { this.code = code; } - public static ClickhouseErrorCode fromCode(Integer code) { + public static CHErrorCode fromCode(Integer code) { return byCodes.get(code); } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/CHException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/CHException.java similarity index 92% rename from src/main/java/ru/yandex/metrika/clickhouse/CHException.java rename to src/main/java/ru/yandex/metrika/clickhouse/except/CHException.java index 92d6a563..0c4c6518 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/CHException.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/CHException.java @@ -1,4 +1,4 @@ -package ru.yandex.metrika.clickhouse; +package ru.yandex.metrika.clickhouse.except; import java.sql.SQLException; diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java b/src/main/java/ru/yandex/metrika/clickhouse/except/CHExceptionSpecifier.java similarity index 88% rename from src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java rename to src/main/java/ru/yandex/metrika/clickhouse/except/CHExceptionSpecifier.java index 5c9ccce5..36b7e63e 100644 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseExceptionSpecifier.java +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/CHExceptionSpecifier.java @@ -1,15 +1,11 @@ package ru.yandex.metrika.clickhouse.except; import org.apache.http.conn.ConnectTimeoutException; -import ru.yandex.metrika.clickhouse.CHException; import ru.yandex.metrika.clickhouse.util.CopypasteUtils; import ru.yandex.metrika.clickhouse.util.Logger; import java.net.ConnectException; import java.net.SocketTimeoutException; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; /** @@ -32,11 +28,11 @@ import java.util.Map; * https://github.yandex-team.ru/Metrika/metrika-core/blob/master/metrica/src/dbms/include/DB/Core/ErrorCodes.h */ -public final class ClickhouseExceptionSpecifier { +public final class CHExceptionSpecifier { - private static final Logger log = Logger.of(ClickhouseExceptionSpecifier.class); + private static final Logger log = Logger.of(CHExceptionSpecifier.class); - private ClickhouseExceptionSpecifier() { + private CHExceptionSpecifier() { } public static CHException specify(Throwable cause, String host, int port) { @@ -57,13 +53,13 @@ public final class ClickhouseExceptionSpecifier { if (cause instanceof SocketTimeoutException) // еÑли приехал STE, то Ñкажем, что Ñто Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð»Ð¾Ñ…Ð¾Ð¹, Ñто не то же Ñамое, что SOCKET_TIMEOUT от кликхауÑа // Ñ…Ð¾Ñ‚Ñ Ñто также может значить падающий кликхауÑ, поÑмотрим что выглÑдит правдоподобнее - return new CHException(ClickhouseErrorCode.TIMEOUT_EXCEEDED.code, cause, host, port); + return new CHException(CHErrorCode.TIMEOUT_EXCEEDED.code, cause, host, port); else if (cause instanceof ConnectTimeoutException || cause instanceof ConnectException) // не Ñмогли ÑоединитьÑÑ Ñ ÐºÐ»Ð¸ÐºÑ…Ð°ÑƒÑом за connectTimeout - в принципе, может быть никто не виноват // Ñреди наших ÑущноÑтей (query/api/db), но обвинить кого-то надо, и Ñто будет db - return new CHException(ClickhouseErrorCode.NETWORK_ERROR.code, cause, host, port); + return new CHException(CHErrorCode.NETWORK_ERROR.code, cause, host, port); else - return new ClickhouseUnhandledException(cause, host, port); + return new CHUnknownException(cause, host, port); } try { int code; @@ -79,7 +75,7 @@ public final class ClickhouseExceptionSpecifier { } catch (Exception e) { log.error("Unsupported clickhouse error format, please fix ClickhouseExceptionSpecifier, message: " + clickhouseMessage + ", error: " + e.getMessage()); - return new ClickhouseUnhandledException(clickhouseMessage, cause, host, port); + return new CHUnknownException(clickhouseMessage, cause, host, port); } } diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/CHUnknownException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/CHUnknownException.java new file mode 100644 index 00000000..4b310835 --- /dev/null +++ b/src/main/java/ru/yandex/metrika/clickhouse/except/CHUnknownException.java @@ -0,0 +1,22 @@ +package ru.yandex.metrika.clickhouse.except; + +/** + * @author lopashev + * @since 16.02.15 + */ +public class CHUnknownException extends CHException { + + public CHUnknownException(Throwable cause, String host, int port) { + super(CHErrorCode.UNKNOWN_EXCEPTION.code, cause, host, port); + } + + + public CHUnknownException(String message, Throwable cause, String host, int port) { + super(CHErrorCode.UNKNOWN_EXCEPTION.code, message, cause, host, port); + } + + public CHUnknownException(Integer code, Throwable cause, String host, int port) { + super(code, cause, host, port); + } + +} diff --git a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseUnhandledException.java b/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseUnhandledException.java deleted file mode 100644 index 016a6805..00000000 --- a/src/main/java/ru/yandex/metrika/clickhouse/except/ClickhouseUnhandledException.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.yandex.metrika.clickhouse.except; - -import ru.yandex.metrika.clickhouse.CHException; - -/** - * @author lopashev - * @since 16.02.15 - */ -public class ClickhouseUnhandledException extends CHException { - - public ClickhouseUnhandledException(Throwable cause, String host, int port) { - super(ClickhouseErrorCode.UNKNOWN_EXCEPTION.code, cause, host, port); - } - - - public ClickhouseUnhandledException(String message, Throwable cause, String host, int port) { - super(ClickhouseErrorCode.UNKNOWN_EXCEPTION.code, message, cause, host, port); - } - - public ClickhouseUnhandledException(Integer code, Throwable cause, String host, int port) { - super(code, cause, host, port); - } - -} -- GitLab