dawner84 commented on issue #6638:
URL: https://github.com/apache/seatunnel/issues/6638#issuecomment-3827986044
发现seatunnel jdbc
sink在streaming任务(kafka->mysql)里面connection为啥不释放,一直是active,就算配置大了池子,或者配置了探测时间也没用,因为连接就不会释放。
下面是超时以后写入mysql的报错,这时候才return到池子已经晚了,kafka消息也消费了,但是数据页没写进去
2026-01-31 17:00:04,802 DEBUG [.s.e.s.c.CheckpointCoordinator]
[seatunnel-coordinator-service-13] - pending
checkpoint(141/7@1069898974783078401) completed! cost: 2, trigger: 1769850004800
, completed: 1769850004802
2026-01-31 17:00:04,802 DEBUG [.a.s.e.s.t.f.SinkFlowLifeCycle]
[BlockingWorker-TaskGroupLocation{jobId=1069898974783078401, pipelineId=7,
taskGroupId=14}] - trigger barrier [141] finished,
cost 1ms. taskLocation
[TaskLocation{taskGroupLocation=TaskGroupLocation{jobId=1069898974783078401,
pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}]
**2026-01-31 17:00:04,803 WARN [.a.s.s.c.z.h.p.ProxyConnection]
[st-multi-table-sink-writer-2] - HikariPool-1 - Connection
com.mysql.cj.jdbc.ConnectionImpl@32e419c2 marked as broken because
of SQLSTATE(08S01), ErrorCode(0)**
com.mysql.cj.jdbc.exceptions.CommunicationsException: The last
packet successfully received from the server was 890,049 milliseconds ago. The
last packet sent successfully to the server wa
s 890,050 milliseconds ago. is longer than the server configured value of
'wait_timeout'. You should consider either expiring and/or testing connection
validity before use in your application, inc
reasing the server configured values for client timeouts, or using the
Connector/J connection property 'autoReconnect=true' to avoid this problem.
at
com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:175)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1374)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1359)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:386)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:795)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
org.apache.seatunnel.shade.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.shade.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.1
3-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.FieldNamedPreparedStatement.executeBatch(FieldNamedPreparedStatement.java:540)
~[connector-jdbc-2.3.13-SNAPSHOT-
2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.SimpleBatchStatementExecutor.executeBatch(SimpleBatchStatementExecutor.java:54)
~[connector-jdbc-2.3.13-SNAPSHOT
-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.BufferReducedBatchStatementExecutor.executeBatch(BufferReducedBatchStatementExecutor.java:89)
~[connector-jdbc-2
.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.JdbcOutputFormat.attemptFlush(JdbcOutputFormat.java:172)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:136)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcSinkWriter.prepareCommit(JdbcSinkWriter.java:160)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.api.sink.SinkWriter.prepareCommit(SinkWriter.java:75)
~[seatunnel-starter.jar:2.3.12]
at
org.apache.seatunnel.api.sink.multitablesink.MultiTableSinkWriter.lambda$prepareCommit$4(MultiTableSinkWriter.java:259)
~[seatunnel-starter.jar:2.3.12]
2026-01-31 17:00:04,801 DEBUG [o.a.s.e.s.c.PendingCheckpoint ]
[hz.main.generic-operation.thread-33] - acknowledgeTask states
[[ActionSubtaskState(stateKey=ActionStateKey(name=ActionStateK
ey - pipeline-7 [Source[6]-Kafka]), index=0)]]
2026-01-31 17:00:04,801 DEBUG [s.c.o.TaskAcknowledgeOperation]
[hz.main.generic-operation.thread-33] - task ack finished
TaskLocation{taskGroupLocation=TaskGroupLocation{jobId=106989897478
3078401, pipelineId=7, taskGroupId=14}, taskID=7001400000000, index=0}
2026-01-31 17:00:04,801 DEBUG [.s.e.s.t.f.SourceFlowLifeCycle]
[hz.main.seaTunnel.task.thread-2] - send record to next finished, taskId:
[7001400000000]
2026-01-31 17:00:04,801 DEBUG [.s.e.s.t.f.SourceFlowLifeCycle]
[hz.main.seaTunnel.task.thread-2] - trigger barrier [141] finished, cost: 0ms.
taskLocation: [TaskLocation{taskGroupLocation=
TaskGroupLocation{jobId=1069898974783078401, pipelineId=7, taskGroupId=14},
taskID=7001400000000, index=0}]
2026-01-31 17:00:04,801 DEBUG [o.a.s.e.s.TaskExecutionService]
[hz.main.seaTunnel.task.thread-2] - [localhost]:5805 [seatunnel-620355] [5.1]
remove async execute function from TaskGroupLoc
ation{jobId=1069898974783078401, pipelineId=7, taskGroupId=14} with id
cc0bdb30-f66e-48eb-985f-6751740ede64
2026-01-31 17:00:04,801 DEBUG [o.a.s.e.s.t.SeaTunnelTask ]
[BlockingWorker-TaskGroupLocation{jobId=1069898974783078401, pipelineId=7,
taskGroupId=14}] - seatunnel task ack barrier[Task
ation{jobId=1069898974783078401, pipelineId=7, taskGroupId=14} with id
cc0bdb30-f66e-48eb-985f-6751740ede64
2026-01-31 17:00:04,801 DEBUG [o.a.s.e.s.t.SeaTunnelTask ]
[BlockingWorker-TaskGroupLocation{jobId=1069898974783078401, pipelineId=7,
taskGroupId=14}] - seatunnel task ack barrier[Task
Location{taskGroupLocation=TaskGroupLocation{jobId=1069898974783078401,
pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}]
2026-01-31 17:00:04,801 DEBUG [o.a.s.c.s.j.i.JdbcOutputFormat]
[st-multi-table-sink-writer-1] - No data to flush.
2026-01-31 17:00:04,802 DEBUG [o.a.s.e.s.t.SeaTunnelTask ]
[BlockingWorker-TaskGroupLocation{jobId=1069898974783078401, pipelineId=7,
taskGroupId=14}] - seatunnel task ack barrier[Task
Location{taskGroupLocation=TaskGroupLocation{jobId=1069898974783078401,
pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}]
2026-01-31 17:00:04,802 DEBUG [s.c.o.TaskAcknowledgeOperation]
[hz.main.generic-operation.thread-12] - TaskAcknowledgeOperation
TaskLocation{taskGroupLocation=TaskGroupLocation{jobId=10698
98974783078401, pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}
2026-01-31 17:00:04,802 DEBUG [o.a.s.e.s.c.CheckpointManager ]
[hz.main.generic-operation.thread-12] - checkpoint manager received ack
TaskLocation{taskGroupLocation=TaskGroupLocation{jobI
d=1069898974783078401, pipelineId=7, taskGroupId=14}, taskID=7001400010000,
index=0}
2026-01-31 17:00:04,802 DEBUG [.s.e.s.c.CheckpointCoordinator]
[hz.main.generic-operation.thread-12] -
task[7001400010000](7/1069898974783078401) ack. CheckpointBarrier 141 @
1769850004800
type: CHECKPOINT_TYPE, prepareClose: [], closed: []
2026-01-31 17:00:04,802 DEBUG [o.a.s.e.s.c.PendingCheckpoint ]
[hz.main.generic-operation.thread-12] - acknowledgeTask states
[[ActionSubtaskState(stateKey=ActionStateKey(name=ActionStateK
ey - pipeline-7 [Sink[6]-jdbc-MultiTableSink]), index=0)]]
2026-01-31 17:00:04,802 DEBUG [o.a.s.e.s.c.PendingCheckpoint ]
[hz.main.generic-operation.thread-12] - checkpoint is full ack!
2026-01-31 17:00:04,802 DEBUG [s.c.o.TaskAcknowledgeOperation]
[hz.main.generic-operation.thread-12] - task ack finished
TaskLocation{taskGroupLocation=TaskGroupLocation{jobId=106989897478
3078401, pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}
2026-01-31 17:00:04,802 DEBUG [.s.e.s.c.CheckpointCoordinator]
[seatunnel-coordinator-service-13] - pending
checkpoint(141/7@1069898974783078401) completed! cost: 2, trigger: 1769850004800
, completed: 1769850004802
2026-01-31 17:00:04,802 DEBUG [.a.s.e.s.t.f.SinkFlowLifeCycle]
[BlockingWorker-TaskGroupLocation{jobId=1069898974783078401, pipelineId=7,
taskGroupId=14}] - trigger barrier [141] finished,
cost 1ms. taskLocation
[TaskLocation{taskGroupLocation=TaskGroupLocation{jobId=1069898974783078401,
pipelineId=7, taskGroupId=14}, taskID=7001400010000, index=0}]
2026-01-31 17:00:04,803 WARN [.a.s.s.c.z.h.p.ProxyConnection]
[st-multi-table-sink-writer-2] - HikariPool-1 - Connection
com.mysql.cj.jdbc.ConnectionImpl@32e419c2 marked as broken because
of SQLSTATE(08S01), ErrorCode(0)
com.mysql.cj.jdbc.exceptions.CommunicationsException: The last
packet successfully received from the server was 890,049 milliseconds ago. The
last packet sent successfully to the server wa
s 890,050 milliseconds ago. is longer than the server configured value of
'wait_timeout'. You should consider either expiring and/or testing connection
validity before use in your application, inc
reasing the server configured values for client timeouts, or using the
Connector/J connection property 'autoReconnect=true' to avoid this problem.
at
com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:175)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:64)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1374)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1359)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ClientPreparedStatement.executeBatchInternal(ClientPreparedStatement.java:386)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.StatementImpl.executeBatch(StatementImpl.java:795)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
org.apache.seatunnel.shade.com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.shade.com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.1
3-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.FieldNamedPreparedStatement.executeBatch(FieldNamedPreparedStatement.java:540)
~[connector-jdbc-2.3.13-SNAPSHOT-
2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.SimpleBatchStatementExecutor.executeBatch(SimpleBatchStatementExecutor.java:54)
~[connector-jdbc-2.3.13-SNAPSHOT
-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.executor.BufferReducedBatchStatementExecutor.executeBatch(BufferReducedBatchStatementExecutor.java:89)
~[connector-jdbc-2
.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.JdbcOutputFormat.attemptFlush(JdbcOutputFormat.java:172)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:136)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.connectors.seatunnel.jdbc.sink.JdbcSinkWriter.prepareCommit(JdbcSinkWriter.java:160)
~[connector-jdbc-2.3.13-SNAPSHOT-2.12.15.jar:2.3.13-SNAPSHOT]
at
org.apache.seatunnel.api.sink.SinkWriter.prepareCommit(SinkWriter.java:75)
~[seatunnel-starter.jar:2.3.12]
at
org.apache.seatunnel.api.sink.multitablesink.MultiTableSinkWriter.lambda$prepareCommit$4(MultiTableSinkWriter.java:259)
~[seatunnel-starter.jar:2.3.12]
at
org.apache.seatunnel.api.tracing.MDCRunnable.run(MDCRunnable.java:43)
[seatunnel-starter.jar:2.3.12]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[?:1.8.0_471]
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[?:1.8.0_471]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[?:1.8.0_471]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[?:1.8.0_471]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_471]
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: The
last packet successfully received from the server was 890,049 milliseconds ago.
The last packet sent successfully to the s
erver was 890,050 milliseconds ago. is longer than the server configured
value of 'wait_timeout'. You should consider either expiring and/or testing
connection validity before use in your applicat
ion, increasing the server configured values for client timeouts, or using
the Connector/J connection property 'autoReconnect=true' to avoid this problem.
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
~[?:1.8.0_471]
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
~[?:1.8.0_471]
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[?:1.8.0_471]
at
java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_471]
at
com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:62)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:150)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:166)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:582)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:762)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:701)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:156)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.NativeSession.queryServerVariable(NativeSession.java:589)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1366)
~[mysql-connector-j-8.0.33.jar:8.0.33]
... 19 more
Caused by: java.io.EOFException: Can not read response from server.
Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at
com.mysql.cj.protocol.FullReadInputStream.readFully(FullReadInputStream.java:67)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.SimplePacketReader.readHeaderLocal(SimplePacketReader.java:81)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:63)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.SimplePacketReader.readHeader(SimplePacketReader.java:45)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:52)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.TimeTrackingPacketReader.readHeader(TimeTrackingPacketReader.java:41)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:54)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.MultiPacketReader.readHeader(MultiPacketReader.java:44)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.readMessage(NativeProtocol.java:576)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:762)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:701)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.protocol.a.NativeProtocol.sendCommand(NativeProtocol.java:156)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.NativeSession.queryServerVariable(NativeSession.java:589)
~[mysql-connector-j-8.0.33.jar:8.0.33]
at
com.mysql.cj.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:1366)
~[mysql-connector-j-8.0.33.jar:8.0.33]
... 19 more
**2026-01-31 17:00:04,803 INFO [o.a.s.s.c.z.h.p.ProxyLeakTask ]
[st-multi-table-sink-writer-2] - Previously reported leaked connection
com.mysql.cj.jdbc.ConnectionImpl@32e419c2 on thread st
-multi-table-sink-writer-1 was returned to the pool (unleaked)**
2026-01-31 17:00:04,803 DEBUG [o.a.s.s.c.z.h.p.PoolBase ]
[HikariPool-1 connection closer] - HikariPool-1 - Closing connection
com.mysql.cj.jdbc.ConnectionImpl@32e419c2: (connection i
s broken)
2026-01-31 17:00:04,804 DEBUG [o.a.s.s.c.z.h.p.HikariPool ]
[HikariPool-1 connection closer] - HikariPool-1 - Fill pool skipped, pool is at
sufficient level.
2026-01-31 17:00:04,803 ERROR [o.a.s.c.s.j.i.JdbcOutputFormat]
[st-multi-table-sink-writer-2] - JDBC executeBatch error, retry times = 0
com.mysql.cj.jdbc.exceptions.CommunicationsEx
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]