Andrei Mikhalev created HDDS-10446:
--------------------------------------
Summary: Refactoring Node2ObjectsMap, Node2PipelineMap,
Node2ContainerMap
Key: HDDS-10446
URL: https://issues.apache.org/jira/browse/HDDS-10446
Project: Apache Ozone
Issue Type: Improvement
Components: SCM
Affects Versions: 1.4.0
Reporter: Andrei Mikhalev
There is a base class
[`org.apache.hadoop.hdds.scm.node.states.Node2ObjectsMap|https://github.com/apache/ozone/blob/master/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/Node2ObjectsMap.java#L40]
for
[Node2PipelineMap|https://github.com/apache/ozone/blob/master/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/Node2PipelineMap.java#L37]
and
[Node2ContainerMap|https://github.com/apache/ozone/blob/master/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/Node2ContainerMap.java#L37].
It is redundant because of:
1. {{Node2ContainerMap}} is used only in tests
2. {{Node2PipelineMap}} doesn't need inheritance at all
Moreover {{Node2PipelineMap}} contains {{ConcurrentHashMap<UUID,
Set<PipelineID>>}} and 2 {{synchronized}} methods:
* {{void addPipeline(Pipeline pipeline)}} -> [compute if absent for concurrent
hash
map|https://github.com/apache/ozone/blob/master/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/Node2PipelineMap.java#L68]
* {{void removePipeline(Pipeline pipeline)}} -> [compute if present for
concurrent hash
map|https://github.com/apache/ozone/blob/master/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/node/states/Node2PipelineMap.java#L76]
I suppose `synchronized` is redundant here for these two methods.
Proposed changes:
1. Remove {{org.apache.hadoop.hdds.scm.node.states.Node2ObjectsMap}} class
2. Move {{Node2ContainerMap}} to tests
3. Don't use {{synchronized}} for {{Node2PipelineMap::addPipeline}} and
{{Node2PipelineMap::removePipeline}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]