Ivan Andika created HDDS-15729:
----------------------------------

             Summary: Improve the PlacementPolicy code structure
                 Key: HDDS-15729
                 URL: https://issues.apache.org/jira/browse/HDDS-15729
             Project: Apache Ozone
          Issue Type: Improvement
            Reporter: Ivan Andika
            Assignee: Ivan Andika


The PlacementPolicy (both Pipeline Placement Policy and the Container Placement 
Policy) is poorly abstracted which is very hard to reason about. There are a 
lot of leaky abstractions or logic specific to a replication config (e.g. Ratis 
logic in interface that can also be applied to EC). I found myself getting lost 
every time I look at the placement policy logic since it's hard to build a 
mental model of the whole process. This task is to identify them and fix them 
for better readability and maintainability, as well as document the exact 
contracts and responsibilities of these policies.

For example (not exhaustive)
 * PlacementPolicy is supposed to be generic, but we have container placement 
specific logic like validateContainerPlacement and 
replicasToCopyToFixMisReplication and replicasToRemoveToFixOverreplication
 * PipelinePlacementPolicy seems to only used for RATIS pipeline, but we have 
EC pipeline, so it gives an impression that PipelinePlacementPolicy can also be 
used for EC, which AFAIK is not the case.

 ** PipelinePlacementPolicy is only used for RATIS, then we should make it 
explicit by changing the name to RatisPipelinePlacementPolicy
 ** PipelinePlacementPolicy also have internal "Ratis" related pipelines likeĀ 
 * We are still using PlacementPolicy for everything, even if 
PipelinePlacementPolicy is more appropriate for pipeline related matters, which 
forces PlacementPolicy to implement interfaces that it should not be 
implementing
 ** For example, in RatisPipelineProvider we can change PlacementPolicy to 
PipelinePlacementPolicy since we are dealing with pipeline



--
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