This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 6d177d92f2 HDDS-10971. Replace ConcurrentHashMap with HashMap in 
PipelineStateMap (#6765)
6d177d92f2 is described below

commit 6d177d92f2e9b4722ab9d058366ec6f9cd24552a
Author: Andrei Mikhalev <[email protected]>
AuthorDate: Fri Jun 7 15:38:06 2024 +0300

    HDDS-10971. Replace ConcurrentHashMap with HashMap in PipelineStateMap 
(#6765)
---
 .../hadoop/hdds/scm/pipeline/PipelineStateMap.java | 31 +++++++++-------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateMap.java
 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateMap.java
index 3e8d545c54..b0e5017f4a 100644
--- 
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateMap.java
+++ 
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/pipeline/PipelineStateMap.java
@@ -36,8 +36,6 @@ import java.util.Map;
 import java.util.NavigableSet;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 
 import static java.lang.String.format;
 
@@ -46,24 +44,19 @@ import static java.lang.String.format;
  * its state.
  * Invariant: If a pipeline exists in PipelineStateMap, both pipelineMap and
  * pipeline2container would have a non-null mapping for it.
+ *
+ * Concurrency consideration:
+ *   - thread-unsafe
  */
 class PipelineStateMap {
+  private static final Logger LOG = 
LoggerFactory.getLogger(PipelineStateMap.class);
 
-  private static final Logger LOG = LoggerFactory.getLogger(
-      PipelineStateMap.class);
-
-  private final Map<PipelineID, Pipeline> pipelineMap;
-  private final Map<PipelineID, NavigableSet<ContainerID>> pipeline2container;
-  private final Map<ReplicationConfig, List<Pipeline>> query2OpenPipelines;
-
-  PipelineStateMap() {
+  // TODO: Use TreeMap for range operations?
+  private final Map<PipelineID, Pipeline> pipelineMap = new HashMap<>();
+  private final Map<PipelineID, NavigableSet<ContainerID>> pipeline2container 
= new HashMap<>();
+  private final Map<ReplicationConfig, List<Pipeline>> query2OpenPipelines = 
new HashMap<>();
 
-    // TODO: Use TreeMap for range operations?
-    pipelineMap = new ConcurrentHashMap<>();
-    pipeline2container = new ConcurrentHashMap<>();
-    query2OpenPipelines = new HashMap<>();
-
-  }
+  PipelineStateMap() { }
 
   /**
    * Adds provided pipeline in the data structures.
@@ -87,8 +80,8 @@ class PipelineStateMap {
     }
     pipeline2container.put(pipeline.getId(), new TreeSet<>());
     if (pipeline.getPipelineState() == PipelineState.OPEN) {
-      query2OpenPipelines.computeIfAbsent(pipeline.getReplicationConfig(),
-          any -> new CopyOnWriteArrayList<>()).add(pipeline);
+      query2OpenPipelines.computeIfAbsent(pipeline.getReplicationConfig(), any 
-> new ArrayList<>())
+          .add(pipeline);
     }
   }
 
@@ -416,7 +409,7 @@ class PipelineStateMap {
     if (updatedPipeline.getPipelineState() == PipelineState.OPEN) {
       // for transition to OPEN state add pipeline to query2OpenPipelines
       if (pipelineList == null) {
-        pipelineList = new CopyOnWriteArrayList<>();
+        pipelineList = new ArrayList<>();
         query2OpenPipelines.put(pipeline.getReplicationConfig(), pipelineList);
       }
       pipelineList.add(updatedPipeline);


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

Reply via email to