On Tue, Jan 10, 2017 at 5:09 AM, Galder Zamarreño <gal...@redhat.com> wrote:
> Hey Paul,
>
> Thanks for the quick answer.
>
> The motivation for ISPN-7326 is to reduce domain configuration needed to test 
> xsite replication in the Javascript client. Without ISPN-7326 I'm having to 
> duplicate profiles for each site where the changing values are minimal. It 
> would be helpful to control the values I mentioned via system property to 
> reduce the number of profiles required in the domain config.
>
> The reason I'm interested in reducing the number of changes I make the 
> default domain config (e.g. by reducing number of profiles) is to make it 
> easier in the future to migrate to newer domain configurations.
>
> To be more precise, domain.xml in [1] contains 3 clustered profiles: 
> 'clustered', 'earth' and 'moon'. This makes the configuration for testing 
> clustered and xsite capabilities quite verbose. Ideally, I'd like to have 1 
> clustered profile, 'clustered', and using system properties select which 
> transport to use and provide optional site names...etc where needed.
>
> So indeed, the motivation for this is not a real environment.

I see.  So long as we go with approach #2, I think this is worthwhile.

> Your sugggestion for 2. doesn't sound too bad. Note that a similar approach 
> would be required for remote-site's name.

Ah, you mean for the JGroups remote-site config in the RELAY2
protocol.  Yeah, that shouldn't be too bad either.
e.g.
<relay site="local">
    <remote-site name="local" site-name="${...}" channel=".."/>
    <remote-site name="remote" site-name="${...}" channel=".."/>
</relay>

Here the site attribute of the relay resource must reference the
remote-site resource by it's name (because it is a model reference).
The relay resource's service handler currently stores the remote-sites
in a list.  We'll want to change this to map them by name.  Obtaining
the actual site-name (i.e. the value returned by
RelayConfiguration.getSiteName()) becomes a simple map lookup, now
that the site name is decoupled from the resource name.  We can still
make site-name optional, and default it to the resource name if
undefined.

I've opened https://issues.jboss.org/browse/WFLY-7871

Paul

> Thoughts?
>
> [1] 
> https://github.com/galderz/js-client/blob/16c985e0957c10f332c0dc9b561997c3f88c1c24/spec/configs/domain.xml
> --
> Galder Zamarreño
> Infinispan, Red Hat
>
>> On 9 Jan 2017, at 17:47, Paul Ferraro <paul.ferr...@redhat.com> wrote:
>>
>> Hi Galder,
>>
>> The short answer: Attributes that are components of a resource path
>> address may not contain expressions.
>>
>> What is the motivation behind ISPN-7326?
>>
>> When the x-site domain model for Infinispan was originally designed,
>> the assumption was that a domain controller would never attempt to
>> manage a host residing in a remote data center.  Typically a domain
>> controller doesn't manage hosts outside of its own network.  Even an
>> architecture that uses multiple logical sites within the same physical
>> data center would still isolate each site to a separate network.
>>
>> Question aside, there are at least 2 ways we can do this:
>>
>> 1. Refactor the model.  Remove the backup resource entirely.  This
>> means that individual site configurations will no longer be
>> addressable.  Instead, the parent resource would maintain a list of
>> backup objects, where "site" becomes a normal attribute that allows
>> expressions.
>>
>> Dealing with complex object types in the model isn't exactly a
>> pleasurable experience, so I would first make sure that the
>> requirement is legitimate/realistic and thus warrants the change.  Of
>> course, the biggest headache will be the model transformations
>> required to support mixed domains (mixed domains are a reality of
>> upgrading), as well as translation of domain operations that reference
>> the legacy resources.
>>
>> 2. Decouple the logical backup name from the actual site name:
>>
>> <backups>
>>    <backup name="remote" site="${...}" strategy="SYNC"/>
>> </backups>
>>
>> Here, each host has an addressable "remote" backup resource, where the
>> site name is an expression and resolves to a host-specific value.
>> Additionally, we can make this site attribute optional, and have it
>> default to the backup name if undefined.
>>
>> In conclusion, if this is confirmed to be a genuine feature request, I
>> would strongly encourage you to go with option #2.
>>
>> Paul
>>
>> On Mon, Jan 9, 2017 at 8:49 AM, Galder Zamarreño <gal...@redhat.com> wrote:
>>> Hey Paul,
>>>
>>> Re: https://issues.jboss.org/browse/ISPN-7326
>>>
>>> I have some doubts how to achieve what I'm trying to do in ^
>>>
>>> More specifically, backup's 'site' attribute and remote-site's name 
>>> attributes are special in the sense that they're not represented as 
>>> SimpleAttributeDefinition instances. Instead, it seems like they're 
>>> expected to be fully resolved when the XML read since they are part of path 
>>> addresses.
>>>
>>> Resolution when XML is read does not work since reading is done by the host 
>>> controller and I'd want the resolution to happen when the particular server 
>>> node starts up.
>>>
>>> So, what would be the best way to achieve what I'm after?
>>>
>>> One way I was thinking is maybe leaving the XML reading part as is, and 
>>> only when the cache is added, do the resolution manually there. However, 
>>> this does not seem to work as is, because the XML attribute is already 
>>> resolved when I add the cache and it's resolved to the default value (cos 
>>> process controller was not started with -D...), so I can't seem to get the 
>>> original XML value. Moreover, even if this was resolved, would it be fine 
>>> for the path address to have the default value for the property in it, and 
>>> the actual cache configured with the name passed via system property? 
>>> Doesn't sound right...
>>>
>>> Any other way? Maybe add separate SimpleAttributeDefinition instances for 
>>> these XML attributes on top of their path address values?
>>>
>>> Cheers,
>>> --
>>> Galder Zamarreño
>>> Infinispan, Red Hat
>>>
>

_______________________________________________
infinispan-dev mailing list
infinispan-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev

Reply via email to