HDDS-16025. Allow old clients to start finalization on a new server. - #11074
Conversation
sodonnel
left a comment
There was a problem hiding this comment.
I believe this looks good. As stated in the description much of the new line count is due to tests and lifting some existing code into a new shared base class, so the change isn't as large as it first appears.
|
Unfortunately this broke something at the acceptance level that I need to figure out: https://github.com/errose28/ozone/actions/runs/32425781316/job/96617583956 |
(cherry picked from commit 38abf22)
|
The last commit fixed an existing issue on the branch where artifacts from acceptance test runs would not be uploaded, so there were no logs to see why the test was failing. With that fixed, we can now see that the upgrade acceptance test fails with: Acceptance tests are still using the old CLI. Prior to this change that means they only finalized OM by submitting the same finalize request the background service does. Now they go through the proper path, so it is the first time the peer version check RPC between OMs is tested in a secure environment. We need to send this RPC as the logged-in OM user. |
| create_stack_dumps() { | ||
| local c pid procname | ||
| for c in $(docker-compose ps | cut -f1 -d' ' | grep -e datanode -e om -e recon -e s3g -e scm | grep -v -e prometheus); do | ||
| for c in $(docker-compose ps | cut -f1 -d' ' | grep -e datanode -e om -e recon -e s3g -e scm | grep -v -e prometheus -e s3g-haproxy); do |
There was a problem hiding this comment.
Did this fix it because the script was crashing due to trying to take a java thread dump from a ha-proxy process and so adding this exclusion stopped the crash and hence allowed the bundle to be captured?
There was a problem hiding this comment.
Yes. I didn't document it here since it was just to collect logs for this change. I'm planning to revert it and commit it in #11039 where it belongs. Once this CI is green on my fork we will need another run on the PR anyways, so I'll revert it then.
| verify(scmContainerLocationProtocol).finalizeUpgrade(); | ||
| } | ||
|
|
||
| // TODO check if this is desired behavior |
There was a problem hiding this comment.
nit: I believe this is the desired behavior, right? This comment can be removed then.
There was a problem hiding this comment.
Yeah fixed in the next commit.
…ng all old commands
* HDDS-14496-zdu: (200 commits) HDDS-16190. Do not use unified version framework in OM until ZDU is finalized. (apache#11025) HDDS-16154. Datanode should assign DatanodeDetails#currentVersion based on its apparent version (apache#11006) HDDS-16153. DatanodeDetails should use HDDSVersion instead of int (apache#10994) HDDS-15549. Recon's INITIAL_VERSION should not have an upgrade action (apache#10935) HDDS-15422. Stream read seek should not close stream (apache#10415) HDDS-16089. Improve MPU table evaluation efficiency in KeyLifeCycleService (apache#10949) HDDS-16169. Add old updateContainerState to handle upgrade path. (apache#11012) HDDS-16158. Fix sendDeleteKeysRequestAndClearList Authorization and FSO Trash Handling (apache#10996) HDDS-15911. Recon AI Assistant: add conversation memory for follow-up questions. (apache#10808) HDDS-15356. Make multi-buffer chunk checksum allocation-free (apache#10350) HDDS-15895. Make ServerNotLeaderException suggested leader flow IPv6-safe (apache#10807) HDDS-16118. Release snapshot DB handles before KeyDeletingService submits OM requests (apache#10987) HDDS-16125. Copy bucket snapshot in quota repair response to fix cache aliasing (apache#11004) HDDS-8082. Check for unnecessary newlines in config defaults (apache#10840) HDDS-15826. Recon: add cycle guard to NSSummary /du tree walks (apache#10723) HDDS-11620. Log SCM finalization completion (apache#10963) HDDS-16117. Failed FSO multipart complete leaks bucket namespace quota (apache#10984) HDDS-15961. Resolve linked bucket source properties consistently (apache#10859) HDDS-16072. Implement GetObjectAttributes: ETag, ObjectSize, StorageClass, and ObjectParts count (apache#10930). HDDS-16114. Avoid misleading Ozone mount warning in acceptance test results (apache#10979) ... Conflicts: hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
|
Updates:
Once I verify acceptance tests are passing on my fork I will revert the change to |
|
Finally green on my fork. |
sodonnel
left a comment
There was a problem hiding this comment.
Good work getting this all through and tracking down all the problems. LGTM
* HDDS-14496-zdu: (201 commits) HDDS-16025. Allow old clients to start finalization on a new server. (apache#11074) HDDS-16190. Do not use unified version framework in OM until ZDU is finalized. (apache#11025) HDDS-16154. Datanode should assign DatanodeDetails#currentVersion based on its apparent version (apache#11006) HDDS-16153. DatanodeDetails should use HDDSVersion instead of int (apache#10994) HDDS-15549. Recon's INITIAL_VERSION should not have an upgrade action (apache#10935) HDDS-15422. Stream read seek should not close stream (apache#10415) HDDS-16089. Improve MPU table evaluation efficiency in KeyLifeCycleService (apache#10949) HDDS-16169. Add old updateContainerState to handle upgrade path. (apache#11012) HDDS-16158. Fix sendDeleteKeysRequestAndClearList Authorization and FSO Trash Handling (apache#10996) HDDS-15911. Recon AI Assistant: add conversation memory for follow-up questions. (apache#10808) HDDS-15356. Make multi-buffer chunk checksum allocation-free (apache#10350) HDDS-15895. Make ServerNotLeaderException suggested leader flow IPv6-safe (apache#10807) HDDS-16118. Release snapshot DB handles before KeyDeletingService submits OM requests (apache#10987) HDDS-16125. Copy bucket snapshot in quota repair response to fix cache aliasing (apache#11004) HDDS-8082. Check for unnecessary newlines in config defaults (apache#10840) HDDS-15826. Recon: add cycle guard to NSSummary /du tree walks (apache#10723) HDDS-11620. Log SCM finalization completion (apache#10963) HDDS-16117. Failed FSO multipart complete leaks bucket namespace quota (apache#10984) HDDS-15961. Resolve linked bucket source properties consistently (apache#10859) HDDS-16072. Implement GetObjectAttributes: ETag, ObjectSize, StorageClass, and ObjectParts count (apache#10930). ...
What changes were proposed in this pull request?
An old client's finalize upgrade command to OM should still start the finalization process. The server will need to return a different response to the old client and redirect to the new finalization flow internally. This has already been handled on SCM in HDDS-15609.
org.apache.hadoop.hdds.scm.client.ScmClient#finalizeUpgradeleft over from an earlier implementation on the feature branch where finalization started from client to SCM.finalization in progressmarker key in the DB.The high line count is due to the new integration test and movement of existing code in the finalize requests. Most changes do not introduce new functionality.
What is the link to the Apache JIRA
HDDS-16025
How was this patch tested?