HDDS-15765. Fail fast when --node-id is omitted for OM compact/defrag on an HA cluster#10699
Conversation
rich7420
left a comment
There was a problem hiding this comment.
LGTM! thanks for the patch
There was a problem hiding this comment.
Thanks @chihsuan for fixing this
-
CommandLine descriptions or the --help text for both commands does not mention the HA --node-id requirement.
It would be better to add there as well. -
Should HA nodeId validation failure exit non-zero, or is exit 0 ok here?
Good point. |
|
Thanks for raising this! @sreejasahithi
Sounds good! I updated the
Yeah, I agree. I considered returning a non-zero value, but the existing |
I am fine tracking consistent non zero exit codes in a follow up Jira if you want to keep this PR scoped for fail fast fix for missing --node-id. |
sreejasahithi
left a comment
There was a problem hiding this comment.
Please also update the --help outputs of the commands in the respective docs as they still show the old --node-id description.
Thanks @sreejasahithi I created HDDS-15865 to track consistent non-zero exit codes for OM compact and snapshot defrag validation failures.
I’ve also updated the checked-in |
|
Thanks @chihsuan for the patch, @rich7420 and @sreejasahithi for the review. |
* master: (53 commits) HDDS-15876. Remove ozone-csi (apache#10780) HDDS-15508. Add 2.2.0 to compatibility/upgrade test (apache#10782) HDDS-15867. [JDK25] Bump byte-buddy to 1.18.11 (apache#10776) HDDS-15809. Validate x-amz-copy-source-range on UploadPartCopy (apache#10711). HDDS-15678. OFS isDirectory/isFile should not trigger pipeline refresh or return block locations (apache#10741) HDDS-15171. Add available space check on follower during bootstrap. (apache#10185) HDDS-14043. Fix ls -e UnsupportedOperationException on ofs/o3fs (apache#10209) HDDS-15709. Replace random name suffix with uniqueObjectName (apache#10773) HDDS-15849. Force channel shutdown in XceiverClientGrpc.close (apache#10747) HDDS-15765. Fail fast when --node-id is omitted for OM compact/defrag on an HA cluster (apache#10699) HDDS-14989. Delay follower SCM DN server start until Ratis log catch-up. (apache#10617). HDDS-15456. Add SCM DB lookup and identify orphan(wrt SCM) and deleted-but-present containers (apache#10547) HDDS-15812. Rename test utils for naming convention (apache#10766) HDDS-15600. Fix ListObjects response for encoding-type and empty delimiter (apache#10586). HDDS-15656. Fix non-atomic data size accumulation in ContainerBalancer move callback (apache#10708) HDDS-15667. `containerbalancer status`: show stop reason and iteration details after stop (apache#10681) HDDS-15823. Fix flaky TestFailureHandlingByClient#testContainerExclusionWithClosedContainerException (apache#10721) HDDS-15837. Add health-aware container ID listing in SCM (apache#10736) HDDS-15851. Return 403 for expired or out-of-range pre-signed S3 URLs (apache#10749) HDDS-15836. Add Archiver.appendFile for incremental TAR writes (apache#10735) ... Conflicts: hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeManager.java hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/node/TestSCMNodeMetrics.java hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/OmKeyInfo.java hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/helpers/RepeatedOmKeyInfo.java hadoop-ozone/dist/src/main/compose/upgrade/test.sh hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/HddsUpgradeTestUtils.java hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestDNDataDistributionFinalization.java hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSUpgrade.java hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmDataDistributionFinalization.java hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestScmHAFinalization.java hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestBlockDeletionService.java hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/OMClientRequest.java
* HDDS-14496-zdu: (56 commits) HDDS-15848. Add new upgrade action annotations for component versions (apache#10744) HDDS-15876. Remove ozone-csi (apache#10780) HDDS-14825. Add Grafana Dashboard and Metrics for ZDU (apache#10602) HDDS-15508. Add 2.2.0 to compatibility/upgrade test (apache#10782) HDDS-15867. [JDK25] Bump byte-buddy to 1.18.11 (apache#10776) HDDS-15809. Validate x-amz-copy-source-range on UploadPartCopy (apache#10711). HDDS-15678. OFS isDirectory/isFile should not trigger pipeline refresh or return block locations (apache#10741) HDDS-15171. Add available space check on follower during bootstrap. (apache#10185) HDDS-14043. Fix ls -e UnsupportedOperationException on ofs/o3fs (apache#10209) HDDS-15709. Replace random name suffix with uniqueObjectName (apache#10773) HDDS-15677. Update client side version checks to use `isSupportedBy`. (apache#10611) HDDS-15849. Force channel shutdown in XceiverClientGrpc.close (apache#10747) HDDS-15765. Fail fast when --node-id is omitted for OM compact/defrag on an HA cluster (apache#10699) HDDS-14989. Delay follower SCM DN server start until Ratis log catch-up. (apache#10617). HDDS-15456. Add SCM DB lookup and identify orphan(wrt SCM) and deleted-but-present containers (apache#10547) HDDS-15812. Rename test utils for naming convention (apache#10766) HDDS-15600. Fix ListObjects response for encoding-type and empty delimiter (apache#10586). HDDS-15656. Fix non-atomic data size accumulation in ContainerBalancer move callback (apache#10708) HDDS-15667. `containerbalancer status`: show stop reason and iteration details after stop (apache#10681) HDDS-15823. Fix flaky TestFailureHandlingByClient#testContainerExclusionWithClosedContainerException (apache#10721) ... Conflicts: hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerPrepare.java
What changes were proposed in this pull request?
On an HA OM cluster,
ozone repair om compactandozone admin om snapshot defragwithout--node-iddo not fail cleanly; they hang for a long time before eventually timing out.Root cause: with no
--node-id/--service-id,OMNodeDetails.getOMNodeDetailsFromConf(conf, null, null)falls back to the base config keyozone.om.address, which in an HA deployment defaults to0.0.0.0:9862. That default is the OM server bind address (bind to all interfaces) and is meaningless as a client target. Because it resolves to a non-null (but useless) address, the tool builds a valid-lookingOMNodeDetailsfor0.0.0.0and proceeds to the RPC, which then retries in the Hadoop IPC retry loop and blocks.This PR adds a fail-fast check in both CLI commands: when
--node-idis omitted but the config defines an HA service (OmUtils.isServiceIdsDefined(conf)), the command exits immediately and asks the operator to specify--node-id, instead of resolving to0.0.0.0. Each command reports the error with its own existing convention.What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-15765
How was this patch tested?
TestCompactOMDB#testCompactHAWithoutNodeIdFailsFastandTestDefragSubCommand#testDefragHAWithoutNodeIdFailsFastTestCompactOMDB,TestDefragSubCommand, andTestOMNodeDetailsstill pass, andcheckstyleis clean.compose/ozone-hacluster (om1/om2/om3,service.ids=omservice):ozone repair om compact --cf keyTable(no--node-id)This is an HA OM cluster; specify --node-id ...ozone admin om snapshot defrag(no--node-id)Error: This is an HA OM cluster; specify --node-id ...ozone repair om compact --cf keyTable --service-id omservice --node-id om3Compaction request issued for om.db of om node: om3ozone admin om snapshot defrag --service-id omservice --node-id om3om3:9862om3:9862(not0.0.0.0)Generated-by: Claude Code (Opus 4.8)