异常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
出现频率是指 Bug 的出现频率和可能性。这份信息非常重要,因为它可以帮助开发团队评估 Bug 的影响范围和可能性,从而更好地确定处理优先级。 状态 状态是指 Bug 的当前处理状况。这份信息非常重要,因为它可以帮助...
BugFree是一款开源的缺陷跟踪系统,专为程序代码的bug管理设计,旨在简化软件开发和测试过程中的问题追踪。在软件开发中,bug是不可避免的,BugFree提供了一个高效的平台来记录、跟踪、修复这些问题,确保项目的顺利...
BugFree 2.0 是一款专为软件测试而设计的开源Bug管理工具,它提供了高效、易用且灵活的环境来跟踪和管理软件开发过程中的缺陷。这款工具旨在帮助开发团队更好地协调工作,确保产品质量,减少错误并提高整体开发效率...
4. **预测未来趋势**:基于历史数据的分析,可以预测未来的bug出现模式,提前做好预防措施,减少后期维护成本。 ### 三、如何创建有效的bug统计分析图表 1. **定义关键指标**:确定哪些类型的bug需要被统计,如按...
例如,需求管理允许团队清晰地定义产品需求,避免在开发过程中出现理解偏差;任务管理则有助于分解大项目为小任务,分配给团队成员,提高工作效率。测试用例管理功能让测试过程规范化,确保测试覆盖率。 在使用禅道...
bug 定义是指在软件开发过程中出现的错误或缺陷,包括高级类、 中级类和低级类三个等级。高级类 bug 是指严重错误,如程序引起的死机、死循环、数据库死锁、存储业务逻辑错误和 SQL 语句性能或逻辑错误等。中级类 ...
QQ飞车BUG小源码
**TFS Bug 管理使用教程** 团队项目中的Bug管理是软件开发过程中的关键环节,确保产品质量和项目进度。微软的TFS(Team Foundation Server)提供了强大的Bug管理功能,与Visual Studio(VS)深度集成,同时支持Java...
本规范以“禅道”管理工具为依托,对研发过程中出现的 Bug 进行规范管理。禅道地址为http://192.168.1.11:88/zentao/user-login.html。研发人员及测试人员首次使用时,应及时修改密码并妥善保管密码。初始用户名与...
8. 导出BUG的最终格式:完成以上步骤后,BUG列表将以一种易于管理和查看的形式出现在Excel表格中,方便进行后续的数据分析和报告生成工作。 总结以上步骤,BugFree3.0.4导出BUG操作是一个涉及Web后台管理、数据格式...
在微信小程序开发过程中,开发者经常会遇到各种bug,这些bug可能在开发工具中表现良好,但在实际设备上却会出现意想不到的问题。以下是一些常见的微信小程序bug及其解决方案。 1. **textarea的padding问题**: ...
5. **分析与优化**:定期查看bug报告,分析bug产生的原因和趋势,以此优化开发流程,减少bug的产生。 综上所述,一个有效的bug管理工具对于任何软件开发团队都是至关重要的。它不仅可以帮助团队有序地处理bug,还...
在软件开发过程中,BUG记录模版是至关重要的工具,它帮助团队系统地追踪、记录、汇总和分析软件中的错误或缺陷。"BUG记录模版(带汇总、统计、分析功能)"是一个专门设计用于提高缺陷管理效率的文档模版,旨在为开发...
2. 严重级别(2 级 BUG):系统功能出现严重错误,严重影响系统运行和用户使用,但无需重启系统就可以恢复或者无法自行恢复,但对系统影响相对较小的故障。 3. 一般级别(3 级 BUG):系统功能实现上出现错误,导致...
原生小程序开发过程中遇到的奇怪bug以及解决方案
供测试使用,反馈bug模板,参考Bug解决描述Bug关闭描述(bug关闭之后由测试人员填写
《Bugfree中的Bug导出与导入功能详解》 在软件开发过程中,Bug管理是一项至关重要的任务,它确保了代码质量的提升和项目进度的顺利进行。Bugfree是一款优秀的开源缺陷跟踪系统,它提供了便捷的Bug管理功能,包括Bug...