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

Ivan Andika updated HDDS-14356:
-------------------------------
    Summary: Support OM Service Framework  (was: Support OM Stateful Service 
Framework)

> Support OM Service Framework
> ----------------------------
>
>                 Key: HDDS-14356
>                 URL: https://issues.apache.org/jira/browse/HDDS-14356
>             Project: Apache Ozone
>          Issue Type: Improvement
>            Reporter: Ivan Andika
>            Assignee: Ivan Andika
>            Priority: Major
>
> Currently, SCM HA already implemented its own SCM stateful service framework 
> in classes such as SCMServiceManager (with its notifyStatusChanged 
> implementation to respond to Ratis related events), 
> StatefulServiceStateManager, etc. We can implement it for OM HA to implement 
> stateful service.
> We have implemented this internally a long time ago, particularly for OM Key 
> Trash HDDS-11256 , where the key recovery service is required to store the 
> user-requested key recovery configuration to all OM nodes (similar to 
> ContainerBalancerConfiguration in Container Balancer HA) and only the leader 
> key trash recovery service should be running at any time. Previously, we did 
> not contribute this to community since there is currently no valid use case 
> (AFAIK all OM background services are stateless). However, it seems that S3 
> object lifecycle feature might require this feature (e.g. 
> KeyLifecycleService). Therefore, we can contribute this to the community 
> since there is now a valid use case.
> The main overview and purpose of the stateful service are:
>  # Persist and replicate service configuration
>  ** The interface is implemented in {{OMStatefulService}} and implemented by 
> {{OMStatefulServiceStateManager}}
>  ** OM uses {{SetServiceConfiguration}} request to persistently save the OM 
> service framework
>  *** OM request and response: {{OMSetServiceConfigurationRequest}} and 
> {{OMSetServiceConfigurationResponse}}
>  *** Table: statefulServiceConfigTable ({{{}Table<String, ByteString>{}}})
>  # Notification mechanism when there are leader changes
>  ** This is to ensure that only leader stateful service is running
>  ** {{OMServiceManager#notifyStatusChanged}} and 
> {{OMService#notifyStatusChanged}} to notify the stateful service  whenever 
> there is a change in leader
>  ** {{OzoneManagerStateMachine}} Event APIs ({{{}notifyNotLeader{}}}, 
> {{{}notifyLeaderChanged{}}}, {{{}notifyTermIndexUpdated, 
> notifyLeaderReady{}}}) will trigger the {{notifyStatusChanged}}
>  *** The notification implementation is similar to {{SCMStateMachine}}
>  *** {{notifyTermIndexUpdated}} is only done if there is a configuration 
> change (i.e. OM transfer leadership, OM ratis ring update)
>  



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