iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

[Bug] 2.0.4版本jdbc问题 private static final String TSFILE_URL_PREFIX = "jdbc:iotdb://.*";匹配模版,不支持连接集群?

Open yangsen227 opened this issue 2 months ago • 2 comments

Search before asking

  • [x] I searched in the issues and found nothing similar.

Version

集群部署在red hat 4.8.5-44 iotdb使用版本2.0.4

Describe the bug and provide the minimal reproduce step

传入以逗号分隔的url后出现异常,是我这边的传入方式有问题还是本事不支持这个功能?jdbc的方式不能连接集群吗? reate connection SQLException, url: jdbc:iotdb://xx.xx.xx.xxx:6667,xx.xx.xx.xxx:6667,xx.xx.xx.xxx:6667/?sql_dialect=table, errorCode 0, state null java.sql.SQLException: Connection Error, please check whether the network is available or the server has started. at org.apache.iotdb.jdbc.IoTDBDriver.connect(IoTDBDriver.java:67) ~[iotdb-jdbc-2.0.4.jar:2.0.4] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1652) ~[druid-1.2.4.jar:1.2.4] at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1718) ~[druid-1.2.4.jar:1.2.4] at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2785) [druid-1.2.4.jar:1.2.4] Caused by: org.apache.thrift.transport.TTransportException: java.net.UnknownHostException: 10.72.8.165:6667,10.72.8.164:6667,10.72.8.163 at org.apache.thrift.transport.TSocket.open(TSocket.java:243) ~[libthrift-0.14.1.jar:0.14.1] at org.apache.iotdb.rpc.TElasticFramedTransport.open(TElasticFramedTransport.java:101) ~[service-rpc-2.0.4.jar:2.0.4] at org.apache.iotdb.jdbc.IoTDBConnection.openTransport(IoTDBConnection.java:553) ~[iotdb-jdbc-2.0.4.jar:2.0.4] at org.apache.iotdb.jdbc.IoTDBConnection.(IoTDBConnection.java:133) ~[iotdb-jdbc-2.0.4.jar:2.0.4] at org.apache.iotdb.jdbc.IoTDBDriver.connect(IoTDBDriver.java:65) ~[iotdb-jdbc-2.0.4.jar:2.0.4] ... 3 more Caused by: java.net.UnknownHostException: xx.xx.xx.xxx6667,xx.xxxx.xxx:6667,xx.xx.xx.xxx at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[?:1.8.0_231] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[?:1.8.0_231] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[?:1.8.0_231] at java.net.Socket.connect(Socket.java:606) ~[?:1.8.0_231] at org.apache.thrift.transport.TSocket.open(TSocket.java:238) ~[libthrift-0.14.1.jar:0.14.1] at org.apache.iotdb.rpc.TElasticFramedTransport.open(TElasticFramedTransport.java:101) ~[service-rpc-2.0.4.jar:2.0.4] at org.apache.iotdb.jdbc.IoTDBConnection.openTransport(IoTDBConnection.java:553) ~[iotdb-jdbc-2.0.4.jar:2.0.4] at org.apache.iotdb.jdbc.IoTDBConnection.(IoTDBConnection.java:133) ~[iotdb-jdbc-2.0.4.jar:2.0.4]

附创建iotdatasource部分代码 @Bean(name = "iotDataSource") public DataSource setDataSource() {

    DruidDataSource datasource = new DruidDataSource();
    datasource.setDriverClassName(iotDbDTSProperties.getDriverClassName());
    // 添加查询超时和内存限制参数
    datasource.setUrl("jdbc:iotdb://"+iotDbDTSProperties.getNodeUrls()+"?sql_dialect=table");
    datasource.setUsername(iotDbDTSProperties.getUsername());
    datasource.setPassword(iotDbDTSProperties.getPassword());

    // 连接池配置
    datasource.setInitialSize(5);
    datasource.setMinIdle(5);
    datasource.setMaxActive(10); // 减少最大连接数
    datasource.setMaxWait(30000); // 减少等待时间

    // 连接保活配置
    datasource.setTimeBetweenEvictionRunsMillis(30000); // 更频繁的检查
    datasource.setMinEvictableIdleTimeMillis(180000);
    datasource.setMaxEvictableIdleTimeMillis(300000); // 更短的最大空闲时间

    // 禁用连接验证查询,避免IoTDB SQL语法不兼容问题
    datasource.setTestWhileIdle(false);
    datasource.setTestOnBorrow(false);
    datasource.setTestOnReturn(false);
    datasource.setValidationQuery(null);

    // 连接泄露检测 - 更严格的超时
    datasource.setRemoveAbandoned(true);
    datasource.setRemoveAbandonedTimeout(60); // 1分钟超时
    datasource.setLogAbandoned(true);

    // 其他配置保持不变
    datasource.setDefaultAutoCommit(true);
    datasource.setMaxPoolPreparedStatementPerConnectionSize(-1);
    datasource.setPoolPreparedStatements(false);
    datasource.setInitVariants(false);
    datasource.setInitGlobalVariants(false);
    datasource.setUseGlobalDataSourceStat(false);
    datasource.setMaxOpenPreparedStatements(-1);

    return datasource;
}

What did you expect to see?

我期望以逗号分隔的传入方式能够得到支持

What did you see instead?

我看到了无法解析传入的以逗号分隔的url导致连接iotdb数据库失败

Anything else?

No response

Are you willing to submit a PR?

  • [x] I'm willing to submit a PR!

yangsen227 avatar Oct 16 '25 07:10 yangsen227

Hi, this is your first issue in IoTDB project. Thanks for your report. Welcome to join the community!

github-actions[bot] avatar Oct 16 '25 07:10 github-actions[bot]

不是bug,JDBC目前还不支持多个地址。

HTHou avatar Oct 16 '25 11:10 HTHou