Error performing rollback on connection This connection has been closed.

1, 版本

PostgreSQL 14.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit

2,问题

2023/04/28 10:22:53 - bpm_pro - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Because of an error, this step can't continue:
2023/04/28 10:22:53 - bpm_pro - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException: 
2023/04/28 10:22:53 - bpm_pro - Error performing rollback on connection
2023/04/28 10:22:53 - bpm_pro - This connection has been closed.
2023/04/28 10:22:53 - bpm_pro - 
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.core.database.Database.rollback(Database.java:902)
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.core.database.Database.rollback(Database.java:880)
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:339)
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.trans.steps.tableoutput.TableOutput.processRow(TableOutput.java:125)
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62)
2023/04/28 10:22:53 - bpm_pro - 	at java.lang.Thread.run(Thread.java:748)
2023/04/28 10:22:53 - bpm_pro - Caused by: org.postgresql.util.PSQLException: This connection has been closed.
2023/04/28 10:22:53 - bpm_pro - 	at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:907)
2023/04/28 10:22:53 - bpm_pro - 	at org.postgresql.jdbc.PgConnection.rollback(PgConnection.java:914)
2023/04/28 10:22:53 - bpm_pro - 	at org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:368)
2023/04/28 10:22:53 - bpm_pro - 	at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.rollback(PoolingDataSource.java:323)
2023/04/28 10:22:53 - bpm_pro - 	at org.pentaho.di.core.database.Database.rollback(Database.java:893)
2023/04/28 10:22:53 - bpm_pro - 	... 5 more

3,解决方法

问题分析

表面上看是在rollback的时候连接已经关闭了,但是为什么同样的数据有时候就不报错呢,那么问题应用就是在做正常表输出的时候已经发生了异常(连接关闭)然后被 catch,在执行rollback前程序只判断了连接是否为空并没有判断连接是否关闭,这就会出现以上的错误信息。

解决方法

连接池配置

  • 自动回收机制 removeAbandoned
    • removeAbandoned=“true”
    • removeAbandonedTimeout=“600”
    • logAbandoned=“true”
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值