[jboss-jira] [JBoss JIRA] (WFLY-9521) Marshalling of org.wildfly.clustering.group.Node implementations is suboptimal

Paul Ferraro (JIRA) issues at jboss.org
Mon Apr 9 12:15:00 EDT 2018


     [ https://issues.jboss.org/browse/WFLY-9521?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

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)


More information about the jboss-jira mailing list