This is an automated email from the ASF dual-hosted git repository.

Tejaskriya pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ozone-helm-charts.git


The following commit(s) were added to refs/heads/main by this push:
     new 86ec67e  HDDS-14351. Add preStop and graceful termination for OM and 
SCM (#48)
86ec67e is described below

commit 86ec67edb2e4b268b0b384f460591337a696fc05
Author: Mark Tsai <[email protected]>
AuthorDate: Mon Aug 3 18:21:28 2026 +0800

    HDDS-14351. Add preStop and graceful termination for OM and SCM (#48)
---
 charts/ozone/templates/om/om-service-headless.yaml   |  1 +
 charts/ozone/templates/om/om-statefulset.yaml        | 18 ++++++++++++++++++
 charts/ozone/templates/scm/scm-service-headless.yaml |  1 +
 charts/ozone/templates/scm/scm-statefulset.yaml      | 18 ++++++++++++++++++
 4 files changed, 38 insertions(+)

diff --git a/charts/ozone/templates/om/om-service-headless.yaml 
b/charts/ozone/templates/om/om-service-headless.yaml
index 8aaccaa..929d2c5 100644
--- a/charts/ozone/templates/om/om-service-headless.yaml
+++ b/charts/ozone/templates/om/om-service-headless.yaml
@@ -25,6 +25,7 @@ metadata:
     app.kubernetes.io/component: om
 spec:
   clusterIP: None
+  publishNotReadyAddresses: true
   ports:
     - name: ui
       port: {{ .Values.om.service.port }}
diff --git a/charts/ozone/templates/om/om-statefulset.yaml 
b/charts/ozone/templates/om/om-statefulset.yaml
index 829e3b5..3964f77 100644
--- a/charts/ozone/templates/om/om-statefulset.yaml
+++ b/charts/ozone/templates/om/om-statefulset.yaml
@@ -49,6 +49,9 @@ spec:
         {{- include "ozone.selectorLabels" . | nindent 8 }}
         app.kubernetes.io/component: om
     spec:
+      {{- if gt (int .Values.om.replicas) 1 }}
+      terminationGracePeriodSeconds: 150
+      {{- end }}
       {{- with .Values.imagePullSecrets }}
       imagePullSecrets: {{- toYaml . | nindent 8 }}
       {{- end }}
@@ -101,6 +104,21 @@ spec:
               containerPort: {{ .Values.om.service.port }}
             - name: ratis
               containerPort: {{ .Values.om.service.ratisPort }}
+          {{- if gt (int .Values.om.replicas) 1 }}
+          lifecycle:
+            preStop:
+              exec:
+                command:
+                  - sh
+                  - -c
+                  - |
+                    LEADER=$(ozone admin om roles -id {{ .Values.clusterId }} 
2>/dev/null | grep LEADER | awk '{print $1}')
+                    if [ "$LEADER" = "$(hostname)" ]; then
+                      echo "This OM is leader, transferring leadership..."
+                      ozone admin om transfer -id {{ .Values.clusterId }} -r 
|| true
+                      sleep 10
+                    fi
+          {{- end }}
           livenessProbe:
             httpGet:
               path: /
diff --git a/charts/ozone/templates/scm/scm-service-headless.yaml 
b/charts/ozone/templates/scm/scm-service-headless.yaml
index d71c004..d086a38 100644
--- a/charts/ozone/templates/scm/scm-service-headless.yaml
+++ b/charts/ozone/templates/scm/scm-service-headless.yaml
@@ -25,6 +25,7 @@ metadata:
     app.kubernetes.io/component: scm
 spec:
   clusterIP: None
+  publishNotReadyAddresses: true
   ports:
     - name: ui
       port: {{ .Values.scm.service.port }}
diff --git a/charts/ozone/templates/scm/scm-statefulset.yaml 
b/charts/ozone/templates/scm/scm-statefulset.yaml
index dca03e0..a0f4c11 100644
--- a/charts/ozone/templates/scm/scm-statefulset.yaml
+++ b/charts/ozone/templates/scm/scm-statefulset.yaml
@@ -49,6 +49,9 @@ spec:
         {{- include "ozone.selectorLabels" . | nindent 8 }}
         app.kubernetes.io/component: scm
     spec:
+      {{- if gt (int .Values.scm.replicas) 1 }}
+      terminationGracePeriodSeconds: 150
+      {{- end }}
       {{- with .Values.imagePullSecrets }}
       imagePullSecrets: {{- toYaml . | nindent 8 }}
       {{- end }}
@@ -120,6 +123,21 @@ spec:
             - name: grpc
               containerPort: {{ .Values.scm.service.grpcPort }}
             {{- end }}
+          {{- if gt (int .Values.scm.replicas) 1 }}
+          lifecycle:
+            preStop:
+              exec:
+                command:
+                  - sh
+                  - -c
+                  - |
+                    LEADER_HOST=$(ozone admin scm roles 2>/dev/null | grep 
LEADER | cut -d: -f1)
+                    if [ "$LEADER_HOST" = "$(hostname -f)" ]; then
+                      echo "This SCM is leader, transferring leadership..."
+                      ozone admin scm transfer -id {{ .Values.clusterId }} -r 
|| true
+                      sleep 10
+                    fi
+          {{- end }}
           livenessProbe:
             httpGet:
               path: /


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

Reply via email to