<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/2d2648167bad341950ecabd1d3793230?s=48&d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F2d2648167bad341950ecabd1d3793230%3Fd%3Dmm%26s%3D48%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="watsonmw" id="email_watsonmw" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=watsonmw" style="color:#6c797f;; color: #3b73af; text-decoration: none">Mark Watson</a> <strong>updated</strong> an issue </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="page-title-pattern-first-line " style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; padding-top: 10px"> <a href="https://hibernate.atlassian.net/browse/HHH" style="color: #3b73af; text-decoration: none">Hibernate ORM</a> / <a href="https://hibernate.atlassian.net/browse/HHH-12285" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-e6aba086-3514-4716-9c40-efa70e03cbfa" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom"></a> <a href="https://hibernate.atlassian.net/browse/HHH-12285" style="color: #3b73af; text-decoration: none">HHH-12285</a> </td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-12285" style="color: #3b73af; text-decoration: none">DB connection exception on rollback causes connection leak</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 10px; padding-bottom: 5px" bgcolor="#ffffff">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<th style="color: #707070; font: normal 14px/20px Arial, sans-serif; text-align: left; vertical-align: top; padding: 2px 0">Change By:</th>
<td style="padding: 0; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="watsonmw" id="email_watsonmw" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=watsonmw" style="color:#6c797f;; color: #3b73af; text-decoration: none">Mark Watson</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; padding-top: 5px; padding-bottom: 10px" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <span class="diffcontext">SessionImpl.close() doesn't close db connections after an exception occurs in java.sql.Connection.rollback(). The db connection remains active in the connection pool and is never released. An exception can occur in Connection.rollback(), for example, when the db connection is lost.<br><br>{code}<br> EntityManager entityManager = entityManagerFactory.createEntityManager();<br> entityManager.getTransaction().begin();</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br><br> JdbcCoordinator connector = ((SessionImpl)entityManager).getJdbcCoordinator();<br> LogicalConnection logicalConnection = connector.getLogicalConnection();<br><br> CustomJdbcConnection</span> <span class="diffaddedchars" style="background-color:#ddfade;"> // Grabs a new</span> <span class="diffcontext"> connection</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> = (CustomJdbcConnection)((SessionImpl)entityManager).connection();</span> <span class="diffaddedchars" style="background-color:#ddfade;"> object and marks as ACTIVE</span> <span class="diffcontext"><br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> connection.setThrowErrorOnNextRollback(true);</span> <span class="diffaddedchars" style="background-color:#ddfade;"> <br> try {</span> <span class="diffcontext"><br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> assertThrows(() -> entityManager.getTransaction().</span> <span class="diffaddedchars" style="background-color:#ddfade;"> // Assume</span> <span class="diffcontext">rollback</span> <span class="diffaddedchars" style="background-color:#ddfade;"> throws an exception</span> <span class="diffcontext">(</span> <span class="diffaddedchars" style="background-color:#ddfade;">for example the underlying db connection is lost</span> <span class="diffcontext">)</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">, TransactionException.class);</span> <span class="diffcontext"><br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br> try {<br></span> <span class="diffcontext"> entityManager.getTransaction().rollback();<br> } catch (PersistenceException s) {<br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> //<br></span> <span class="diffcontext"> } finally {<br> entityManager.close();<br> }<br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffaddedchars" style="background-color:#ddfade;"> <br></span> <span class="diffcontext"> // This should release the connection</span> <span class="diffaddedchars" style="background-color:#ddfade;"> object</span> <span class="diffcontext"> back to the pool, but does not<br> entityManager.close();<br></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"><br></span> <span class="diffcontext">{code}<br><br>Example included, the example uses a subclassed h2 database connection and simulates an exception when calling transaction.rollback().<br><br>I understand normally db connection errors are a larger problem that should be addressed outside of hibernate, but in the pathological case where db connections drop it could cause a knock on effect to use up all connections in the db pool. Note that a connection error when issuing a normal query will get converted into a rollback.<br></span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "View Issue",
"potentialAction": {
"@type": "ViewAction",
"target": "https://hibernate.atlassian.net/browse/HHH-12285?inbox=true&",
"name": "View Issue"
},
"publisher": {
"@type": "Organization",
"name": "Atlassian",
"url": "https://www.atlassian.com"
}
}
</script>
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-12285#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-0877507d-639a-4f80-8898-83618f8d992c" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HHH-12285#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
<hr> </td>
</tr>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100079-<span title="9ee71783b487850cc630e057645f34d1b1144741" data-commit-id="9ee71783b487850cc630e057645f34d1b1144741}">sha1:9ee7178</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-e38c1053-dd8f-4ce9-a072-5d7d3b097a16" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
<img src="https://u4043402.ct.sendgrid.net/wf/open?upn=YNXLe5Uzuivj8jGpuXra04BSJ-2BS7raa1puTAtyVUP-2F0UG25sB-2BHToWWBMcbXwnNU-2BL9mNATTY-2BN1Wihv-2B2-2BravODsQu8YunzG-2FFARwnWKOzPw86wqvmLCj5aWhc1GEoA64pA19xC3fDIBYHWRKJTMTNrjrNkIIvFj-2BAyZMk-2B45a4DQ4Da8y8nlHhAuWQAURj3I237s7LKEKaoTESem6DdyVLG3XZno-2FtOtPpeYjdDsWB-2FiSmZc1beYU7cCGSyC1awEPl6wsZzWSRzbhATNoLUbWHUzITU7i3ga7fX13o2m9qHiAatKqjodLVfI3VrYEy9eJPzr5PAkibuxB-2BmdFHVc8oxa5bhdILCzDV2eW4ILRNPyLouUO1rGoKv-2Bn0xg71wA1I20nEaAUjWJFVc36v4OGJueeBDI8mhUJOntqKjseGtxNHQNCNZl7V-2FbfkHfJ83N26vbbA7r8hPfPSZyztfA-3D-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
</body>
</html>