<!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/2a8bdd4ffd282b7185c74b52ab452617?s=48&amp;d=https%3A%2F%2Fsecure.gravatar.com%2Favatar%2F2a8bdd4ffd282b7185c74b52ab452617%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="yrodiere" id="email_yrodiere" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=yrodiere" style="color:#6c797f;; color: #3b73af; text-decoration: none">Yoann Rodière</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HSEARCH-2865" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-1cde543a-f2e6-43ab-9f24-3d92d9a050c9" height="16" width="16" border="0" align="absmiddle" alt="Bug"> HSEARCH-2865</a> </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">&nbsp;</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 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/HSEARCH-2865" style="color: #3b73af; text-decoration: none">Re: CollectionUpdateEventTest.testWithClassBridge test fails with ORM 5.2.11-SNAPSHOT</a> </span> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                                <tr> 
                                    <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" 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; border-bottom: none; padding-bottom: 0" 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"> <p style="margin: 10px 0 0; margin-top: 0">I think there's actually a bug in Hibernate Search, which previously was hidden in our test case due to the unnecessary initializations in Hibernate ORM.</p> <p style="margin: 10px 0 0">The currently failing test (CollectionUpdateEventTest.testWithClassBridge) sets up this chain of associations:</p> 
                                                        <div class="preformatted panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="preformattedContent panelContent" style="padding: 9px 12px"> 
                                                                <pre style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal; white-space: pre; word-break: normal; word-wrap: break-word; word-break: break-all; white-space: pre-wrap">Catalog &lt;--(OneToMany)--&gt; CatalogItem &lt;--(ManyToOne)--&gt; Item</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">And assumes (though it's far from explicit) this chain of dependency from the point of view of index content:</p> 
                                                        <div class="preformatted panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="preformattedContent panelContent" style="padding: 9px 12px"> 
                                                                <pre style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal; white-space: pre; word-break: normal; word-wrap: break-word; word-break: break-all; white-space: pre-wrap">Catalog --(is contained in)--&gt; CatalogItem --(is contained in)--&gt; Item</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">These "contained in" relationships are due to both the presence of <tt>@IndexedEmbedded</tt> annotations, and more importantly to the the presence of a class bridge on Item, which could theoretically use about anything in Catalog. Hence, modifying anything in Catalog should result in the associated Item instances to be reindexed: we simply don't know which data the class bridge depends on.</p> <p style="margin: 10px 0 0">The thing is, due to <span class="jira-issue-macro resolved" data-jira-key="HSEARCH-782"> 
                                                                <!-- replace the span with an AUI template --> <a href="https://hibernate.atlassian.net/browse/HSEARCH-782" class="jira-issue-macro-key issue-link" title="Unnecessary loading of @ContainedIn entities causes big performance hit" style="color: #3b73af; text-decoration: none"> <img class="icon" src="https://hibernate.atlassian.net/secure/viewavatar?size=xsmall&amp;avatarId=12143&amp;avatarType=issuetype"> HSEARCH-782 </a> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf" style="background: #cccccc; border: 1px solid #cccccc; border-radius: 3px; color: #333333; display: inline-block; font-size: 11px; font-weight: bold; line-height: 99%; margin: 0; padding: 2px 5px; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #ffffff; border-color: #cccccc; color: #333333" bgcolor="#ffffff">Closed</span> </span> we have an "optimization" in place that will make us skip reindexing when the collection being modified wasn't initialized. This can happen when simply adding an element to an uninitialized collection, for instance: the added element is simply added to a queue under the hood (see <tt>org.hibernate.collection.internal.PersistentBag.add(Object)</tt>).</p> <p style="margin: 10px 0 0">The <span class="jira-issue-macro resolved" data-jira-key="HSEARCH-782"> 
                                                                <!-- replace the span with an AUI template --> <a href="https://hibernate.atlassian.net/browse/HSEARCH-782" class="jira-issue-macro-key issue-link" title="Unnecessary loading of @ContainedIn entities causes big performance hit" style="color: #3b73af; text-decoration: none"> <img class="icon" src="https://hibernate.atlassian.net/secure/viewavatar?size=xsmall&amp;avatarId=12143&amp;avatarType=issuetype"> HSEARCH-782 </a> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf" style="background: #cccccc; border: 1px solid #cccccc; border-radius: 3px; color: #333333; display: inline-block; font-size: 11px; font-weight: bold; line-height: 99%; margin: 0; padding: 2px 5px; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #ffffff; border-color: #cccccc; color: #333333" bgcolor="#ffffff">Closed</span> </span> optimization is located in FullTextIndexEventListener:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
        <span class="code-keyword" style="color: #000091">protected</span> void processCollectionEvent(AbstractCollectionEvent event) {
                <span class="code-comment" style="color: #808080">// ...
</span>
                PersistentCollection persistentCollection = event.getCollection();
                <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">String</span> collectionRole;
                <span class="code-keyword" style="color: #000091">if</span> ( persistentCollection != <span class="code-keyword" style="color: #000091">null</span> ) {
                        <span class="code-keyword" style="color: #000091">if</span> ( !persistentCollection.wasInitialized() ) {
                                <span class="code-comment" style="color: #808080">// non-initialized collections will still trigger events, but we want to skip them
</span>                                <span class="code-comment" style="color: #808080">// as they won't contain <span class="code-keyword" style="color: #000091; color: #808080">new</span> values affecting the index state
</span>                                <span class="code-keyword" style="color: #000091">return</span>;
                        }
                        collectionRole = persistentCollection.getRole();
                }

                <span class="code-comment" style="color: #808080">// ...
</span>        }
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">But this optimization is, in my opinion, pure nonsense: additions to the collection could totally affect other indexes containing the collection owner. This is true in our case, where Item has a class bridge which could depend on practically anything, but it's also true without a class bridge. See for instance this mapping:</p> 
                                                        <div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
                                                            <div class="codeContent panelContent" style="padding: 9px 12px"> 
                                                                <pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>Catalog {
        <span class="code-comment" style="color: #808080">// ...
</span>
        @ContainedIn
        @OneToMany(mappedBy = <span class="code-quote" style="color: #009100">"catalog"</span>, cascade = { CascadeType.REMOVE, CascadeType.REFRESH }, fetch = FetchType.LAZY)
        <span class="code-keyword" style="color: #000091">private</span> Set&lt;CatalogItem&gt; catalogItems = <span class="code-keyword" style="color: #000091">new</span> HashSet&lt;CatalogItem&gt;();

        @ManyToMany(fetch = FetchType.LAZY, mappedBy = <span class="code-quote" style="color: #009100">"catalogs"</span>, cascade = { CascadeType.PERSIST })
        @Field(bridge = @FieldBridge(impl = SomeBridge.class))
        <span class="code-keyword" style="color: #000091">private</span> List&lt;Consumer&gt; consumers = <span class="code-keyword" style="color: #000091">new</span> ArrayList&lt;Consumer&gt;();

        <span class="code-comment" style="color: #808080">// ...
</span>}
</pre> 
                                                            </div>
                                                        </div> <p style="margin: 10px 0 0">Adding a consumer would keep the consumer list uninitialized, but would obviously still affect the index of catalog items, since there is a field bridge on "consumers".</p> <p style="margin: 10px 0 0">I'm currently investigating <span class="jira-issue-macro resolved" data-jira-key="HSEARCH-782"> 
                                                                <!-- replace the span with an AUI template --> <a href="https://hibernate.atlassian.net/browse/HSEARCH-782" class="jira-issue-macro-key issue-link" title="Unnecessary loading of @ContainedIn entities causes big performance hit" style="color: #3b73af; text-decoration: none"> <img class="icon" src="https://hibernate.atlassian.net/secure/viewavatar?size=xsmall&amp;avatarId=12143&amp;avatarType=issuetype"> HSEARCH-782 </a> <span class="aui-lozenge aui-lozenge-subtle aui-lozenge-success jira-macro-single-issue-export-pdf" style="background: #cccccc; border: 1px solid #cccccc; border-radius: 3px; color: #333333; display: inline-block; font-size: 11px; font-weight: bold; line-height: 99%; margin: 0; padding: 2px 5px; text-align: center; text-decoration: none; text-transform: uppercase; background-color: #ffffff; border-color: #cccccc; color: #333333" bgcolor="#ffffff">Closed</span> </span> to see if we could fix it another way... But I suspect there's a bug here, which may affect Hibernate Search even without the Hibernate ORM upgrade. I'll open another ticket if necessary.</p> </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/HSEARCH-2865?inbox=true&focusedCommentId=99416&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-99416",
    "name": "View Comment"
      },
  "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/HSEARCH-2865#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-5762da9f-ef90-4571-b934-ee96ab694cd1" 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/HSEARCH-2865#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">&nbsp;</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&amp;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&amp;ct=EmailNotificationLink&amp;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">(v1000.1236.0#100059-<span title="d624fdcf15c39eb463fb9e90feec26f939b861bf" data-commit-id="d624fdcf15c39eb463fb9e90feec26f939b861bf}">sha1:d624fdc</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"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-df5f3d84-a4ff-4ddf-a876-154f0b4d708e" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix"> </td> 
                                                </tr> 
                                            </tbody>
                                        </table> </td> 
                                </tr> 
                            </tbody>
                        </table> </td> 
                </tr> 
            </tbody>
        </table>   
    </body>
</html>