You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by av...@apache.org on 2021/04/28 15:49:39 UTC

[ozone] branch HDDS-3698-nonrolling-upgrade updated: HDDS-4818. Add command to get status of Finalize in OM & SCM (#2083)

This is an automated email from the ASF dual-hosted git repository.

avijayan pushed a commit to branch HDDS-3698-nonrolling-upgrade
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-3698-nonrolling-upgrade by this push:
     new 40223ec  HDDS-4818. Add command to get status of Finalize in OM & SCM (#2083)
40223ec is described below

commit 40223ec6944b9aaa67b167825644592be3622966
Author: Gui Hecheng <ma...@tencent.com>
AuthorDate: Wed Apr 28 23:49:22 2021 +0800

    HDDS-4818. Add command to get status of Finalize in OM & SCM (#2083)
---
 .../apache/hadoop/hdds/scm/client/ScmClient.java   |  3 +-
 .../protocol/StorageContainerLocationProtocol.java |  3 +-
 .../ozone/upgrade/BasicUpgradeFinalizer.java       |  5 ++
 .../hadoop/ozone/upgrade/UpgradeFinalizer.java     |  5 ++
 ...inerLocationProtocolClientSideTranslatorPB.java |  4 +-
 .../src/main/proto/ScmAdminProtocol.proto          |  1 +
 ...inerLocationProtocolServerSideTranslatorPB.java |  2 +-
 .../hdds/scm/server/SCMClientProtocolServer.java   |  6 +-
 .../hdds/scm/server/StorageContainerManager.java   |  7 ++-
 .../hdds/scm/cli/ContainerOperationClient.java     |  5 +-
 .../ozone/om/protocol/OzoneManagerProtocol.java    |  6 +-
 ...OzoneManagerProtocolClientSideTranslatorPB.java |  3 +-
 .../hadoop/hdds/upgrade/TestHDDSUpgrade.java       |  4 +-
 .../hadoop/ozone/om/TestOMUpgradeFinalization.java |  3 +-
 .../src/main/proto/OmClientProtocol.proto          |  1 +
 .../org/apache/hadoop/ozone/om/OzoneManager.java   |  7 ++-
 .../protocolPB/OzoneManagerRequestHandler.java     |  4 +-
 .../admin/om/FinalizationStatusSubCommand.java     | 64 ++++++++++++++++++++++
 .../ozone/admin/om/FinalizeUpgradeSubCommand.java  |  3 +-
 .../org/apache/hadoop/ozone/admin/om/OMAdmin.java  |  3 +-
 .../admin/scm/FinalizationScmStatusSubcommand.java | 51 +++++++++++++++++
 .../admin/scm/FinalizeScmUpgradeSubcommand.java    |  3 +-
 .../apache/hadoop/ozone/admin/scm/ScmAdmin.java    |  3 +-
 23 files changed, 175 insertions(+), 21 deletions(-)

diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
index 0616b1c..abc448f 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/client/ScmClient.java
@@ -340,5 +340,6 @@ public interface ScmClient extends Closeable {
       throws IOException;
 
   StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean force) throws IOException;
+      String upgradeClientID, boolean force, boolean readonly)
+      throws IOException;
 }
diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
index 72d3ab3..3cddf88 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocol.java
@@ -304,5 +304,6 @@ public interface StorageContainerLocationProtocol extends Closeable {
       throws IOException;
 
   StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean force) throws IOException;
+      String upgradeClientID, boolean force, boolean readonly)
+      throws IOException;
 }
diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java
index c4fdd5a..7609dcb 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/BasicUpgradeFinalizer.java
@@ -92,6 +92,11 @@ public abstract class BasicUpgradeFinalizer
     return new StatusAndMessages(status, returningMsgs);
   }
 
+  @Override
+  public synchronized Status getStatus() {
+    return versionManager.getUpgradeState();
+  }
+
   protected void preFinalizeUpgrade(T service) throws IOException {
     // No Op by default.
   }
diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java
index a710e3b..44ae948 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/upgrade/UpgradeFinalizer.java
@@ -177,6 +177,11 @@ public interface UpgradeFinalizer<T> {
   StatusAndMessages reportStatus(String upgradeClientId, boolean takeover)
       throws IOException;
 
+  /**
+   * Get a readonly status of the finalization.
+   * @return the status of the finalization
+   */
+  Status getStatus();
 
   /**
    * Runs the set of pre finalized state validations and actions that need to
diff --git a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
index 87f6398..2b3b42f 100644
--- a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
+++ b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/scm/protocolPB/StorageContainerLocationProtocolClientSideTranslatorPB.java
@@ -746,12 +746,14 @@ public final class StorageContainerLocationProtocolClientSideTranslatorPB
 
   @Override
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean force) throws IOException {
+      String upgradeClientID, boolean force, boolean readonly)
+      throws IOException {
     QueryUpgradeFinalizationProgressRequestProto req =
         QueryUpgradeFinalizationProgressRequestProto.
             newBuilder()
             .setUpgradeClientId(upgradeClientID)
             .setTakeover(force)
+            .setReadonly(readonly)
             .build();
 
     QueryUpgradeFinalizationProgressResponseProto response =
diff --git a/hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto b/hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto
index dfd10de..ea443e6 100644
--- a/hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto
+++ b/hadoop-hdds/interface-admin/src/main/proto/ScmAdminProtocol.proto
@@ -431,6 +431,7 @@ message FinalizeScmUpgradeResponseProto {
 message QueryUpgradeFinalizationProgressRequestProto {
   required string upgradeClientId = 1;
   optional bool takeover = 2;
+  optional bool readonly = 3;
 }
 message QueryUpgradeFinalizationProgressResponseProto {
   required hadoop.hdds.UpgradeFinalizationStatus status = 1;
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
index d630268..66093b3 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java
@@ -578,7 +578,7 @@ public final class StorageContainerLocationProtocolServerSideTranslatorPB
       throws IOException {
     StatusAndMessages progress =
         impl.queryUpgradeFinalizationProgress(request.getUpgradeClientId(),
-            request.getTakeover());
+            request.getTakeover(), request.getReadonly());
 
     UpgradeFinalizationStatus.Status protoStatus =
         UpgradeFinalizationStatus.Status.valueOf(progress.status().name());
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
index 625362d..4e1c489 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/SCMClientProtocolServer.java
@@ -668,8 +668,10 @@ public class SCMClientProtocolServer implements
 
   @Override
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean force) throws  IOException {
-    return scm.queryUpgradeFinalizationProgress(upgradeClientID, force);
+      String upgradeClientID, boolean force, boolean readonly)
+      throws  IOException {
+    return scm.queryUpgradeFinalizationProgress(upgradeClientID, force,
+        readonly);
   }
 
   /**
diff --git a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
index fc9fd01..03272a5 100644
--- a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
+++ b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/server/StorageContainerManager.java
@@ -137,6 +137,7 @@ import java.net.InetSocketAddress;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -1646,8 +1647,12 @@ public final class StorageContainerManager extends ServiceRuntimeInfoImpl
   }
 
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean takeover
+      String upgradeClientID, boolean takeover, boolean readonly
   ) throws IOException {
+    if (readonly) {
+      return new StatusAndMessages(upgradeFinalizer.getStatus(),
+          Collections.emptyList());
+    }
     return upgradeFinalizer.reportStatus(upgradeClientID, takeover);
   }
 
diff --git a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
index e5295d7..93c87b2 100644
--- a/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
+++ b/hadoop-hdds/tools/src/main/java/org/apache/hadoop/hdds/scm/cli/ContainerOperationClient.java
@@ -560,8 +560,9 @@ public class ContainerOperationClient implements ScmClient {
 
   @Override
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean force) throws IOException {
+      String upgradeClientID, boolean force, boolean readonly)
+      throws IOException {
     return storageContainerLocationClient.queryUpgradeFinalizationProgress(
-        upgradeClientID, force);
+        upgradeClientID, force, readonly);
   }
 }
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocol/OzoneManagerProtocol.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocol/OzoneManagerProtocol.java
index 706d126..dd85032 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocol/OzoneManagerProtocol.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocol/OzoneManagerProtocol.java
@@ -330,7 +330,8 @@ public interface OzoneManagerProtocol
    *
    * The leader Ozone Manager initiates finalization of the followers via
    * the Raft protocol in other Ozone Managers, and reports progress to the
-   * client via the {@link #queryUpgradeFinalizationProgress(String, boolean)}
+   * client via the
+   * {@link #queryUpgradeFinalizationProgress(String, boolean, boolean)}
    * call.
    *
    * The follower Ozone Managers reject this request and directs the client to
@@ -366,6 +367,7 @@ public interface OzoneManagerProtocol
    *    client takes over the old client and the old client should exit.
    *
    * @param takeover set force takeover of output monitoring
+   * @param readonly set readonly of output
    * @param upgradeClientID String identifier of the upgrade finalizer client
    * @return the finalization status and status messages.
    * @throws IOException
@@ -374,7 +376,7 @@ public interface OzoneManagerProtocol
    *            if finalization is needed but not yet started
    */
   StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean takeover
+      String upgradeClientID, boolean takeover, boolean readonly
   ) throws IOException;
 
   /*
diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
index 4945254..7c1488c 100644
--- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
+++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java
@@ -1112,12 +1112,13 @@ public final class OzoneManagerProtocolClientSideTranslatorPB
 
   @Override
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean takeover
+      String upgradeClientID, boolean takeover, boolean readonly
   ) throws IOException {
     FinalizeUpgradeProgressRequest req = FinalizeUpgradeProgressRequest
         .newBuilder()
         .setUpgradeClientId(upgradeClientID)
         .setTakeover(takeover)
+        .setReadonly(readonly)
         .build();
 
     OMRequest omRequest = createOMRequest(Type.FinalizeUpgradeProgress)
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSUpgrade.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSUpgrade.java
index 608b04b..1d5a511 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSUpgrade.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/hdds/upgrade/TestHDDSUpgrade.java
@@ -410,7 +410,7 @@ public class TestHDDSUpgrade {
 
     // Wait for the Finalization to complete on the SCM.
     while (status.status() != FINALIZATION_DONE) {
-      status = scm.queryUpgradeFinalizationProgress("xyz", false);
+      status = scm.queryUpgradeFinalizationProgress("xyz", false, false);
     }
 
     Set<PipelineID> postUpgradeOpenPipelines =
@@ -1018,7 +1018,7 @@ public class TestHDDSUpgrade {
     while ((status.status() != FINALIZATION_DONE) &&
         (status.status() != ALREADY_FINALIZED)) {
       loadSCMState();
-      status = scm.queryUpgradeFinalizationProgress("xyz", true);
+      status = scm.queryUpgradeFinalizationProgress("xyz", true, false);
       if (status.status() == FINALIZATION_REQUIRED) {
         status = scm.finalizeUpgrade("xyz");
       }
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
index 9d85fa7..f3cac33 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOMUpgradeFinalization.java
@@ -239,7 +239,8 @@ public class TestOMUpgradeFinalization {
     waitFor(() -> {
       try {
         StatusAndMessages statusAndMessages =
-            omClient.queryUpgradeFinalizationProgress("finalize-test", false);
+            omClient.queryUpgradeFinalizationProgress("finalize-test", false,
+                false);
         System.out.println("Finalization Messages : " +
             statusAndMessages.msgs());
         return statusAndMessages.status().equals(FINALIZATION_DONE);
diff --git a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
index 660ef82..5caa63d 100644
--- a/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
+++ b/hadoop-ozone/interface-client/src/main/proto/OmClientProtocol.proto
@@ -1075,6 +1075,7 @@ message FinalizeUpgradeResponse {
 message FinalizeUpgradeProgressRequest {
     required string upgradeClientId = 1;
     optional bool takeover = 2;
+    optional bool readonly = 3;
 }
 
 message FinalizeUpgradeProgressResponse {
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
index 9a6d741..9fd34fe 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java
@@ -37,6 +37,7 @@ import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
@@ -2745,8 +2746,12 @@ public final class OzoneManager extends ServiceRuntimeInfoImpl
 
   @Override
   public StatusAndMessages queryUpgradeFinalizationProgress(
-      String upgradeClientID, boolean takeover
+      String upgradeClientID, boolean takeover, boolean readonly
   ) throws IOException {
+    if (readonly) {
+      return new StatusAndMessages(upgradeFinalizer.getStatus(),
+          Collections.emptyList());
+    }
     return upgradeFinalizer.reportStatus(upgradeClientID, takeover);
   }
 
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
index 0385c8c..bbb0696 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
@@ -615,9 +615,11 @@ public class OzoneManagerRequestHandler implements RequestHandler {
       FinalizeUpgradeProgressRequest request) throws IOException {
     String upgradeClientId = request.getUpgradeClientId();
     boolean takeover = request.getTakeover();
+    boolean readonly = request.getReadonly();
 
     StatusAndMessages progress =
-        impl.queryUpgradeFinalizationProgress(upgradeClientId, takeover);
+        impl.queryUpgradeFinalizationProgress(upgradeClientId, takeover,
+            readonly);
 
     UpgradeFinalizationStatus.Status protoStatus =
         UpgradeFinalizationStatus.Status.valueOf(progress.status().name());
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizationStatusSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizationStatusSubCommand.java
new file mode 100644
index 0000000..0af5400
--- /dev/null
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizationStatusSubCommand.java
@@ -0,0 +1,64 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership.  The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package org.apache.hadoop.ozone.admin.om;
+
+import org.apache.hadoop.hdds.cli.HddsVersionProvider;
+import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol;
+import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer;
+import picocli.CommandLine;
+
+import java.util.UUID;
+import java.util.concurrent.Callable;
+
+/**
+ * Handler of ozone admin om finalizationstatus command.
+ */
+@CommandLine.Command(
+    name = "finalizationstatus",
+    description = "Get the finalization status of om cluster.",
+    mixinStandardHelpOptions = true,
+    versionProvider = HddsVersionProvider.class
+)
+public class FinalizationStatusSubCommand implements Callable<Void> {
+
+  @CommandLine.ParentCommand
+  private OMAdmin parent;
+
+  @CommandLine.Option(
+      names = {"-id", "--service-id"},
+      description = "Ozone Manager Service ID"
+  )
+  private String omServiceId;
+
+  @CommandLine.Option(
+      names = {"-host", "--service-host"},
+      description = "Ozone Manager Host"
+  )
+  private String omHost;
+
+  @Override
+  public Void call() throws Exception {
+    OzoneManagerProtocol client =
+        parent.createOmClient(omServiceId, omHost, false);
+    String upgradeClientID = "Upgrade-Client-" + UUID.randomUUID().toString();
+    UpgradeFinalizer.StatusAndMessages progress =
+        client.queryUpgradeFinalizationProgress(upgradeClientID, false, true);
+    System.out.println(progress.status());
+    return null;
+  }
+}
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizeUpgradeSubCommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizeUpgradeSubCommand.java
index a943da5..922e788 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizeUpgradeSubCommand.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/FinalizeUpgradeSubCommand.java
@@ -148,7 +148,8 @@ public class FinalizeUpgradeSubCommand implements Callable<Void> {
         // do not check for exceptions, if one happens during monitoring we
         // should report it and exit.
         UpgradeFinalizer.StatusAndMessages progress =
-            client.queryUpgradeFinalizationProgress(upgradeClientID, force);
+            client.queryUpgradeFinalizationProgress(upgradeClientID, force,
+                false);
         // this can happen after trying to takeover the request after the fact
         // when there is already nothing to take over.
         if (isFinalized(progress.status())) {
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
index 6c39de0..a11ce25 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/om/OMAdmin.java
@@ -56,7 +56,8 @@ import java.util.Collection;
         FinalizeUpgradeSubCommand.class,
         GetServiceRolesSubcommand.class,
         PrepareSubCommand.class,
-        CancelPrepareSubCommand.class
+        CancelPrepareSubCommand.class,
+        FinalizationStatusSubCommand.class
     })
 @MetaInfServices(SubcommandWithParent.class)
 public class OMAdmin extends GenericCli implements SubcommandWithParent {
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizationScmStatusSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizationScmStatusSubcommand.java
new file mode 100644
index 0000000..cf320a5
--- /dev/null
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizationScmStatusSubcommand.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.ozone.admin.scm;
+
+import java.io.IOException;
+import java.util.UUID;
+
+import org.apache.hadoop.hdds.cli.HddsVersionProvider;
+import org.apache.hadoop.hdds.scm.cli.ScmSubcommand;
+import org.apache.hadoop.hdds.scm.client.ScmClient;
+import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer;
+
+import picocli.CommandLine;
+
+/**
+ * Handler of FinalizationStatus SCM command.
+ */
+@CommandLine.Command(
+    name = "finalizationstatus",
+    description = "Finalization SCM Status",
+    mixinStandardHelpOptions = true,
+    versionProvider = HddsVersionProvider.class)
+public class FinalizationScmStatusSubcommand extends ScmSubcommand {
+
+  @CommandLine.ParentCommand
+  private ScmAdmin parent;
+
+  @Override
+  public void execute(ScmClient client) throws IOException {
+    String upgradeClientID = "Upgrade-Client-" + UUID.randomUUID().toString();
+    UpgradeFinalizer.StatusAndMessages progress =
+        client.queryUpgradeFinalizationProgress(upgradeClientID, false, true);
+    System.out.println(progress.status());
+  }
+}
\ No newline at end of file
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizeScmUpgradeSubcommand.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizeScmUpgradeSubcommand.java
index aac050a..b2a1ecc 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizeScmUpgradeSubcommand.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/FinalizeScmUpgradeSubcommand.java
@@ -133,7 +133,8 @@ public class FinalizeScmUpgradeSubcommand extends ScmSubcommand {
         // do not check for exceptions, if one happens during monitoring we
         // should report it and exit.
         UpgradeFinalizer.StatusAndMessages progress =
-            client.queryUpgradeFinalizationProgress(upgradeClientID, force);
+            client.queryUpgradeFinalizationProgress(upgradeClientID, force,
+                false);
         // this can happen after trying to takeover the request after the fact
         // when there is already nothing to take over.
         if (isFinalized(progress.status())) {
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
index 1f63c73..006418a 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/admin/scm/ScmAdmin.java
@@ -36,7 +36,8 @@ import picocli.CommandLine.Spec;
     versionProvider = HddsVersionProvider.class,
     subcommands = {
         GetScmRatisRolesSubcommand.class,
-        FinalizeScmUpgradeSubcommand.class
+        FinalizeScmUpgradeSubcommand.class,
+        FinalizationScmStatusSubcommand.class
     })
 @MetaInfServices(SubcommandWithParent.class)
 public class ScmAdmin extends GenericCli  implements SubcommandWithParent {

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org