[ 
https://issues.apache.org/jira/browse/HDDS-14470?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tsz-wo Sze updated HDDS-14470:
------------------------------
        Parent: HDDS-14424
    Issue Type: Sub-task  (was: Improvement)

> Improve the data structures in OMFailoverProxyProviderBase
> ----------------------------------------------------------
>
>                 Key: HDDS-14470
>                 URL: https://issues.apache.org/jira/browse/HDDS-14470
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: common
>            Reporter: Tsz-wo Sze
>            Assignee: Tsz-wo Sze
>            Priority: Major
>
> {code}
> //OMFailoverProxyProviderBase
>   private Map<String, OMProxyInfo<T>> omProxies;
>   private List<String> omNodesInOrder;
> {code}
> OMFailoverProxyProviderBase currently has
> - omProxies: nodeId -> OMProxyInfo (Note that OMProxyInfo has a getNodeId() 
> method.)
> - omNodesInOrder: int -> nodeId (Note that the ints specify the ordering of 
> the proxies)
> When getting an OMProxyInfo from an int, it needs to get the nodeId and then 
> lookup the omProxies map for OMProxyInfo.  The map lookup is unnecessary.
> In this JIRA, we improve the data structures by replacing them with the 
> following:
> {code}
> // Suggested improvement
>     /** A list of proxies in a particular order. */
>     private final List<OMProxyInfo<P>> proxies;
>     /**
>      * The ordering of the nodes.
>      * <p>
>      * Invariant 1: Given a nodeId, let Integer i = ordering.get(nodeId);
>      *              If i != null, let info = proxies.get(i), then  
> nodeId.equals(info.getNodeId()) == true.
>      *              Otherwise, nodeId.equals(info.getNodeId()) == false for 
> any info in proxies.
>      * <p>
>      * Invariant 2: Given a 0 <= i < proxies.size(), let nodeId = 
> proxies.get(i).getNodeId().
>      *              Then, ordering.get(nodeId) == i.
>      */
>     private final SortedMap<String, Integer> ordering;
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to