[
https://issues.apache.org/jira/browse/HDDS-6589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jie Yao updated HDDS-6589:
--------------------------
Description:
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.
> refactor replication manager
> ----------------------------
>
> 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
>
> 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.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]