[jboss-jira] [JBoss JIRA] (JGRP-2168) JChannel(Collection<Protocol>) constructor clears protocol properties with non-default converter whose associated system property is not defined

Paul Ferraro (JIRA) issues at jboss.org
Tue May 9 08:16:00 EDT 2017


    [ https://issues.jboss.org/browse/JGRP-2168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13403541#comment-13403541 ] 

Paul Ferraro commented on JGRP-2168:
------------------------------------

{quote}I did change the InitialHosts converter to return a null value, which won't overwrite the value set programmatically.{quote}
That should do the trick.
{quote}Which other converters do cause issues?{quote}
If I'm not mistaken, the converter for TCPGOSSIP initial_hosts has the same issue.

Re: system properties overwriting explicitly set values - that's fine.

> JChannel(Collection<Protocol>) constructor clears protocol properties with non-default converter whose associated system property is not defined
> ------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: JGRP-2168
>                 URL: https://issues.jboss.org/browse/JGRP-2168
>             Project: JGroups
>          Issue Type: Bug
>    Affects Versions: 3.6.13, 4.0.1
>            Reporter: Paul Ferraro
>            Assignee: Bela Ban
>             Fix For: 4.0.3
>
>
> WildFly 11 recently started using the new JChannel(Protocol...) constructor for creating channels.  This has resulted in the inability to configure certain protocol properties, most notably, initial_hosts for TCPPING.
> Because this constructor calls resolveAndAssignFields(...) with an empty map, if a property was explicitly set, and its associated system property does not exist, and that property uses a non-default converter, then it will have its value undefined (or, more specifically, set to whatever the converter does with a null value).
> Additionally, if the assocated system property did exist, it would take precedence over an explicitly set value.  I don't think that's a good idea.
> Consider the following:
> {code:java}
>         TCP transport = new TCP();
>         transport.setBindAddress(InetAddress.getLocalHost());
>         transport.setBindPort(9600);
>         TCPPING ping = new TCPPING();
>         ping.setInitialHosts(Collections.singletonList(new IpAddress(transport.getBindAddress(), transport.getBindPort())));
>         JChannel channel = new JChannel(transport, ping);
>         assert !ping.getInitialHosts().isEmpty() : "No initial hosts!";
> {code}
> Side note: new JChannel(Collection<Protocol>) should really be new JChannel(List<Protocol>), since the collection should be ordered.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list