From 0e0ce880885013586fb8a4511c57bf421e344229 Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Sat, 28 Aug 2021 10:15:25 +0800 Subject: [PATCH 1/4] Fix concurrency issue --- .../yandex/clickhouse/jdbcbridge/JdbcBridgeVerticle.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/ru/yandex/clickhouse/jdbcbridge/JdbcBridgeVerticle.java b/src/main/java/ru/yandex/clickhouse/jdbcbridge/JdbcBridgeVerticle.java index 7523b4b..3db8f6c 100755 --- a/src/main/java/ru/yandex/clickhouse/jdbcbridge/JdbcBridgeVerticle.java +++ b/src/main/java/ru/yandex/clickhouse/jdbcbridge/JdbcBridgeVerticle.java @@ -83,6 +83,8 @@ public class JdbcBridgeVerticle extends AbstractVerticle implements ExtensionMan private static volatile long startTime; private static final String CONFIG_PATH = Utils.getConfiguration("config", "CONFIG_DIR", "jdbc-bridge.config.dir"); + private static final boolean SERIAL_MODE = Boolean + .valueOf(Utils.getConfiguration("false", "SERIAL_MODE", "jdbc-bridge.serial.mode")); private static final int DEFAULT_SERVER_PORT = 9019; @@ -264,10 +266,10 @@ private void startServer(JsonObject bridgeServerConfig, JsonObject httpServerCon .handler(this::handleIdentifierQuote); router.post("/columns_info").produces(RESPONSE_CONTENT_TYPE).handler(queryTimeoutHandler) .handler(this::handleColumnsInfo); - router.post("/").produces(RESPONSE_CONTENT_TYPE).handler(queryTimeoutHandler) - .blockingHandler(this::handleQuery); + router.post("/").produces(RESPONSE_CONTENT_TYPE).handler(queryTimeoutHandler).blockingHandler(this::handleQuery, + SERIAL_MODE); router.post("/write").produces(RESPONSE_CONTENT_TYPE).handler(queryTimeoutHandler) - .blockingHandler(this::handleWrite); + .blockingHandler(this::handleWrite, SERIAL_MODE); log.info("Starting web server..."); int port = bridgeServerConfig.getInteger("serverPort", DEFAULT_SERVER_PORT); From 46d5e6cd674d4472b7c57c3bc836edc9a1d52304 Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Sat, 28 Aug 2021 10:16:03 +0800 Subject: [PATCH 2/4] Catch throwable in case driver throws out error like jtds --- .../ru/yandex/clickhouse/jdbcbridge/impl/JdbcDataSource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/yandex/clickhouse/jdbcbridge/impl/JdbcDataSource.java b/src/main/java/ru/yandex/clickhouse/jdbcbridge/impl/JdbcDataSource.java index 57330ba..d82e535 100755 --- a/src/main/java/ru/yandex/clickhouse/jdbcbridge/impl/JdbcDataSource.java +++ b/src/main/java/ru/yandex/clickhouse/jdbcbridge/impl/JdbcDataSource.java @@ -463,14 +463,14 @@ protected final Connection getConnection() throws SQLException { try { conn.setAutoCommit(true); - } catch (Exception e) { + } catch (Throwable e) { log.warn("Failed to enable auto-commit due to {}", e.getMessage()); } } try { conn.setClientInfo(PROP_CLIENT_NAME, DEFAULT_CLIENT_NAME); - } catch (Exception e) { + } catch (Throwable e) { log.warn("Failed call setClientInfo due to {}", e.getMessage()); } From 679241c650c922d11a84da378b9139e059e4663e Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Sat, 28 Aug 2021 10:16:43 +0800 Subject: [PATCH 3/4] Bump dependencies --- NOTICE | 1 - README.md | 2 +- all-in-one.Dockerfile | 8 ++++---- docker/README.md | 6 +++--- .../jdbc-bridge/config/datasources/mariadb.json | 2 +- .../jdbc-bridge/config/datasources/ch-server.json | 2 +- .../config/datasources/elasticsearch.json | 2 +- .../jdbc-bridge/config/datasources/mariadb10.json | 2 +- .../jdbc-bridge/config/datasources/mysql8.json | 2 +- .../jdbc-bridge/config/datasources/postgres13.json | 2 +- pom.xml | 12 ++++++------ 11 files changed, 20 insertions(+), 21 deletions(-) diff --git a/NOTICE b/NOTICE index 76c2c10..16830a1 100644 --- a/NOTICE +++ b/NOTICE @@ -67,5 +67,4 @@ This project includes: vertx-web under The Apache Software License, Version 2.0 or Eclipse Public License - v 2.0 vertx-web-client under The Apache Software License, Version 2.0 or Eclipse Public License - v 1.0 vertx-web-common under The Apache Software License, Version 2.0 or Eclipse Public License - v 1.0 - Visible Assertions under MIT diff --git a/README.md b/README.md index 2b69b8c..fee0595 100755 --- a/README.md +++ b/README.md @@ -264,7 +264,7 @@ Assuming you started a test environment using docker-compose, please refer to ex "drivers/mariadb", "D:\\drivers\\mariadb", "/mnt/d/drivers/mariadb", - "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar" + "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar" ], "driverClassName": "org.mariadb.jdbc.Driver", ... diff --git a/all-in-one.Dockerfile b/all-in-one.Dockerfile index 353965e..75902b0 100644 --- a/all-in-one.Dockerfile +++ b/all-in-one.Dockerfile @@ -58,15 +58,15 @@ RUN apt-get update \ && apt-get clean \ && rm -rf /*.deb /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && wget -q -P /etc/clickhouse-jdbc-bridge/drivers/clickhouse \ - https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc/0.2.5/clickhouse-jdbc-0.2.5-shaded.jar \ + https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc/0.3.1-patch/clickhouse-jdbc-0.3.1-patch-shaded.jar \ && wget -q -P /etc/clickhouse-jdbc-bridge/drivers/mariadb \ - https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar \ + https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar \ && wget -q -P /etc/clickhouse-jdbc-bridge/drivers/mysql5 \ https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar \ && wget -q -P /etc/clickhouse-jdbc-bridge/drivers/mysql8 \ - https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar \ + https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar \ && wget -q -P /etc/clickhouse-jdbc-bridge/drivers/postgres \ - https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar \ + https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar \ && sed -i -e 's|\(^[[:space:]]*\)\(exec.*clickhouse-server.*$\)|\1exec -c clickhouse-jdbc-bridge >/dev/null \&\n\1\2|' /entrypoint.sh \ && echo '{\n\ "$schema": "../datasource-schema.json",\n\ diff --git a/docker/README.md b/docker/README.md index 1f9d7a9..c252d27 100755 --- a/docker/README.md +++ b/docker/README.md @@ -12,13 +12,13 @@ The latest tag points to the latest release from `master` branch. Branch tags li ```bash docker run -d --name ch-jdbc-bridge -p9019:9019 \ -e MAVEN_REPO_URL="https://repo1.maven.org/maven2" \ - -e JDBC_DRIVERS="org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar,org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar" yandex/clickhouse-jdbc-bridge + -e JDBC_DRIVERS="org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar,org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar" yandex/clickhouse-jdbc-bridge ``` If you prefer to use JDBC drivers and named datasources on host, you can use the following commands: ```bash wget -P drivers \ - https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar \ - https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar + https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar \ + https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar wget -P datasources \ https://raw.githubusercontent.com/ClickHouse/clickhouse-jdbc-bridge/master/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json \ https://raw.githubusercontent.com/ClickHouse/clickhouse-jdbc-bridge/master/misc/quick-start/jdbc-bridge/config/datasources/postgres13.json diff --git a/misc/perf-test/jdbc-bridge/config/datasources/mariadb.json b/misc/perf-test/jdbc-bridge/config/datasources/mariadb.json index c3eeb4e..1730b59 100755 --- a/misc/perf-test/jdbc-bridge/config/datasources/mariadb.json +++ b/misc/perf-test/jdbc-bridge/config/datasources/mariadb.json @@ -2,7 +2,7 @@ "$schema": "../../../../../docker/config/datasource.jschema", "mariadb": { "driverUrls": [ - "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar" + "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar" ], "driverClassName": "org.mariadb.jdbc.Driver", "jdbcUrl": "jdbc:mariadb://mariadb:3306/test?useSSL=false&useCompression=false&rewriteBatchedStatements=true", diff --git a/misc/quick-start/jdbc-bridge/config/datasources/ch-server.json b/misc/quick-start/jdbc-bridge/config/datasources/ch-server.json index 9d935e5..b78c9c1 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/ch-server.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/ch-server.json @@ -3,7 +3,7 @@ "ch-server": { "aliases": ["self"], "driverUrls": [ - "https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc/0.2.5/clickhouse-jdbc-0.2.5-shaded.jar" + "https://repo1.maven.org/maven2/ru/yandex/clickhouse/clickhouse-jdbc/0.3.1-patch/clickhouse-jdbc-0.3.1-patch-shaded.jar" ], "driverClassName": "ru.yandex.clickhouse.ClickHouseDriver", "jdbcUrl": "jdbc:clickhouse://ch-server:8123/system", diff --git a/misc/quick-start/jdbc-bridge/config/datasources/elasticsearch.json b/misc/quick-start/jdbc-bridge/config/datasources/elasticsearch.json index 53e371c..0e42ded 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/elasticsearch.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/elasticsearch.json @@ -2,7 +2,7 @@ "$schema": "../../../../../docker/config/datasource.jschema", "elasticsearch": { "driverUrls": [ - "https://repo1.maven.org/maven2/com/amazon/opendistroforelasticsearch/client/opendistro-sql-jdbc/1.12.0.0/opendistro-sql-jdbc-1.12.0.0.jar" + "https://repo1.maven.org/maven2/com/amazon/opendistroforelasticsearch/client/opendistro-sql-jdbc/1.13.0.0/opendistro-sql-jdbc-1.13.0.0.jar" ], "readOnly": true, "connectionTestQuery": "", diff --git a/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json b/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json index 7103832..4e4e7f4 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json @@ -2,7 +2,7 @@ "$schema": "../../../../../docker/config/datasource.jschema", "mariadb10": { "driverUrls": [ - "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.2/mariadb-java-client-2.7.2.jar" + "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/4/mariadb-java-client-2.7.4.jar" ], "driverClassName": "org.mariadb.jdbc.Driver", "jdbcUrl": "jdbc:mariadb://db-mariadb10/test?useSSL=false&useCompression=false&useOldAliasMetadataBehavior=true&allowMultiQueries=true", diff --git a/misc/quick-start/jdbc-bridge/config/datasources/mysql8.json b/misc/quick-start/jdbc-bridge/config/datasources/mysql8.json index 6d6feea..0c726bf 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/mysql8.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/mysql8.json @@ -2,7 +2,7 @@ "$schema": "../../../../../docker/config/datasource.jschema", "mysql8": { "driverUrls": [ - "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.23/mysql-connector-java-8.0.23.jar" + "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar" ], "driverClassName": "com.mysql.cj.jdbc.Driver", "jdbcUrl": "jdbc:mysql://db-mysql8/test?allowPublicKeyRetrieval=true&useSSL=false&useCompression=false&useOldAliasMetadataBehavior=true&allowMultiQueries=true", diff --git a/misc/quick-start/jdbc-bridge/config/datasources/postgres13.json b/misc/quick-start/jdbc-bridge/config/datasources/postgres13.json index df86e08..d32cc99 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/postgres13.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/postgres13.json @@ -5,7 +5,7 @@ "mappings": [{ "nativeType": "bool", "toType": "String" }] }, "driverUrls": [ - "https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.18/postgresql-42.2.18.jar" + "https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.23/postgresql-42.2.23.jar" ], "driverClassName": "org.postgresql.Driver", "jdbcUrl": "jdbc:postgresql://db-postgres13/test", diff --git a/pom.xml b/pom.xml index 8029d9f..36eb034 100755 --- a/pom.xml +++ b/pom.xml @@ -5,23 +5,23 @@ ru.yandex.clickhouse clickhouse-jdbc-bridge jar - 2.0.3-SNAPSHOT + 2.0.4-SNAPSHOT ClickHouse JDBC Bridge https://github.com/ClickHouse/clickhouse-jdbc-bridge JDBC bridge for ClickHouse. 2019 - 2.8.6 - 3.3.1 - 3.9.5 + 2.9.2 + 3.4.1 + 3.9.8 1.1.19 - 1.7.30 + 1.7.32 3.4.5 2021 UTF-8 1.8 - 1.15.1 + 1.16.0 6.14.3 ${project.basedir} 3.0.0-M1 From c66aaf95a750b2d1502e7157415c7e3912f25656 Mon Sep 17 00:00:00 2001 From: Zhichun Wu Date: Sat, 28 Aug 2021 10:23:17 +0800 Subject: [PATCH 4/4] Update document for newly added configuration --- docker/README.md | 1 + misc/quick-start/docker-compose.yml | 1 + misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index c252d27..3f455e2 100755 --- a/docker/README.md +++ b/docker/README.md @@ -75,6 +75,7 @@ In order to customize the container, please refer to directory structure and sup Environment Variable | Java System Property | Default Value | Remark -- | -- | -- | -- CONFIG_DIR | jdbc-bridge.config.dir | config | Configuration directory +SERIAL_MODE | jdbc-bridge.serial.mode | false | Whether run query in serial mode or not CUSTOM_DRIVER_LOADER | jdbc-bridge.driver.loader | true | Whether use custom driver class loader or not DATASOURCE_CONFIG_DIR | jdbc-bridge.datasource.config.dir | datasources | Directory for named datasources DEFAULT_VALUE | jdbc-bridge.type.default | false | Whether support default expression in column definition or not diff --git a/misc/quick-start/docker-compose.yml b/misc/quick-start/docker-compose.yml index a01d808..f03ab4f 100755 --- a/misc/quick-start/docker-compose.yml +++ b/misc/quick-start/docker-compose.yml @@ -69,6 +69,7 @@ services: # Below are all default settings just for demonstration environment: CONFIG_DIR: config # configuration directory + SERIAL_MODE: "false" # whether run query in serial mode or not HTTPD_CONFIG_FILE: httpd.json # httpd configuration file SERVER_CONFIG_FILE: server.json # server configuration file VERTX_CONFIG_FILE: vertx.json # vertx configuration file diff --git a/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json b/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json index 4e4e7f4..e1ae769 100755 --- a/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json +++ b/misc/quick-start/jdbc-bridge/config/datasources/mariadb10.json @@ -2,7 +2,7 @@ "$schema": "../../../../../docker/config/datasource.jschema", "mariadb10": { "driverUrls": [ - "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/4/mariadb-java-client-2.7.4.jar" + "https://repo1.maven.org/maven2/org/mariadb/jdbc/mariadb-java-client/2.7.4/mariadb-java-client-2.7.4.jar" ], "driverClassName": "org.mariadb.jdbc.Driver", "jdbcUrl": "jdbc:mariadb://db-mariadb10/test?useSSL=false&useCompression=false&useOldAliasMetadataBehavior=true&allowMultiQueries=true",