alibaba / alibaba/DataX

使用rdbmsreader读取达梦数据库时,第一次连接会出现网络通信异常,第二次重试就会正常连接上。

Open
#1,709 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
17.4k
Forks
5.7k
PR merge metrics
No merged PRs in 30d

Description

日志如下:

2023-03-08 15:25:14.446 [main] INFO JobContainer - Set jobId = 0
2023-03-08 15:25:14.562 [job-0] INFO DBUtil - DriverClassName: com.alibaba.datax.plugin.rdbms.util.DataBaseType
2023-03-08 15:25:19.769 [job-0] WARN DBUtil - test connection of [jdbc:dm://10.65.12.xx:5236/xxx] failed, for Code:[DBUtilErrorCode-10], **Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).]. - 具体错误信息为:java.sql.SQLException: 网络通信异常.**
2023-03-08 15:25:19.784 [job-0] ERROR RetryUtil - Exception when calling callable, 异常Msg:DataX无法连接对应的数据库,可能原因是:1) 配置的ip/port/database/jdbc错误,无法连接。2) 配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。
java.lang.Exception: DataX无法连接对应的数据库,可能原因是:1) 配置的ip/port/database/jdbc错误,无法连接。2) 配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。
at com.alibaba.datax.plugin.rdbms.util.DBUtil$2.call(DBUtil.java:78) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil$2.call(DBUtil.java:51) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil$Retry.call(RetryUtil.java:164) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil$Retry.doRetry(RetryUtil.java:111) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.common.util.RetryUtil.executeWithRetry(RetryUtil.java:30) [datax-common-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.util.DBUtil.chooseJdbcUrl(DBUtil.java:51) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.dealJdbcAndTable(OriginalConfPretreatmentUtil.java:92) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.simplifyConf(OriginalConfPretreatmentUtil.java:59) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.reader.util.OriginalConfPretreatmentUtil.doPretreatment(OriginalConfPretreatmentUtil.java:33) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader$Job.init(CommonRdbmsReader.java:55) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.reader.rdbmsreader.RdbmsReader$Job.init(RdbmsReader.java:45) [rdbmsreader-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:673) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:303) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:113) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.start(Engine.java:93) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.entry(Engine.java:175) [datax-core-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.Engine.main(Engine.java:208) [datax-core-0.0.1-SNAPSHOT.jar:na]
2023-03-08 15:25:20.789 [job-0] ERROR RetryUtil - Exception when calling callable, 即将尝试执行第1次重试.本次重试计划等待[1000]ms,实际等待[1001]ms, 异常Msg:[DataX无法连接对应的数据库,可能原因是:1) 配置的ip/port/database/jdbc错误,无法 连接。2) 配置的username/password错误,鉴权失败。请和DBA确认该数据库的连接信息是否正确。]

**2023-03-08 15:25:21.560 [job-0] INFO **OriginalConfPretreatmentUtil - Available jdbcUrl:jdbc:dm://10.65.12.xx:5236/xxx.****

2023-03-08 15:25:21.662 [job-0] INFO OriginalConfPretreatmentUtil - table:["admin"."222"] all columns:[
userid,fullname,account,password,isexpired,islock,createtime,status,sex,picture,fromtype,birthday,former_name,nation,card_no,native_place,marital_status,cultural_level,politics_status,join_party_time,work_time,unit,unit_nature,position,level,title,charge_work,office_time,zip_code,address,user_code,zs_dn,phone,mobile,email,tyyw_ry_id,cas_account,tyyw_bm_id

**日志中敏感地址使用xx代替: 第二次重试的时候会正常连接上: Available jdbcUrl:jdbc:dm://10.65.12.xx:5236/xx.****

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with DBUtil.chooseJdbcUrl and the retry path in RetryUtil, then trace how OriginalConfPretreatmentUtil.dealJdbcAndTable invokes the connection check for rdbmsreader. Reproduce the first-connection failure against the reported database setup and compare it with the successful retry. Done means the cause is identified and the first connection or its retry behavior is validated with a regression test or documented limitation.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.