jdk1.6.0_29的bug导致c3p0获取sqlserver连接时被hang住甚至deadlock问题的分析

最近在工作中遇到这样一个问题:一个java应用,作用是从sqlserver数据源同步数据到mysql中,在本地跑很正常,tomcat可以正常启动,可以正常同步数据,一旦放到测试环境上就有问题:tomcat在启动时一直卡住不动,而且也不报错,这是很典型的deadlock问题。我随后修改了一下c3p0连接池的相关参数,果然再启动时就报出一堆错误,下面是部分报错片段:com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@bbd1b —APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!

报出来错就好办,下面就来分析为什么会出现死锁。为什么本地运行的好好的程序换个环境就出问题呢?经过层层的排查。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。此处省略50000字,将tomcat使用的jdk换为1.7版本的,问题立马解决!

刚开始我一直怀疑是C3P0的bug,试了其他数据库连接池甚至使用原生的jdbc方式连接仍然无法获取连接,冤枉了C3P0!

其实这是jdk1.6.0_29本身的bug引起的,相关证据如下:



JDK-7105007 : Microsoft & jTDS JDBC driver broken after update to 1.6.0_29


Details
Type:
Bug
Submit Date:
2011-10-26
Status:
Closed
Updated Date:
2012-03-20
Project Name:
JDK
Resolved Date:
2011-11-16
Component:
security-libs
OS:
solaris_8,windows_2008,windows_xp,windows_7
Sub-Component:
javax.net.ssl
CPU:
x86
Priority:
P2
Resolution:
Duplicate
Affected Versions:
6u26,6u29
Fixed Versions:


Related Reports
Duplicate:
JDK-7103886 - 6.0 u27 upgraded to u29: JDBC for SQLServer hangs on connect
Duplicate:
JDK-7103725 - REGRESSION - 6u29 breaks ssl connectivity using TLS_DH_anon_WITH_AES_128_CBC_SHA
Duplicate:
JDK-7106332 - MSSQL JDBC Driver (Type4) deadlock while establishing connection


Sub Tasks


Description
FULL PRODUCT VERSION :
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7600]


EXTRA RELEVANT SYSTEM CONFIGURATION :
Microsoft JDBC Driver 2.0 / 3.0 / 4.0 CTP 3
SQL Server 2008R2


A DESCRIPTION OF THE PROBLEM :
Creating a JDBC connection through Microsoft JDBC Driver 2.0, 3.0, 4.0 CTP 3, or jTDS 1.2.5 driver to a Microsoft SQL server 2008R2 database using JDK 1.6.0_29 results in an indefinite wait for a connection. This worked fine on all previous versions from 1.6.0_27.


Interrupting the thread does not work, it has to be stopped.


REGRESSION.  Last worked in version 6u26


STEPS TO FOLLOW

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI传道士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值