alibaba / alibaba/DataX

drdswriter 出现No operations allowed after statement closed

Open
#667 2 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

通过datax 往drds迁移数据的时候,执行出现 **No operations allowed after statement closed** 错误

> java.sql.SQLException: [109702d57bd78000][10.0.59.228:3306][coldchain]No operations allowed after statement closed.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1242) ~[mysql-connector-java-5.1.47.jar:5.1.47]
at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.doOneInsert(CommonRdbmsWriter.java:383) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na
]
at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.doBatchInsert(CommonRdbmsWriter.java:363) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:
na]
at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWriteWithConnection(CommonRdbmsWriter.java:291) [plugin-rdbms-util-0.0.1-SN
APSHOT.jar:na]
at com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter$Task.startWrite(CommonRdbmsWriter.java:319) [plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.plugin.writer.drdswriter.DrdsWriter$Task.startWrite(DrdsWriter.java:82) [drdswriter-0.0.1-SNAPSHOT.jar:na]
at com.alibaba.datax.core.taskgroup.runner.WriterRunner.run(WriterRunner.java:56) [datax-core-0.0.1-SNAPSHOT.jar:na]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

然后一直提示如下信息:

> 2020-05-08 11:15:51.400 [0-0-96-writer] WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交. 因为:[109702d802d78000-2][xxx.xxx.xxx.xxx:330
6][tableName]No operations allowed after statement closed.
2020-05-08 11:15:51.671 [0-0-96-writer] WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交. 因为:[109702d846978000-2][xxx.xxx.xxx.xxx:330
6][tableName]No operations allowed after statement closed.
2020-05-08 11:15:51.942 [0-0-96-writer] WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交. 因为:[109702d88a978000-2][xxx.xxx.xxx.xxx:330
6][tableName]No operations allowed after statement closed.

经过我添加日志发现connection 和 preparedStatement的isClosed状态都为false,我也在抛异常的地方添加了preparedStatement.exeucte("select 1") ,没有抛出类似异常

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with plugin-rdbms-util's CommonRdbmsWriter.java around doOneInsert, doBatchInsert, and startWriteWithConnection, then inspect DrdsWriter.java around startWrite. Reproduce the DataX-to-DRDS failure and compare the statement lifecycle with the reported isClosed checks. Done means the failing write path no longer reports the closed-statement error and its batch or fallback behavior is verified.

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
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.