异常Transaction rolled back because it has been marked as rollback-only
今天系统中突然出现了下面这个异常:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only。
然后跟踪到代码里面去看了下,伪代码大致如下:
begin transaction;
for(……)
{
doSomething();//抛出了异常或者明确设置了事务为RollbackOnly
}
commit;
end;
doSomething()伪代码:
try
{
begin transaction;
/** do anything */
commit;
end;
}
catch()
{
}
分析原因:
这个是一个事务嵌套事务的例子,在spring里面我们配置了事务的传播机制是REQUIRED,所以这两个事务最终会合并成一个事务。程序中doSomething()中由于某某原因导致抛出异常(或者明确将该事务设置为了RollbackOnly),但是由于其内部已经捕获了这个异常,所以不会影响外面for循环的继续执行,当外面的for循环继续执行完 且准备提交(commit)这个事务时,发现之前这个事务的状态位已经被设置为了RollbackOnly,此时spring就会抛出一个ransaction rolled back because it has been marked as rollback-only。
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only。
然后跟踪到代码里面去看了下,伪代码大致如下:
begin transaction;
for(……)
{
doSomething();//抛出了异常或者明确设置了事务为RollbackOnly
}
commit;
end;
doSomething()伪代码:
try
{
begin transaction;
/** do anything */
commit;
end;
}
catch()
{
}
分析原因:
这个是一个事务嵌套事务的例子,在spring里面我们配置了事务的传播机制是REQUIRED,所以这两个事务最终会合并成一个事务。程序中doSomething()中由于某某原因导致抛出异常(或者明确将该事务设置为了RollbackOnly),但是由于其内部已经捕获了这个异常,所以不会影响外面for循环的继续执行,当外面的for循环继续执行完 且准备提交(commit)这个事务时,发现之前这个事务的状态位已经被设置为了RollbackOnly,此时spring就会抛出一个ransaction rolled back because it has been marked as rollback-only。
解决方法:我是把主方法中的事物去掉,调用方法的事物不变,形成局部的事物回归。
相关推荐
bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree
Java.Bug模式详解 第1章 混乱环境下的灵活方法 1.1 软件设计、实现和维护的趋势 1.1.1 对于稳定、安全 系统的需求增加 1.1.2 传统软件工程技 术的局限性 1.1.3 开放源代码的软 件项目的可利用性 1.1.4 对于...
BugBrain
BUG管理规范BUG管理规范BUG管理规范BUG管理规范BUG管理规范BUG管理规范BUG管理规范
原生小程序开发过程中遇到的奇怪bug以及解决方案
python打包后出现bug
QQ飞车BUG小源码
bug跟踪流程,以图表的形式详细说明了如何发现BUG,回归BUG
自己做的一个Bug统计图,大家相互参考,相互学习!
bugfree2.0是一款开源的bug管理工具,部署方便,只需下载xampp安装apche和mysql服务即可
bug统计分析图表 bug统计分析图表 bug统计分析图表
java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip java小游戏项目(求大神找bug).zipjava小游戏项目(求大神找bug).zip...
bug报告模板经典
禅道Bug提交管理规范 测试流程管理。 本文档定义了bug管理流程及其bug相关信息内容。
中文版bug系统下载bug反馈系统bug反馈系统bug反馈系统bug反馈系统bug反馈系统bug反馈系统
java java查bug 查bug bug 查错 源码
bugfree 程序代码bug管理。 方便程序开发和测试。
可供新手参考使用,内含Bug状态填写说明,BUG单,BUG填写说明.
Bug管理指南 Bug管理指南 Bug管理指南 Bug管理指南