fix[#621] jdbc connection will disconnection for a while.
fix jdbc connection will disconnection for a while.
connection.isValid(5) 有些jdbc实现类不支持isValid,放在jdbc模块会导致具体的插件实现类报错 sqlserver、DB2驱动包不支持isValid()
connection.isValid(5) 有些jdbc实现类不支持isValid,放在jdbc模块会导致具体的插件实现类报错 sqlserver、DB2驱动包不支持isValid()
ok,我想加入一个connection.select 1用来valid connection useable.
连接不可用的时候,会创建一个新的连接进行写入,那么假设不可用的连接还有事务未提交,此时这部分数据会丢失。 closeInternal里面所有的方法都进行了try catch将异常吞掉了,所以这儿在写入的时候不能直接判断连接不可用就创建一个新的连接进行写入
怎么会被出现这种情况呢,com.dtstack.flinkx.connector.jdbc.sink.JdbcOutputFormat#writeMultipleRecordsInternal,这是jdbc mini batch写入的入口,如果这个位置判断connection失效,是不会有未提交的事务。 kafka -> writeMultipleRecordsInternal -> 写入成功 -> clearbatch -> 出错 -> writeSingleRecordInternal 所以我想不通为啥会有你说的部分数据丢失。
如果事务开启了checkPoint 且EXACTLY_ONCE的话,connection 事务是手动提交,只有checkpoint的时候才会提交事务
如果事务开启了checkPoint 且EXACTLY_ONCE的话,connection 事务是手动提交,只有checkpoint的时候才会提交事务
现在exactly_once提交的时候如果connection是失效的场合会自动rollback,然后重新初始化。