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

Jie Yao updated HDDS-6589:
--------------------------
    Description: 
# Rename the existing RM class to LegacyReplicationManager, and expose the 
processContainer() method as protected or public. Remove the scheduling from 
this RM.
 # Create a new replication Manager, called ReplicationManager, then have it 
scheduled periodically like the current one.
 # When the new RM processes a container, if it is EC, it goes down the new 
path. If it is not EC, we call LegacyReplicationManager.processContainer(...).

  was:
After HDDS-3816 is merged into master branch, we need to process EC container 
in replication manager, which is different  to ratis container . . the current 
code of replication manager is complex enough as it stands, i think we need to 
refactor it and split it into several separate modules  as below:

1 the main class, that is a replication manager class, which will act as a 
`SCMService` and run `processContainer` periodicly.

2 an `ContainerProcessor` interface , which has a function of 
`processContainer` , and two implementation : `RatisContainerProcessor` and 
`ECContainerProcessor`. because most of the logic in the two implementation 
will be the same , we need to add a abstract class , let say 
`AbstractContainerProcessor` , and in that two implementations we just 
implement the abstract functions according to the specified container type.

3 add an interface `moveScheduler` and a  implementation `moveSchdulerImpl` , 
which are used to support container move in replication manager. 

4 if there are some common util functions are called among different class in 
replication manager, we can add a utils class.

 

i think after this refactor, the code of relication manager will be more 
modular and easily extendable


> Add replication manager V2
> --------------------------
>
>                 Key: HDDS-6589
>                 URL: https://issues.apache.org/jira/browse/HDDS-6589
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Jie Yao
>            Assignee: Jie Yao
>            Priority: Major
>
> # Rename the existing RM class to LegacyReplicationManager, and expose the 
> processContainer() method as protected or public. Remove the scheduling from 
> this RM.
>  # Create a new replication Manager, called ReplicationManager, then have it 
> scheduled periodically like the current one.
>  # When the new RM processes a container, if it is EC, it goes down the new 
> path. If it is not EC, we call LegacyReplicationManager.processContainer(...).



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

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

Reply via email to