-
Notifications
You must be signed in to change notification settings - Fork 496
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HDDS-10372. SCM and Datanode communication for reconciliation #6506
HDDS-10372. SCM and Datanode communication for reconciliation #6506
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.
At last the CI is green |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
@@ -35,6 +40,8 @@ public final class ContainerReplicaInfo { | |||
private long keyCount; | |||
private long bytesUsed; | |||
private int replicaIndex = -1; | |||
@JsonSerialize(using = LongToHexJsonSerializer.class) | |||
private long dataChecksum; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: Hex for printing to make it more human friendly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah. That seemed standard but we could use a different format if there's a better option.
System.out.println("Use \"ozone admin container info --json " + containerId + "\" to see the checksums of each " + | ||
"container replica"); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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"); | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
930d3f0
into
apache:HDDS-10239-container-reconciliation
* HDDS-10239-container-reconciliation: HDDS-10372. SCM and Datanode communication for reconciliation (apache#6506) HDDS-10239. Storage Container Reconciliation. (apache#6121)
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 --json
Out of scope for this change (but will be handled in later tasks)
ContainerReplicaHistoryProto
reconcile
command, an easy way to track reconciliation progress, and reading containers from stdin like othercontainer
subcommands 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 theKeyValueHandler
triggers 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.