锁表导致的BUG
来源:互联网 发布:开源免费的cms系统 编辑:程序博客网 时间:2024/05/21 16:56
昨天写代码的时候,一段原本运行的很好的代码,忽然之间就出了诡异的问题了:在service层的方法中,有一条插入数据库的语句,一条更新数据库的语句(不是同一张表),如果不出异常就返回true,出异常就返回false。症状是:执行完return true之后,即使放过断点,程序也不动了,不继续执行调用他的方法。
我开始的时候以为是IDE的问题,或者是tomcat缓存的问题,于是重新编译了下项目,把tomcat下相关的东西也都清空了,发现还是不好用,本着节约时间的原则,请来同事帮忙。
同事开始的时候,也是向我一样,重新编译,清空……,发现也不好用。经过一系列折腾之后,同事注释掉了service层方法中的那条更新数据库的语句,只运行插入数据库的语句,OK,一切正常。这时候,我好奇心起来了,把插入语句注释掉,只执行更新语句,发现症状又出来了。
这时候基本就可用认为是更新的部分出问题了,于是同事让我把hibernate打印出的SQL放到PL/SQL里面去执行(话说我从来没想过要把更新语句放到PL/SQL里面去执行,更新语句还能出错?),我俩大眼瞪小眼的看了半天,也没发现那条SQL的问题,但是放到PL/SQL里面执行的时候,却死活都是执行中的状态,没个结果。后来终于想到,难道是锁表了?
于是我让DBA帮查下这个表是不是被锁住了?DBA一看,果然被锁了,而且还是N多没有commit的,让DBA杀死这些死锁之后,再运行程序,果然正常了。
同事跟我说:“你去买块豆腐吧”。
只是我想了一个晚上,也没想到这个死锁是怎么开始的呢?
总结:
1、遇到问题不要慌张,不要紧张,不要因为诡异的,自己没见过的问题就认为自己解决不了。这个问题其实是个很简单的问题。
2、多问问同事也是好的,有利于节省时间,不过不能解决了就解决了,还得自己总结总结,否则下次出现类似的问题还是不会解决。
3、我之前已经基本不怕系统报告的异常了,但是昨天碰到这种什么反映都没有的情况着实还是怕了一下。以后争取不怕任何问题。
- 锁表导致的BUG
- if导致的bug
- snprintf 导致的bug
- 粗心导致的bug
- munmap导致的BUG
- jdk版本导致的bug
- 经验问题导致的bug
- 依赖包导致的bug
- Java mkdir() 导致的Bug
- 一次笔误导致的bug
- 事件嵌套导致的bug
- 类型错误导致的bug
- 测试导致CSDN Blog Bug的字符
- chroot导致日志时间出错的BUG
- bug之类定义导致的内存泄露
- Py_SetPath导致的BUG一例(issue11320)
- 记录一个粗心所导致的bug
- TNSNAMES配置中空格导致的bug
- 计算机专业考研大纲
- linq 实现动态 orderby
- c# JSON互相访问类。。。。
- 看看过来人的经历会有所启示
- mysql编程技巧
- 锁表导致的BUG
- PHP内存缓存功能memcached
- .NET 开发人员最好的资源
- 将ubuntu 8.04 (server x86_64)的系统编码由英文改成中文,即由en_US.UTF-8改为zh_CN.GBK
- VIMPerator 使用
- 单点登录实现思路
- JS JSON对象转为字符串
- Fisheye-Crucible2.4.3安装&破解
- 软件考试有感(二)