HDDS-10372. SCM and Datanode communication for reconciliation#6506
Merged
kerneltime merged 44 commits intoapache:HDDS-10239-container-reconciliationfrom May 29, 2024
Merged
Conversation
Still working on best way to get errors back to the client
Also renamed existing checksum field and methods in ContainerData.
Some request blocking based on container states is not yet implemented.
Also move some reconiliation specific classes to their own package.
Still not done
It's coming back as 0 always for some reason.
Contributor
Author
|
At last the CI is green |
kerneltime
reviewed
May 13, 2024
Contributor
kerneltime
left a comment
There was a problem hiding this comment.
Finished one round, will go over testing next.
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
Outdated
Show resolved
Hide resolved
| private long bytesUsed; | ||
| private int replicaIndex = -1; | ||
| @JsonSerialize(using = LongToHexJsonSerializer.class) | ||
| private long dataChecksum; |
Contributor
There was a problem hiding this comment.
Q: Hex for printing to make it more human friendly?
Contributor
Author
There was a problem hiding this comment.
Yeah. That seemed standard but we could use a different format if there's a better option.
Comment on lines
+47
to
+49
| System.out.println("Use \"ozone admin container info --json " + containerId + "\" to see the checksums of each " + | ||
| "container replica"); | ||
| } |
Contributor
There was a problem hiding this comment.
Suggested change
| System.out.println("Use \"ozone admin container info --json " + containerId + "\" to see the checksums of each " + | |
| "container replica"); | |
| } | |
| System.out.println("Once reconciliation is complete, use \"ozone admin container info --json " + containerId + "\" to see the checksums of each " + | |
| "container replica"); | |
| } |
kerneltime
reviewed
May 21, 2024
aswinshakil
approved these changes
May 28, 2024
Member
aswinshakil
left a comment
There was a problem hiding this comment.
Thanks for working on this @errose28. I just have a few minor nits. Otherwise LGTM
...rver-scm/src/main/java/org/apache/hadoop/hdds/scm/container/reconciliation/package-info.java
Outdated
Show resolved
Hide resolved
…concile-cli * HDDS-10239-container-reconciliation: (296 commits) HDDS-10897. Refactor OzoneQuota (apache#6714) HDDS-10422. Fix some warnings about exposing internal representation in hdds-common (apache#6351) HDDS-10899. Refactor Lease callbacks (apache#6715) HDDS-10890. Increase default value for hdds.container.ratis.log.appender.queue.num-elements (apache#6711) HDDS-10832. Client should switch to streaming based on OpenKeySession replication (apache#6683) HDDS-10435. Support S3 object tags for existing requests (apache#6607) HDDS-10883. Improve logging in Recon for finalising DN logic. (apache#6704) HDDS-8752. Enable TestOzoneRpcClientAbstract#testOverWriteKeyWithAndWithOutVersioning (apache#6702) HDDS-10875. XceiverRatisServer#getRaftPeersInPipeline should be called before XceiverRatisServer#removeGroup (apache#6696) HDDS-10514. Recon - Provide DN decommissioning detailed status and info inline with current CLI command output. (apache#6376) HDDS-10878. Bump zstd-jni to 1.5.6-3 (apache#6701) HDDS-10877. Bump Dropwizard metrics to 3.2.6 (apache#6699) HDDS-10876. Bump jackson to 2.16.2 (apache#6697) HDDS-6116. Remove flaky tag from TestSCMInstallSnapshot (apache#6695) HDDS-2643. TestOzoneDelegationTokenSecretManager#testRenewTokenFailureRenewalTime fails intermittently. HDDS-10699. Refactor ContainerBalancerTask and TestContainerBalancerTask (apache#6537) HDDS-10861. Ozone cli supports default ozone.om.service.id (apache#6680) HDDS-10859. Improve error messages when decommission and maintenance fail-early (apache#6678) HDDS-9031. Upgrade acceptance tests to Docker Compose v2 (apache#6667) HDDS-10559. Add a warning or a check to run repair tool as System user (apache#6574) ... Conflicts: hadoop-ozone/dist/src/main/smoketest/admincli/container.robot
kerneltime
approved these changes
May 29, 2024
errose28
added a commit
to errose28/ozone
that referenced
this pull request
Jun 6, 2024
* HDDS-10239-container-reconciliation: HDDS-10372. SCM and Datanode communication for reconciliation (apache#6506) HDDS-10239. Storage Container Reconciliation. (apache#6121)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes were proposed in this pull request?
A lot of boilerplate code to do something very simple:
I've tried to avoid making any design related decisions in this PR. It is intended as a skeleton we can use to plug in the reconciliation implementation for end to end testing in future changes.
In scope for this change
ozone admin container reconcile <container-id>command.ozone admin container info --jsonOut of scope for this change (but will be handled in later tasks)
ContainerReplicaHistoryProtoreconcilecommand, an easy way to track reconciliation progress, and reading containers from stdin like othercontainersubcommands support.What is the link to the Apache JIRA
HDDS-10372
How was this patch tested?
TestReconcileContainerEventHandler: Tests SCM's filtering of reconciliation requests based on eligible container and replica states. When containers are eligible, tests that reconcile commands are sent to datanodes.TestStateContext: Tests that the new command shows up in datanode queue metrics.TestReconcileContainerCommandHandler: Tests datanode queue and runtime metrics when a reconcile command is received. Also tests that the ICR sent as the result of the command has the expected data checksum.TestContainerDataYaml: Tests that the data checksum is not written to the .container file. Merkle tree information will be written to its own file in a different change.TestHeartbeatEndpointTask: Tests that datanodes add a reconcile command to their queue when it is received on an SCM heartbeat response.TestKeyValueHandler: Tests that the theKeyValueHandlertriggers an ICR back to SCM with the expected values when reconciliation is invoked.TestContainerReportHandler,TestIncrementalContainerReportHandler: Tests that SCM correctly saves replicas' data checksum information it receives on a heartbeat.