Error performing rollback on connection This connection has been closed.

文章描述了一次在使用PostgreSQL数据库时遇到的问题,具体是由于在尝试rollback操作时发现连接已关闭。问题可能源于在表输出步骤中发生的异常,而异常处理未检查连接状态。解决方案涉及到调整数据库连接池配置,启用removeAbandoned机制来自动回收超时的连接。
摘要由CSDN通过智能技术生成

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”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值