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

Ivan Andika updated HDDS-14356:
-------------------------------
    Description: 
Similar to SCM service framework, support OM service framework that can be 
notified of leader changed.

 

  was:
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)

 


> Support OM Stateful 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
>
> Similar to SCM service framework, support OM service framework that can be 
> notified of leader changed.
>  



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