[
https://issues.jboss.org/browse/WFLY-9521?page=com.atlassian.jira.plugin....
]
Paul Ferraro updated WFLY-9521:
-------------------------------
Description:
The Node implementations currently serialize:
* org.jgroups.Address
* The logical name (typically a host name)
* The socket binding address/port of its transport
This is overkill. The Node should only need to serialize enough information to
reconstruct itself using a NodeFactory<Address>, which should only include:
* its Address
* something to minimally identify the NodeFactory<Address>, with which to use to
reconstruct the Node, e.g. a group name
Unfortunately, getting a reference to the NodeFactory during deserialization isn't
trivial, as these are on-demand services.
Another approach, is to avoid referencing the Node in cache keys/values altogether.
Currently, org.wildfly.clustering.registry.Registry uses a Cache<Node, Map.Entry<K,
V>> and org.wildfly.clustering.provider.ServiceProviderRegistry uses a Cache<K,
Set<Node>>. In both cases, we can replace Node with Address, and thus avoid
unnecessary marshalling of the logical name and physical address of a member.
was:
The Node implementations currently serialize:
* org.jgroups.Address
* The logical name (typically a host name)
* The socket binding address/port of its transport
This is overkill. The Node should only need to serialize enough information to
reconstruct itself using a NodeFactory<Address>, which should only include:
* its Address
* something to minimally identify the NodeFactory<Address>, with which to use to
reconstruct the Node, e.g. a group name
Marshalling of org.wildfly.clustering.group.Node implementations is
suboptimal
------------------------------------------------------------------------------
Key: WFLY-9521
URL:
https://issues.jboss.org/browse/WFLY-9521
Project: WildFly
Issue Type: Bug
Components: Clustering
Affects Versions: 11.0.0.Final
Reporter: Paul Ferraro
Assignee: Paul Ferraro
The Node implementations currently serialize:
* org.jgroups.Address
* The logical name (typically a host name)
* The socket binding address/port of its transport
This is overkill. The Node should only need to serialize enough information to
reconstruct itself using a NodeFactory<Address>, which should only include:
* its Address
* something to minimally identify the NodeFactory<Address>, with which to use to
reconstruct the Node, e.g. a group name
Unfortunately, getting a reference to the NodeFactory during deserialization isn't
trivial, as these are on-demand services.
Another approach, is to avoid referencing the Node in cache keys/values altogether.
Currently, org.wildfly.clustering.registry.Registry uses a Cache<Node, Map.Entry<K,
V>> and org.wildfly.clustering.provider.ServiceProviderRegistry uses a Cache<K,
Set<Node>>. In both cases, we can replace Node with Address, and thus avoid
unnecessary marshalling of the logical name and physical address of a member.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)