<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="https://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    I found a bug in JBoss JDBC WrappedConnection
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="https://community.jboss.org/people/hatterjiang">Hatter Jiang</a> in <i>Datasource Configuration</i> - <a href="https://community.jboss.org/message/714438#714438">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p style="color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969);">I'm a chinese user of JBoss 4.0.5GA.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div>We use JBoss JDBC connection pool connect to MySQL database, and we use MySQL proxy, before the MySQL proxy we use F5 as load balancer, as the attachment shows.<p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>In normal status, client use F5(Master) connection to the MySQL proxy, but some times F5(Master) will switch to Slave, and the long time connection will be abandon.</p><p>Then we found, some times the JBoss JDBC connection pool cannot automatic recovery from this erorr, some times can.</p><p>After debug, we found these code:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div>&#160;&#160; public PreparedStatement prepareStatement(String sql) throws SQLException<p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160; {</p><p>&#160;&#160;&#160;&#160;&#160; checkTransaction();</p><p>&#160;&#160;&#160;&#160;&#160; try</p><p>&#160;&#160;&#160;&#160;&#160; {</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WrappedPreparedStatement(this, mc.prepareStatement(sql, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY));</p><p>&#160;&#160;&#160;&#160;&#160; }</p><p>&#160;&#160;&#160;&#160;&#160; catch (Throwable t)</p><p>&#160;&#160;&#160;&#160;&#160; {</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; throw checkException(t);</p><p>&#160;&#160;&#160;&#160;&#160; }</p><p>&#160;&#160; }</p></div><p>We find when "checkTransaction();" cause Exception, MySQL JDBC connection will be mark as closed, but JBoss JDBC WrappedConnection wont mark it as closed, so this connection is aways in the connection pool, but cannot execute any SQL, because the real status of the connection is closed.</p></div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969);">We replace "checkTransaction();" into the try block, and redo the test, it seems OK.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="color: #222222; font-family: arial, sans-serif; text-align: -webkit-auto; background-color: rgba(255, 255, 255, 0.917969);">I also view the latest 7.0.1 CR1b version of JBoss, this problem is not resolved.</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="https://community.jboss.org/message/714438#714438">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Datasource Configuration at <a href="https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2077">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>