[
https://issues.jboss.org/browse/JGRP-2168?page=com.atlassian.jira.plugin....
]
Bela Ban edited comment on JGRP-2168 at 5/9/17 2:18 AM:
--------------------------------------------------------
System properties override *any value*, whether set as default value in the code, via XML
or programmatically. If you want to overwrite a value programmatically, you have to do
this after channel creation.
It would be quite an effort to change this, because we'd have to introduce an
additional phase where the attributes are set from the config and system properties, then
programmatic configuration happens and only _then_ the channel is created and init() is
called in all protocols.
was (Author: belaban):
System properties override *any value*, whether set as default value in the code, via XML
or programmatically. If you want to overwrite a value programmatically, you have to do
this after channel creation. It would be quite an effort to change this...
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)