<!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://issues.jboss.org" /> 
        <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://static.jboss.org/developer/gravatar/645210977b379b537aae4a2d7e9103b7?d=mm&amp;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="manovotn" id="email_manovotn" href="https://issues.jboss.org/secure/ViewProfile.jspa?name=manovotn" style="color:#3b73af;; color: #3b73af; text-decoration: none">Matej Novotny</a> <strong>commented</strong> on <a href="https://issues.jboss.org/browse/WELD-2064" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-static-health-31eef323-abd5-4a21-80aa-9fe719f7f68b" height="16" width="16" border="0" align="absmiddle" alt="Enhancement" /> WELD-2064</a> 
                            </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">
                                &nbsp;
                            </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 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://issues.jboss.org/browse/WELD-2064" style="color: #3b73af; text-decoration: none">Re: Add ability to facilitate rolling upgrade without CDI bean loss</a> </span> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                        <tr> 
                            <td id="text-paragraph-pattern-top" class="email-content-main mobile-expand  comment-top-pattern" 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; border-bottom: none; padding-bottom: 0"> 
                                <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"> 
                                            <p style="margin: 10px 0 0 0">I am no clustering expert but I just went ahead and did some testing on Wildfly. In my scenario I used 4 nodes in a cluster and a load balancer in front of them (using httpd and mod_cluster).<br /> I prepared a very basic application with one CDI session scoped bean and an index page which contained the information about which cluster node is serving current request, what is the application version and what is the bean content (I put a randomly generated number there and a message). This was a version 1.0 of the app.<br /> Version 1.1 had another session bean added and obviously I changed the original bean message and app version.<br /> In both cases the WAR I deployed has the same name (for instance testapp.war).</p> 
                                            <p style="margin: 10px 0 0 0">The rolling update was done in this way (hope it's clear enough, can hopefully provide further details):</p> 
                                            <ul> 
                                                <li>
                                                    All 4 nodes went up with the version 1.0, here everything works as expected, sessions are preserved if you bring nodes down etc.
                                                </li> 
                                                <li>
                                                    Take 2 nodes down (preferably those serving your request) and update war files 
                                                    <ul> 
                                                        <li>
                                                            Simply shut down servers
                                                        </li> 
                                                        <li>
                                                            Remove original war file and replace with the new one
                                                        </li> 
                                                        <li>
                                                            Meanwhile refresh the page from time to time to see the session is still in place and you are running version 1.0
                                                        </li> 
                                                    </ul> 
                                                </li> 
                                                <li>
                                                    Bring back the updated nodes 
                                                    <ul> 
                                                        <li>
                                                            Start them as before and give the balancer time to acknowledge this
                                                        </li> 
                                                    </ul> 
                                                </li> 
                                                <li>
                                                    Take down the other two nodes and replace wars
                                                </li> 
                                                <li>
                                                    At this point when you refresh the page, the newly updates servers serve the request 
                                                    <ul> 
                                                        <li>
                                                            Optionally you can bring back the latter two nodes to have 4 up with new app version
                                                        </li> 
                                                    </ul> 
                                                </li> 
                                                <li>
                                                    <b>Here comes the tricky part:</b> 
                                                    <ul> 
                                                        <li>
                                                            If you used <tt>ConfigurationKey.BEAN_IDENTIFIER_INDEX_OPTIMIZATION=true</tt> (this is by default) your app will crash here with IllegalStateException in server log 
                                                            <ul> 
                                                                <li>
                                                                    This is <b>expected</b> as the bean index depends on the amount of beans created which was changed by adding another bean
                                                                </li> 
                                                                <li>
                                                                    The web page will likely show an internal server error, at least for me it did
                                                                </li> 
                                                                <li>
                                                                    If you do not add/remove bean in new app version, it will likely work (though you typically need to add beans I guess)
                                                                </li> 
                                                            </ul> 
                                                        </li> 
                                                        <li>
                                                            If you used <tt>ConfigurationKey.BEAN_IDENTIFIER_INDEX_OPTIMIZATION=false</tt> (via property file for instance) your app will work like a charm 
                                                            <ul> 
                                                                <li>
                                                                    Here the bean index creation differs and is independent of number of beans
                                                                </li> 
                                                                <li>
                                                                    If you haven't lost your session due to timeout you will see the <b>new app version and the old bean content since the session still holds</b>
                                                                </li> 
                                                                <li>
                                                                    After session loss (timeout) you get a brand new session with all the new features as you would expect
                                                                </li> 
                                                            </ul> 
                                                        </li> 
                                                    </ul> 
                                                </li> 
                                            </ul> 
                                            <p style="margin: 10px 0 0 0">The above observation was more or less expected behavior. It might be the case that the changes made in the suggested PR are Glassfish/Payara specific. I cannot speak for other servers though.</p> 
                                            <p style="margin: 10px 0 0 0">Note: You can read more about the <tt>ConfigurationKey.BEAN_IDENTIFIER_INDEX_OPTIMIZATION</tt> <a href="http://docs.jboss.org/weld/reference/latest/en-US/html/configure.html#_bean_identifier_index_optimization" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">in the doc</a>. Not using this config option is said to have a performance impact on session replication but I cannot say how big if any at all.</p> 
                                        </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://issues.jboss.org/browse/WELD-2064#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-bd65524e-3db8-4b55-b00d-f7bfa66fc384" 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://issues.jboss.org/browse/WELD-2064#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">
                                &nbsp;
                            </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.4.11#64026-<span title="78f6ec473a3f058bd5d6c30e9319c7ab376bdb9c" data-commit-id="78f6ec473a3f058bd5d6c30e9319c7ab376bdb9c}">sha1:78f6ec4</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-3b477559-a871-4e7b-8621-607594f0e989" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" /> 
                                        </td> 
                                    </tr> 
                                </table> 
                            </td> 
                        </tr> 
                    </table> 
                </td> 
            </tr> 
        </table>   
    </body>
</html>