[infinispan-dev] looking again at AS7-3290 and Hibernate 4.0.1...
Scott Marlow
smarlow at redhat.com
Tue Feb 7 09:03:37 EST 2012
On 02/07/2012 03:28 AM, Galder Zamarreño wrote:
> (I'd have preferred the cc'd guys had continued with the conversation in the dev list...)
Its good that you responded on the other email thread, otherwise, I
might of missed this.
>
> So, Hibernate 3.6.x support is a potential requirement coming down the line the in AS7. Users are asking for it ...
>
> So Scott is voicing his concerns with Hibernate 2LC which now builds custom commands to deal with evict all situations. The previous solution used existing caches as a notification bus which was a PITA to maintain.
>
> Module custom commands and their factories are kept at the cache manager level and they're loaded with the cache manager CL, so that means that the AS7 Infinispan subsystem is hooked to Hibernate 4.0.x now because on startup, Infinispan loads commands and their factories, so any custom commands need to be available on at that point. This makes it hard for AS7 to support other Hibernate versions.
>
> According to Paul, they might be able to workardound this for AS 7.1.1 by allow attaching specific classloaders to a cache manager, but they don't do it in AS7 7.1.0, hence why Hibernate and AS7 subsystem need to be within same classloader.
>
> Although Paul's suggestion should work, I still think there's room for improvement in our custom commands (kinda related to https://issues.jboss.org/browse/ISPN-1835). There's a difference between cache-level commands (i.e. http://goo.gl/OkvU4) and global commands which are not associated with a particular cache (i.e. http://goo.gl/isR00). So, the lifecycle and the classloader used for each should be different.
>
> Thoughts?
I think that describes my concern well.
I'm not that worried about OGM (unless someone wants double buffering
;), its more about users wanting to package in different versions in
Hibernate (newer/older).
For me, the root issue is that we currently need the Infinispan
classloader to see the Hibernate-Infinispan classloader as a static
dependency. That is a dependency that I would like to avoid.
I also have community users asking to use the Hibernate-Infinispan
second level cache integration with Hibernate 3.6.x against AS7. I
opened an email thread to discuss this on Hibernate-dev ml. I need to
know the direction that we are going (with regard to 2lc integration
with Infinispan), so we make the right patch for Hibernate 3.6.x use (if
we make one at all).
Rather than have Infinispan look for the custom commands via the
Hibernate-Infinispan service loader, could we instead pass them into
Infinispan somehow from the Hibernate-Infinispan module (via a SPI
rather than a service loader?).
I would like to see this resolved for the AS 7.1.1 release in some fashion.
>
> Cheers,
>
> On Feb 6, 2012, at 7:05 PM, Manik Surtani wrote:
>
>> What's the actual issue at hand? Wanting to use Infinispan with Hibernate 3.6 in AS 7?
>>
>> On 6 Feb 2012, at 09:53, Galder Zamarreño wrote:
>>
>>> Btw, this discussion should be extended to Infinispan dev list in case we can improve on the custom commands SPI.
>>>
>>> In the case of Hibernate 2LC, the custom command is really a cache specific one, so we could potentially tie up cache specific custom commands to the cache lifecycle, but still don't see how it can really help with the issue below.
>>>
>>> Begin forwarded message:
>>>
>>>> From: Galder Zamarreño<galder at redhat.com>
>>>> Subject: Re: looking again at AS7-3290 and Hibernate 4.0.1...
>>>> Date: February 6, 2012 10:49:03 AM GMT+01:00
>>>> To: Scott Marlow<smarlow at redhat.com>
>>>> Cc: Tristan Tarrant<ttarrant at redhat.com>, Steve Ebersole<steve at hibernate.org>, Paul Ferraro<pferraro at redhat.com>
>>>>
>>>>
>>>> On Feb 3, 2012, at 6:43 PM, Scott Marlow wrote:
>>>>
>>>>> On 02/03/2012 10:33 AM, Scott Marlow wrote:
>>>>>> I was just reviewing the change we made to address
>>>>>> https://issues.jboss.org/browse/AS7-3290 (Infinispan needed to see the
>>>>>> Hibernate-Infinispan modules services, when AS7 constructs the
>>>>>> Infinispan global component registry).
>>>>>>
>>>>>> This turns into a dependency from the AS7
>>>>>> org.jboss.as.clustering.infinispan module onto our
>>>>>> org.hibernate.infinispan module (contains the Hibernate-Infinispan 4.0.1
>>>>>> jar).
>>>>>>
>>>>>> Community users are asking to use the Infinispan 2lc with Hibernate
>>>>>> 3.6.x also which we don't ship. I would imagine that the same request
>>>>>> will come in for OGM in the future.
>>>>
>>>> If they wanna use Infinispan 2LC with Hibernate 3.6.x, they won't be able to use Infinispan 5.1.x. So far, 3.6.x has only been tested with 4.2.x.
>>>>
>>>> Are you sure this is gonna be supported??
>>>>
>>>>>>
>>>>>> Is there another way to avoid this dependency between the constructor of
>>>>>> the Infinispan global component registry and all of the persistence
>>>>>> provider modules that want to use the 2lc?
>>>>>
>>>>> Is this the commit that brought this requirement in? https://github.com/hibernate/hibernate-orm/commit/cc9fbf42a9a75a2317675907ed077d84826117db
>>>>>
>>>>> Could this be made optional or reverted in a 4.0.2.Final build?
>>>>
>>>> Hmmmm, that would require going back to using a cache as a way to send evict all invalidation messages around the cluster which is a hack. Custom commands are the best way to handle this use case IMO.
>>>>
>>>> At the moment, these commands at their factories are loaded on startup, when the GCR is created.
>>>>
>>>> I wonder if it would help if Infinispan would load them lazily? RemoteCommandFactory could potentially look up the command factory when it receives a request for a custom command, but you still have the same issue of needing to find Hibernate 2LC classes from Infinispan jar.
>>>>
>>>> Btw, I don't see how different this problem is to when a user defines a custom cache loader (or any other SPIs we have) and wants to plug that into Infinispan. The CL where Infinispan is, is gonna need to know about these custom classes. Same thing happens for Hibernate 2LC which is implementing an SPI.
>>>>
>>>>>
>>>>>>
>>>>>> Scott
>>>>>
>>>>
>>>> --
>>>> Galder Zamarreño
>>>> Sr. Software Engineer
>>>> Infinispan, JBoss Cache
>>>>
>>>
>>> --
>>> Galder Zamarreño
>>> Sr. Software Engineer
>>> Infinispan, JBoss Cache
>>>
>>>
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>> --
>> Manik Surtani
>> manik at jboss.org
>> twitter.com/maniksurtani
>>
>> Lead, Infinispan
>> http://www.infinispan.org
>>
>>
>>
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> --
> Galder Zamarreño
> Sr. Software Engineer
> Infinispan, JBoss Cache
>
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
More information about the infinispan-dev
mailing list