On 9 mars 2010, at 14:37, Sanne Grinovero wrote:

> Inline:
> 
> 2010/3/9 Emmanuel Bernard <emman...@hibernate.org>:
>> 
>> On 9 mars 2010, at 12:47, Sanne Grinovero wrote:
>> 
>>> Hi all,
>>> I'd like to merge the Infinispan DirectoryProvider soon:
>>> 
>>> The code is trivial as it was designed primarily for Search, but some
>>> points need to be discussed:
>>> 
>>> 1) Dependencies
>>> 1A) Transaction implementation:
>>> It does require Infinispan modules, most are transitive dependencies of
>>>   <groupId>org.infinispan</groupId>
>>>   <artifactId>infinispan-lucene-directory</artifactId>
>>> 
>>> but it also requires a transaction manager implementation, which is
>>> not enforced by infinispan as any implementation will do.
>>> Shall we "suggest" one as optional dependency?
>>> This is going to add many dependencies, but we need something at least
>>> for tests.
>> 
>> I'd mark it provided or something like that? What is the strategy that the 
>> Infiniboys use for their tests?
>> 
> 
> In Infinispan dependencies like jbossjta are in test scope while the
> jboss-transaction-api is in compile scope;
> fine for me, I'm just warning that without modularizing Search this is
> going to introduce many additional jars.

We need to modularize anyway. Waiting for Hardy AFAIR.

>> 
>> 
>>> 
>>> 2) Infinispan initialization
>>> A single CacheManager should be shared across many caches; in practice
>>> while I'd suggest to use a different cache per index we even do
>>> support more than one index in the same cache.
>>> At least a configuration property would be needed to point the
>>> CacheManager initialization to an Infinispan configuration file -
>>> which in turn will lilkely point to a JGroups configuration file.
>>> This configuration property could be global or "directory scoped" like
>>> we do for other properties but that would be complex.
>>> 
>>> I'd suggest a single global CacheManager configuration - which will
>>> trigger a CacheManager initialization in the SearchFactory - and have
>>> different Directories be able to select the cache name and index name
>>> they want to use;
>>> (If two directories use the same cache and same index name they are
>>> sharing the same index)
>>> It would look like:
>>> 
>>> hibernate.search.infinispan_configuration lucene-cluster-conf.xml
>>> hibernate.search.default.directory_provider
>>> org.hibernate.search.store.InfinispanDirectoryProvider
>>> hibernate.search.default.cache_name defaultLuceneIndexes
>>> hibernate.search.Animal.cache_name AnimalsLuceneIndex
>> 
>> Looks good but it means we need some kind of lifecycle hook for this cache 
>> manager to be initialized in Hibernate Search before the directory providers.
>> For example it would be nice to pass the properties to this initializer hook 
>> and let it decide whether or not it needs to do something on SF init and on 
>> SF close. These hooks could be discoverable or example by using the service 
>> pattern.
> 
> I'm not sure about which pattern, do you have an example ? google
> found several different things all generically named "service
> pattern".

Sorry I mean the service locator pattern, ie a file named 
META-INF/org.hibernate.search.Plugin this file containing the plug in to start 
and use (like BV and JPA do to locate providers.
I'm open to other suggestions.
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to