[ https://issues.apache.org/jira/browse/DBCP-244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12991367#comment-12991367 ]
tangjie commented on DBCP-244: ------------------------------ the connection hang forever. > Connection socket hangs sporadically in DBCP 1.2.2 but not 1.2.1 > ---------------------------------------------------------------- > > Key: DBCP-244 > URL: https://issues.apache.org/jira/browse/DBCP-244 > Project: Commons Dbcp > Issue Type: Bug > Affects Versions: 1.2.2 > Environment: Fedora Core 3, MySQL 4.1.22. with the latest driver > (5.07). Exceptions only occur in the "job processing" JVM, which sits idle > for long periods of time and occasionally wakes up to interact with the > database. > Reporter: ori > Fix For: 1.3 > > > I think I've traced an exception to DBCP's code. > Communication with the database is hanging sporadically in a production > environment. If I don't set the socketTimeout property on the underlying > connection, it will hang forever. With the socketTimeout property, I get the > following exception: > ------- > com.mysql.jdbc.CommunicationsException: Communications link failure due to > underlying exception: > ** BEGIN NESTED EXCEPTION ** > java.net.SocketTimeoutException > MESSAGE: Read timed out > STACKTRACE: > java.net.SocketTimeoutException: Read timed out > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:129) > at > com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:113) > at > com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:160) > at > com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:188) > at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1994) > at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2411) > at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2916) > at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631) > at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723) > at com.mysql.jdbc.Connection.execSQL(Connection.java:3250) > at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1355) > at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1270) > at > org.apache.commons.dbcp.DelegatingStatement.executeUpdate(DelegatingStatement.java:228) > ... > ------- > It always happens in an infrequently used JVM (not an app server handling > frequent connections). So it's likely the offending connection was asleep for > a long time before the exception occurs. > I've confirmed that this issue only occurs using 1.2.2 and not 1.2.1. I've > been looking through the changelogs but can't find anything that would cause > this behavior. > Does somebody familiar with the codebase have any idea what change > (1.2.1->1.2.2) could be causing this behavior? > Thanks -- This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira