Skip to content

HDDS-14350. Ratis configurations for ozone helm charts - #51

Open
shuan1026 wants to merge 1 commit into
apache:mainfrom
shuan1026:HDDS-14350
Open

HDDS-14350. Ratis configurations for ozone helm charts#51
shuan1026 wants to merge 1 commit into
apache:mainfrom
shuan1026:HDDS-14350

Conversation

@shuan1026

Copy link
Copy Markdown
Contributor

What changes were proposed in this pull request?

Analyse Ratis configurations for handling network partitions / slow networks, covering Ratis timeouts, heartbeat settings, and leader election. This follows up on the HA Helm work in comment r2632023653.

  • Adds ratis.ozoneSite to values.yaml: an empty map by default for optional ozone-site property overrides, with a curated, commented example list covering OM/SCM Ratis network-resilience timeouts and leader election.
  • Renders ratis.ozoneSite entries as OZONE-SITE.XML_* env vars from ozone.configuration.env.common in _helpers.tpl, reusing the convention already used throughout the chart.

Curated keys documented as commented examples in values.yaml (any other ozone-site
property can also be set via this map):

  • OM: ozone.om.ratis.server.request.timeout, ozone.om.ratis.minimum.timeout,
    ozone.om.ratis.server.failure.timeout.duration, ozone.om.ratis.server.leaderelection.pre-vote
  • SCM: ozone.scm.ha.ratis.request.timeout, ozone.scm.ha.ratis.leader.election.timeout,
    ozone.scm.ha.raft.server.rpc.first-election.timeout,
    ozone.scm.ha.ratis.server.leaderelection.pre-vote,
    ozone.scm.ha.ratis.server.failure.timeout.duration

What is the link to the Apache JIRA

https://issues.apache.org/jira/browse/HDDS-14350

How was this patch tested?

  • Green CI run
  • Manual verification:
# default: no ratis override env vars rendered
helm template test-release charts/ozone --show-only templates/om/om-statefulset.yaml | grep OZONE-SITE.XML_

# with overrides
cat > /tmp/ratis-override.yaml <<'EOF'
ratis:
  ozoneSite:
    ozone.om.ratis.server.request.timeout: "10s"
EOF
# expect:
#   - name: OZONE-SITE.XML_ozone.om.ratis.server.request.timeout
#     value: "10s"
helm template test-release charts/ozone -f /tmp/ratis-override.yaml \
  --show-only templates/om/om-statefulset.yaml \
  | grep -A1 'OZONE-SITE.XML_ozone.om.ratis.server.request.timeout'
  
# real cluster smoke test
kind create cluster --name ozone-helm-ratis
helm upgrade --install ozone charts/ozone --wait --timeout 15m
helm upgrade ozone charts/ozone -f /tmp/ratis-override.yaml --wait --timeout 15m
kubectl exec ozone-om-0 -- env | grep ratis.server.request.timeout

@shuan1026

shuan1026 commented Jul 25, 2026

Copy link
Copy Markdown
Contributor Author

PTAL @adoroszlai Thank you!

@shuan1026 shuan1026 changed the title HDDS-14350. Ratis configurations for ozone helm charts (#51) HDDS-14350. Ratis configurations for ozone helm charts Jul 25, 2026
@adoroszlai
adoroszlai requested a review from rakeshadr July 26, 2026 05:45

@dnskr dnskr left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

I’d love a bit more context on why we need this new configuration approach.
Because it’s very generic and empty by default, users could supply any property through it (including non-Ratis ones). It seems like we can achieve the same outcome using the existing configuration.files or configuration.filesFrom properties. Unless there's a specific use case this addresses that the existing options don't, I'd suggest sticking with those to avoid duplication.

@shuan1026

Copy link
Copy Markdown
Contributor Author

Thanks for the PR!

I’d love a bit more context on why we need this new configuration approach. Because it’s very generic and empty by default, users could supply any property through it (including non-Ratis ones). It seems like we can achieve the same outcome using the existing configuration.files or configuration.filesFrom properties. Unless there's a specific use case this addresses that the existing options don't, I'd suggest sticking with those to avoid duplication.

Agreed. This isn't strictly necessary. Existing options already cover it (we can also use om.env). My read of this follow-up was mainly to give a clear entry point for slow-network ratis tuning and have those changes roll pods automatically, but keeping the chart simpler is also a good call. Happy to drop this and rely on the existing paths. :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants