<!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/12df4da7e3351be801bc16b66caf8038?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="hardy.ferentschik" id="email_hardy.ferentschik" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=hardy.ferentschik" style="color:#6c797f;; color: #3b73af; text-decoration: none">Hardy Ferentschik</a> <strong>edited a comment</strong> on 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 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/HSEARCH-1121" style="color: #3b73af; text-decoration: none">Re: Work on a proper classloader strategy</a> </span>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="text-paragraph-pattern-top" class="email-content-main mobile-expand comment-top-special-margin 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; padding-top: 10px"> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}<br /></span> <span class="diffcontext"><ttarrant> sannegrinovero, your org.hibernate.search.engine imports <module name="org.infinispan" /><br /><ttarrant> sannegrinovero, sans-slot<br /><sannegrinovero> ttarrant, hu right. Actually that's tricky, as we need to depend on the current main Infinispan slot for Hibernate Search.<br /><sannegrinovero> ttarrant, (we don't need but it's optional - we need that version)<br /><sannegrinovero> ttarrant, what do you suggest? Can you override that for Query, or should I NOT define such dependency and have it specify by the users? (would my services be able to import it in that case?)<br /><ttarrant> sannegrinovero, I don't think you can do that<br /><sannegrinovero> ttarrant, what are the options?<br /><ttarrant> sannegrinovero, we need dmlloyd<br /><sannegrinovero> ttarrant, :)<br /><ttarrant> sannegrinovero, because it's not a matter of what you can or cannot do<br /><sannegrinovero> ttarrant, I guess the source of the problem could be considered that Search is built against infinispan 5.1 (which happens to be default slot) while we override that in Infinispan Query for obvious reasons<br /><dmlloyd> you've got me!<br /><sannegrinovero> dmlloyd, thanks and congratulations!<br /><dmlloyd> thank you!<br /><sannegrinovero> dmlloyd, you might have seen on in.relation.to, we started to "package" some of our libraries as ready-to-download modules for AS7<br /><sannegrinovero> dmlloyd, mostly because several projects are depending, in this case, on Hibernate Search: CapeDwarf, ModeShape, Infinispan, ..<br /><sannegrinovero> dmlloyd, now since my priority is people using AS7.1 we made Hibernate Search modules using the Infinispan slot "main" (i.e. version 5.1.x)<br /><Kosch> bleeding edge user ;)<br /><sannegrinovero> dmlloyd, but Infinispan (master, i.e. 5.2.x) would like to consume it as well for the search functionality.<br /><sannegrinovero> dmlloyd, now in the Search-Engine, we have an optional dependency on Infinispan, which is loaded as a service, hence Search depends on the Infinispan module.<br /><dmlloyd> and the new infinispan is under a different slot?<br /><sannegrinovero> yes<br /><sannegrinovero> I though I could remove the dependency from the Search to Infinispam module, but I assume that removing this dependency, I won't be able to load the services from it anymore.<br /><dmlloyd> okay well problem number one is probably that the new infinispan should probably not be under a new slot, rather it should replace the original... but I'll leave that aside for the moment<br /><dmlloyd> Inifispam, lol<br /><dmlloyd> best typo...<br /><dmlloyd> this N versions problem is really best addressed by using separate API/implementation modules<br /><sannegrinovero> I think we all agree in theory, but JDG is built on top of EAP and there isn't an EAP with latest Infinispan (which is obviously needed for it)<br /><sannegrinovero> while we know that we can't rip out Infinispan from AS7 without breaking things<br /><dmlloyd> nevertheless JDG should be able to replace modules with updated versions according to the "addon" layered product methodology, can it not?<br /><sannegrinovero> ttarrant, still following along? you know those reasons better ^^<br /><sannegrinovero> dmlloyd, do we have other examples of "addons" replacing existing core technology?<br /><dmlloyd> I do not believe there are actual examples of any layered products yet really!<br /><sannegrinovero> actually that's not a relevant question sorry: there might be some, still we know that this one is plain incompatible.<br /><ttarrant> dmlloyd, problem<br /><ttarrant> dmlloyd, as you know the AS uses a specific version of Infinispan internally for clustering<br /><ttarrant> dmlloyd, but when we (the infinispan team) release a new version we don't want to interfere with that<br /><sannegrinovero> AFAIK the configuration parsing is different too<br /><ttarrant> dmlloyd, I also just created MODULES-150: is that applicable ?<br /><jbossbot> jira [MODULES-150] Allow specifying slot in MANIFEST Dependencies [Open (Unresolved) Feature Request, Major, David Lloyd] https://issues.jboss.org/browse/MODULES-150<br /><dmlloyd> you already *can* specify slot in MANIFEST<br /><dmlloyd> at least in jboss modules you can<br /><dmlloyd> foo.bar:slot<br /><dmlloyd> JBoss AS has its own manifest dependency processor but it should also support it<br /><dmlloyd> the only other solution is to duplicate your hib search module for each version of infinispan it ties on to<br /><dmlloyd> or otherwise break the dependency<br /><dmlloyd> if the dep is only for service loading you should be able to break it another way (e.g. specify ClassLoader when locating the service, use TCCL to detect what version to try, etc.)<br /><ttarrant> dmlloyd, ok<br /><dmlloyd> an API module solves the problem more elegantly, though it's higher maintenance to be sure<br /><sannegrinovero> This is currently not very practical, but I like it best: by using different versions we should clearly label it with a different identifier, so I like the clarity of the solution.<br /><dmlloyd> you have to ensure that your APIs are 100% backwards compatible forever, from a linking perspective<br /><sannegrinovero> (referring to duplicate in different modules ^)<br /><dmlloyd> so that old versions can use new APIs<br /><rhauch> dmlloyd: yes, but I'd still love to have one. :-)<br /><sannegrinovero> specifying the ClassLoader is a good point, I'll think about having that but in the next version, so next time we'll have an additional option.<br /><sannegrinovero> ttarrant, what do you think of that ^? Can we find a solution for this round, and use a classloader in the future?<br /><ttarrant> sannegrinovero, yes<br /><sannegrinovero> ttarrant, good I'll make an option that the SearchConfiguration can take a CL instance to use for loading of services.<br /></span> <span class="diffaddedchars" style="background-color:#ddfade;">{noformat}</span> <span class="diffcontext"><br /><br />Conclusion: Integrators should be able to pass a ClassLoader to the SearchConfiguration; this doesn't necessarily need to break the SPI as we can use the "Provided Services" trick.<br /><br />To be discussed: how many different ClassLoaders do we need? just one for "Services" or is there a differentiation for example for "User extensions", ... ?<br />Or maybe thinks like additional Services (in Hibernate Search terminology) should be loaded from a different source (CL) than for example stopword lists, Domain objects (entities), custom Analyzers?<br /><br />To keep in mind also the Hibernate ORM has an internal service for ClassLoading; in Search ORM we should use that one.<br /></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/HSEARCH-1121#add-comment" target="_blank" title="{getText($action.text)}" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="https://hibernate.atlassian.net/images/mail/comment-icon.png" alt="Add Comment" title="{Add Comment}-icon" 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/HSEARCH-1121#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 class="contextual-area-pattern" style="padding: 0px; border-collapse: collapse; padding: 15px 20px 0 20px">
<table class="contextual-excerpt-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-bottom: 1px solid #ccc">
<tr>
<td class="contextual-excerpt-pattern-text contextual-excerpt-pattern-text-container mobile-resize-text" valign="top" 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: 1px; padding: 4px 0 17px 0">
<div>
<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/HSEARCH" style="color: #3b73af; text-decoration: none">Hibernate Search</a> / <a href="https://hibernate.atlassian.net/browse/HSEARCH-1121" style="color: #3b73af; text-decoration: none"><img src="https://hibernate.atlassian.net/images/icons/issuetypes/improvement.png" height="16" width="16" border="0" align="absmiddle" alt="Improvement" style="vertical-align: text-bottom" /></a> <a href="https://hibernate.atlassian.net/browse/HSEARCH-1121" style="color: #3b73af; text-decoration: none">HSEARCH-1121</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/HSEARCH-1121" style="color: #3b73af; text-decoration: none">Work on a proper classloader strategy</a> </span>
</td>
</tr>
</table>
<div style="padding-top: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">
Today we mostly expect the TCCL to be correct plus a minor ad-hoc fixes to make CapeDwarf and Modeshape work but it would be better to offer a clean way to define the classloaders.<br /> <br /> introduce various classes of classloaders:<br /> <br /> - Hibernate Search module classloader<br /> - Application classloader<br /> <br /> Or maybe it should rather be:<br /> <br /> - entity classloader<br /> - analyzer cla...
</td>
</tr>
</table>
</div>
</div>
</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.1-OD-09-WN#6144-<span title="62dfc48b48ace9520c38e8a9da28a9bf6fe10e82" data-commit-id="62dfc48b48ace9520c38e8a9da28a9bf6fe10e82}">sha1:62dfc48</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="https://hibernate.atlassian.net/images/mail/footer-desktop-logo.png" alt="Atlassian logo" title="Atlassian logo" width="169" height="36" class="image_fix" />
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>