日常Bug排查-抛异常不回滚】的更多相关文章

日常Bug排查-抛异常不回滚 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 最近有人反映java应用操作数据库的时候,抛异常不回滚.这还了得,不过笔者笃定肯定是用法的锅,不然就全乱套了.所以笔者去Review他的代码. 代码片段 @Transacion(value="x") public void s1() throw MyException{ update(1); throwBusinessExceptio…
一,为什么框架中根本没有对Exception的一般子类进行回滚配置,异常发生时,事务都进行了回滚 ,说好的只会对RuntimeException(Unchecked 非受检异常)回滚呢? 此时,我们就有必要了解一下,RuntimeException所包含的子类具体有哪些: 这时,或许你就明白了 : 平常代码运行阶段经常遇到的那些异常,其实都是RuntimeException的子类. 受检异常(Checked)一般在编译期就被检出,这就给你造成了一个Spring对于所有异常都会发生回滚的误解. 下…
@Transactianal注解有一些属性,见Spring-Framework-Reference Table17.3 Transactional-settings @Transactional(propagation=Propagation.REQUIRED) //控制事务传播.默认是Propagation.REQUIRED @Transactional(isolation=Isolation.DEFAULT) //控制事务隔离级别.默认跟数据库的默认隔离级别相同 @Transactional…
NESTED内部事务异常会回滚 外部事务不会回滚 :内部事务没有异常,外部事务有异常 则整体事务都回滚…
日常Bug排查-系统失去响应-Redis使用不当 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 开发反应线上系统出现失去响应的现象,收到业务告警已经频繁MarkAndSweep(Full GC)告警.于是找到笔者进行排查. 看基础监控 首先呢,当然是看我们的监控了,找到对应失去响应的系统的ip,看下我们的基础监控. 机器内存持续上升.因为我们是java系统,堆的大小一开始已经设置了最大值. --XX:Xms2g -Xm…
日常Bug排查-消息不消费 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 某天下午,在笔者研究某个问题正high的时候.开发突然找到笔者,线上某个系统突然消费不了queue了.Queue不消费也算是日常问题了.淡定的先把流量切到另一个机房,让问题先恢复再说. 消息累积 然后就是看不消费的queue到哪去了,打开mq(消息中间件)控制台,全部累积到mq上了. 同时开发对笔者反映,只有这个queueu积累了,其它queue…
日常Bug排查-Nginx重复请求? 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,其中不乏一些看起来很低级但很容易犯的问题. 问题现场 有一天运维突然找到我,要我协助排查一个问题.业务开发怀疑Nginx会重复相同的请求,就感觉Nginx自己重试了一样.而PE给我看了下他们的配置,并没有配置任何重试. 第一感觉 我第一感觉就是应该不是Nginx的问题.但是开发怎么得出Nginx重试这个结论的呢? 跟随业务开发思路 于是笔者翻了下他们的邮件,他们是通过P…
mysql的引擎常用的有两个,一个MyISAM,另一个是InnoDB,mysql默认的为MyISAM,而InnoDB才是支持事务的.所以一般需要修改下,如何修改就不说了. 事务需要依赖数据库,好久没使用声明式事务,今天试了下.关键配置如下. <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:met…
原文:http://blog.csdn.net/abc19900828/article/details/39497631 使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作.那么什么是检查型异常什么又是非检查型异常呢?最简单的判断点有两个:1.继承自runtimeexception或error的是非检查型异常,而继承自exc…
最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了.......    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚. 例:     类似这样的方法不会回滚 (一个方法出错,另一个方法不会回滚) : if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); }…