From 749901812cd1028db9f5f1c9ff659e97392b4877 Mon Sep 17 00:00:00 2001 From: Mark Tsai <111229657+shuan1026@users.noreply.github.com> Date: Tue, 21 Jul 2026 14:14:05 +0000 Subject: [PATCH] =?UTF-8?q?HDDS-14351.=20Add=20a=20preStop=C2=A0hook=20or?= =?UTF-8?q?=C2=A0graceful=20termination=20period=20for=20OM=20and=20SCM=20?= =?UTF-8?q?in=20helm=20charts=20(#48)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../templates/om/om-service-headless.yaml | 1 + charts/ozone/templates/om/om-statefulset.yaml | 18 ++++++++++++++++++ .../templates/scm/scm-service-headless.yaml | 1 + .../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: /