<!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: #333; 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: 0pt; mso-table-rspace: 0pt; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<!-- header here -->
<tr>
<td id="header-pattern-container" style="padding: 0px; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0px; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px"> <img id="header-avatar-image" class="image_fix" src="https://secure.gravatar.com/avatar/c32c4103dacf291cdfa0439e34f2c07e?d=mm&s=48" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top" />
</td>
<td id="header-text-container" valign="middle" style="padding: 0px; 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="gbadner" id="email_gbadner" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=gbadner" style="color:#6c797f;; color: #3b73af; text-decoration: none">Gail Badner</a> <strong>updated</strong> an issue
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0px; 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: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: separate">
<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: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 15px; background-color: #fff; border-left: 1px solid #ccc; border-top: 1px solid #ccc; border-right: 1px solid #ccc; 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">
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="page-title-pattern-first-line " style="padding: 0px; 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-9106" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-static-bug-4617ec59-3158-46a8-b08d-459e0aa33d59" height="16" width="16" border="0" align="absmiddle" alt="Bug" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/HHH-9106" style="color: #3b73af; text-decoration: none">HHH-9106</a>
</td>
</tr>
<tr>
<td style="vertical-align: top;; padding: 0px; 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-9106" style="color: #3b73af; text-decoration: none">Multiple representations of the same entity cannot be merged using cascade=merge</a> </span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand wrapper-special-margin" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 10px; padding-bottom: 5px">
<table class="keyvalue-table" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<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: 0px; border-collapse: collapse; font: normal 14px/20px Arial, sans-serif; padding: 2px 0 2px 5px; vertical-align: top"> <a class="user-hover" rel="gbadner" id="email_gbadner" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=gbadner" style="color:#6c797f;; color: #3b73af; text-decoration: none">Gail Badner</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand issue-description-container" style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff; padding-top: 5px; padding-bottom: 10px">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0px; border-collapse: collapse; padding: 0 0 10px 0"> <span class="diffcontext">The fix for HHH-6848 causes IllegalStateException when merging an entity results in merging more than one representation of the same detached entity.<br /><br />For example, Hibernate throws IllegalStateException when merging entity 'x' if it has references to 2 detached entities 'y1' and 'y2' (obtained from different sessions), and y1 and y2 represent the same persistent entity.<br /><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">When one of</span> <span class="diffaddedchars" style="background-color:#ddfade;">Documentation will be added to</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> representations</span> <span class="diffaddedchars" style="background-color:#ddfade;"> manual by HHH-9216. Here</span> <span class="diffcontext"> is</span> <span class="diffaddedchars" style="background-color:#ddfade;"> some documentation to get people going.<br /><br />OVERVIEW:<br /><br />A new configuration property, hibernate.event.merge.entity_copy_observer, controls how Hibernate will respond when multiple representations of</span> <span class="diffcontext"> the</span> <span class="diffaddedchars" style="background-color:#ddfade;"> same persistent entity (</span> <span class="diffcontext"> "</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">root</span> <span class="diffaddedchars" style="background-color:#ddfade;">entity copy</span> <span class="diffcontext">"</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> object being merged (e</span> <span class="diffaddedchars" style="background-color:#ddfade;">) is detected while merging</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">g</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br /><br />hibernate</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">, session</span> <span class="diffaddedchars" style="background-color:#ddfade;">event</span> <span class="diffcontext">.merge</span> <span class="diffaddedchars" style="background-color:#ddfade;">.entity_copy_observer can be set to one of the following values:<br />* disallow</span> <span class="diffcontext">(</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> y1</span> <span class="diffaddedchars" style="background-color:#ddfade;">the default</span> <span class="diffcontext"> )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">), and another representation</span> <span class="diffaddedchars" style="background-color:#ddfade;">: throws IllegalStateException if an entity copy</span> <span class="diffcontext"> is</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> encountered on cascade-</span> <span class="diffaddedchars" style="background-color:#ddfade;"> detected;<br />* allow: performs the</span> <span class="diffcontext">merge</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">,</span> <span class="diffaddedchars" style="background-color:#ddfade;"> operation on each entity copy that is detected;<br />* log: (provided for testing only) performs</span> <span class="diffcontext"> the merge</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> result should</span> <span class="diffaddedchars" style="background-color:#ddfade;"> operation on each entity copy that is detected and logs information about the entity copies. This setting requires DEBUG logging</span> <span class="diffcontext"> be</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> as copied from</span> <span class="diffaddedchars" style="background-color:#ddfade;"> enabled for org.hibernate.event.internal.EntityCopyAllowedLoggedObserver.<br /><br />In addition</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> root object;</span> <span class="diffaddedchars" style="background-color:#ddfade;"> application may customize the behavior by providing an implementation of org.hibernate.event.spi.EntityCopyObserver</span> <span class="diffcontext"> and</span> <span class="diffaddedchars" style="background-color:#ddfade;"> setting hibernate.event.merge.entity_copy_observer to</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> representation encountered while cascading should be ignored</span> <span class="diffaddedchars" style="background-color:#ddfade;"> class name</span> <span class="diffcontext">.<br /><br />When</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> top-level merges are used to</span> <span class="diffaddedchars" style="background-color:#ddfade;"> hibernate.event.</span> <span class="diffcontext"> merge</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> multiple representations</span> <span class="diffaddedchars" style="background-color:#ddfade;">.entity_copy_observer=allow or log, Hibernate will merge each entity copy detected while cascading the merge operation. In the process</span> <span class="diffcontext"> of</span> <span class="diffaddedchars" style="background-color:#ddfade;"> merging each entity copy, Hibernate will cascade</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> same</span> <span class="diffaddedchars" style="background-color:#ddfade;"> merge operation from each</span> <span class="diffcontext"> entity</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> as in:<br /><br />{code}<br />y</span> <span class="diffaddedchars" style="background-color:#ddfade;"> copy to its assocations with cascade</span> <span class="diffcontext"> =</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> (Y) s</span> <span class="diffaddedchars" style="background-color:#ddfade;">CascadeType</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">merge( y1 );</span> <span class="diffaddedchars" style="background-color:#ddfade;">MERGE or CascadeType.ALL. The entity state resulting from merging an entity copy will be overwritten when another entity copy is merged.</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">y =</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br />There are no known issues with merging multiple entity copies as long as they are consistent</span> <span class="diffcontext"> (</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">Y) s</span> <span class="diffaddedchars" style="background-color:#ddfade;">i</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">merge( y2</span> <span class="diffaddedchars" style="background-color:#ddfade;">e. have the same property/association values</span> <span class="diffcontext"> )</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">;</span> <span class="diffaddedchars" style="background-color:#ddfade;">.</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">{code}</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">RISKS OF MERGING ENTITY COPIES:</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">The</span> <span class="diffaddedchars" style="background-color:#ddfade;"><br />Because cascade order is undefined, the order in which the entity copies are merged is undefined. As a result, if property values in the entity copies are not consistent, the resulting entity</span> <span class="diffcontext"> state</span> <span class="diffaddedchars" style="background-color:#ddfade;"> will be indeterminate and data will be lost</span> <span class="diffcontext"> from</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> y2 should "win"</span> <span class="diffaddedchars" style="background-color:#ddfade;"> all entity copies except for the last one merged</span> <span class="diffcontext">.<br /><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">In other cases</span> <span class="diffaddedchars" style="background-color:#ddfade;">If an entity copy cascades the merge operation to an association that is (or contains) a new entity</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> one representation</span> <span class="diffaddedchars" style="background-color:#ddfade;"> that new entity</span> <span class="diffcontext"> will</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> "win"; any other representations</span> <span class="diffaddedchars" style="background-color:#ddfade;"> be merged (i.e, persisted and the merge operation</span> <span class="diffcontext"> will be</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> ignored</span> <span class="diffaddedchars" style="background-color:#ddfade;"> cascaded to its associations according to its mapping), even if that same association is ultimately overwritten when Hibernate merges a different representation having a different value for its association</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> Because cascade-order</span> <span class="diffaddedchars" style="background-color:#ddfade;"> If the association</span> <span class="diffcontext"> is</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> indeterminate</span> <span class="diffaddedchars" style="background-color:#ddfade;"> mapped with orphanRemoval=true</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> it</span> <span class="diffaddedchars" style="background-color:#ddfade;"> the new entity</span> <span class="diffcontext"> will not be</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> possible to know which will be</span> <span class="diffaddedchars" style="background-color:#ddfade;"> deleted because</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> winner</span> <span class="diffaddedchars" style="background-color:#ddfade;"> semantics of orphanRemoval do not apply if the entity being orphaned is a new entity</span> <span class="diffcontext">.<br /><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">It</span> <span class="diffaddedchars" style="background-color:#ddfade;">There are known issues when representations of the same persistent entity have different values for a collection. See HHH-9239 and HHH-9240 for details. These issues can cause data loss or corruption.<br /><br />By setting hibernate.event.merge.entity_copy_observer=allow or log, Hibernate will allow entity copies of any type of entity to be merged. The only way to exclude particular entity classes or associations that contain critical data</span> <span class="diffcontext"> is</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> possible</span> <span class="diffcontext"> to</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> log</span> <span class="diffaddedchars" style="background-color:#ddfade;"> provide a custom implementation of org.hibernate.event.spi.EntityCopyObserver with</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> current database state</span> <span class="diffaddedchars" style="background-color:#ddfade;"> desired behavior</span> <span class="diffcontext">,</span> <span class="diffaddedchars" style="background-color:#ddfade;"> and setting hibernate.event.merge.entity_copy_observer to</span> <span class="diffcontext"> the</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> winner</span> <span class="diffaddedchars" style="background-color:#ddfade;"> class name.<br /><br />RECOMMENDATIONS:<br /><br />Hibernate provides limited DEBUG logging capabilities that can help determine the entity classes for which entity copies were found. By setting hibernate.event.merge.entity_copy_observer=log</span> <span class="diffcontext"> and</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> losers</span> <span class="diffaddedchars" style="background-color:#ddfade;"> enabling DEBUG logging for org</span> <span class="diffcontext">.</span> <span class="diffaddedchars" style="background-color:#ddfade;">hibernate.event.internal.EntityCopyAllowedLoggedObserver, the following will be logged each time an application calls EntityManager.merge( entity ) or Session.merge( entity ):</span> <span class="diffcontext"><br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">- number of times multiple representations of the same persistent entity was detected summarized by entity name;</span> <span class="diffcontext"><br /></span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">We'll need to work out</span> <span class="diffaddedchars" style="background-color:#ddfade;">-</span> <span class="diffcontext"> details</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> about what gets logged</span> <span class="diffaddedchars" style="background-color:#ddfade;"> by entity name</span> <span class="diffcontext"> and</span> <span class="diffaddedchars" style="background-color:#ddfade;"> ID, including output from calling toString() on each representation being merged as well as</span> <span class="diffcontext"> the</span> <span class="diffaddedchars" style="background-color:#ddfade;"> merge result.<br /><br />The</span> <span class="diffcontext"> log</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> level (INFO</span> <span class="diffaddedchars" style="background-color:#ddfade;"> should be reviewed to determine if multiple representations of entities containing critical data are detected. If so</span> <span class="diffcontext">,</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;"> WARN</span> <span class="diffaddedchars" style="background-color:#ddfade;"> the application should be modified so there is only one representation</span> <span class="diffcontext">,</span> <span class="diffaddedchars" style="background-color:#ddfade;"> and a custom implementation of org</span> <span class="diffcontext"> .</span> <span class="diffaddedchars" style="background-color:#ddfade;">hibernate</span> <span class="diffcontext">.</span> <span class="diffaddedchars" style="background-color:#ddfade;">event</span> <span class="diffcontext">.</span> <span class="diffremovedchars" style="background-color: #ffe7e7; text-decoration:line-through;">)</span> <span class="diffaddedchars" style="background-color:#ddfade;">spi.EntityCopyObserver should be provided to disallow entity copies for entities with critical data.<br /><br />Using optimistic locking is recommended to detect if different representations are from different versions of the same persistent entity. If they are not from the same version, Hibernate will throw StaleObjectStateException.</span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0px; border-collapse: collapse; border-left: 1px solid #ccc; border-right: 1px solid #ccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #fff">
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0px; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0px; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0px; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-9106#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-b694cb32-114b-451d-bb8c-e7414767bf44" 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: 0px; 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-9106#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a>
</td>
</tr>
</table>
</td>
</tr>
</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: 0px; border-collapse: collapse; color: #fff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #fff; border-top: 0; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; border-right: 1px solid #ccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0px; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0px; border-collapse: collapse; color: #999; 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">(v6.3-OD-08-005-WN#6328-<span title="aae40f7178774ac0c2b0a349d29c88f14216faa1" data-commit-id="aae40f7178774ac0c2b0a349d29c88f14216faa1}">sha1:aae40f7</span>)</span>
</td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0px; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt">
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0px; border-collapse: collapse; padding-top: 3px"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-c38f8018-8397-4a07-b721-934b7a4ebc48" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>