[infinispan-dev] Infinispan URL format

Radim Vansa rvansa at redhat.com
Wed Jun 1 03:02:46 EDT 2016


On 05/31/2016 01:33 PM, Galder Zamarreño wrote:
> Comments inline:
>
> --
> Galder Zamarreño
> Infinispan, Red Hat
>
>> On 30 May 2016, at 09:46, Tristan Tarrant <ttarrant at redhat.com> wrote:
>>
>> In the past there has been talk of representing a connection to
>> Infinispan using a URL, in particular for HotRod.
>> The Hibernate OGM team is now working on adding NoSQL datasources to
>> WildFly, and they've asked for they should represent connections to
>> various of these.
> ^ What's this trying to solve exactly?
>
>> For Hot Rod:
>>
>> infinispan:hotrod://[host1][:port1][,[host2][:port2]]...[/cachemanager]
>>
>> The [cachemanager] part is for multi-tenant servers (Hot Rod doesn't
>> currently support this, so this is forward-looking).
>> Obviously we will support all of the HotRod properties for specifying
>> things like security, etc.
> ^ Hmmm, all properties? Do you envision potentially putting all HR client config inside a URL?
>
>> For Embedded:
>>
>> infinispan:embedded:file://path/to/config.xml (for specifying an
>> external config file)
>> infinispan:embedded:jndi://path/to/jndi (for referencing a cachemanager
>> in JNDI)
>> infinispan:embedded: (configuration specified as properties)
>>
>> For the latter, we also need to be able to represent an infinispan
>> configuration using properties with a simple mapping to XML
>> elements/attributes, e.g.
>>
>> cache-manager.local-cache.mycache.eviction.size=1000
> ^ Why 'local-cache' in property name? cachemanager.mycache...etc would be enough since there can't be duplicate cache names inside a given cache manager. So, is 'local-cache' merely a hint?

The first idea would be to make the left-hand side XPath expressions, so 
it would be

cache-container[@name=myManager].local-cache[@name=myCache].eviction.size=1000

As we probably want to select only on the name attribute, this could be 
sufficient and less verbose:

cache-container[myManager].local-cache[myCache].eviction.size=1000

I wouldn't mix 'schema' of the property with user-defined identifiers - 
those brackets clearly separate them for good.

There are cases where you have multiple children in one element - custom 
interceptors, groups, persistence (though the current schema tells me I 
can have only one store defined)... and there is no clear identifier (as 
cache name, or backup site). I would suggest that there a custom 
identifier that is not present in configuration would help user identify 
this, e.g.

cache-container[myManager].distributed-cache[myCache].persistence.store[foo].class=org.my.FooStore
cache-container[myManager].distributed-cache[myCache].persistence.store[foo].file=/some/path
cache-container[myManager].distributed-cache[myCache].persistence.store[bar].class=org.my.BarStore
cache-container[myManager].distributed-cache[myCache].persistence.store[bar].url=http://example.com

My 2c

Radim

>
> Cheers,
>
>>
>> Comments are welcome
>>
>> Tristan
>> -- 
>> Tristan Tarrant
>> Infinispan Lead
>> JBoss, a division of Red Hat
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev


-- 
Radim Vansa <rvansa at redhat.com>
JBoss Performance Team



More information about the infinispan-dev mailing list