You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by sa...@apache.org on 2021/01/18 06:53:56 UTC

[ozone] branch master updated: HDDS-4672. Add warning log when old volume and bucket set quota (#1781)

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

sammichen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new a02ea47  HDDS-4672. Add warning log when old volume and bucket set quota (#1781)
a02ea47 is described below

commit a02ea4733549dd6ec250555d11135bdf46b97b6d
Author: micah zhao <mi...@tencent.com>
AuthorDate: Mon Jan 18 14:53:40 2021 +0800

    HDDS-4672. Add warning log when old volume and bucket set quota (#1781)
---
 .../java/org/apache/hadoop/ozone/OzoneConsts.java    |  1 +
 .../apache/hadoop/ozone/client/rpc/RpcClient.java    | 20 ++++++++++++++++++++
 .../java/org/apache/hadoop/ozone/shell/Handler.java  |  4 ++++
 .../hadoop/ozone/shell/bucket/SetQuotaHandler.java   | 10 ++++++++++
 .../hadoop/ozone/shell/volume/SetQuotaHandler.java   |  9 +++++++++
 5 files changed, 44 insertions(+)

diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
index 4e83467..c62c1da 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneConsts.java
@@ -196,6 +196,7 @@ public final class OzoneConsts {
    * Quota RESET default is -1, which means quota is not set.
    */
   public static final long QUOTA_RESET = -1;
+  public static final long OLD_QUOTA_DEFAULT = -2;
 
   /**
    * Quota Units.
diff --git a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
index 91654ba..48aacb6 100644
--- a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
+++ b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java
@@ -110,6 +110,8 @@ import org.apache.hadoop.security.token.Token;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import static org.apache.hadoop.ozone.OzoneAcl.AclScope.ACCESS;
+import static org.apache.hadoop.ozone.OzoneConsts.OLD_QUOTA_DEFAULT;
+
 import org.apache.logging.log4j.util.Strings;
 import org.apache.ratis.protocol.ClientId;
 import org.slf4j.Logger;
@@ -293,6 +295,14 @@ public class RpcClient implements ClientProtocol {
     HddsClientUtils.verifyResourceName(volumeName);
     verifyCountsQuota(quotaInNamespace);
     verifySpaceQuota(quotaInBytes);
+    // If the volume is old, we need to remind the user on the client side
+    // that it is not recommended to enable quota.
+    OmVolumeArgs omVolumeArgs = ozoneManagerClient.getVolumeInfo(volumeName);
+    if (omVolumeArgs.getQuotaInNamespace() == OLD_QUOTA_DEFAULT) {
+      LOG.warn("Volume {} is created before version 1.1.0, usedNamespace " +
+          "may be inaccurate and it is not recommended to enable quota.",
+          volumeName);
+    }
     ozoneManagerClient.setQuota(volumeName, quotaInNamespace, quotaInBytes);
   }
 
@@ -580,6 +590,16 @@ public class RpcClient implements ClientProtocol {
         .setBucketName(bucketName)
         .setQuotaInBytes(quotaInBytes)
         .setQuotaInNamespace(quotaInNamespace);
+    // If the bucket is old, we need to remind the user on the client side
+    // that it is not recommended to enable quota.
+    OmBucketInfo omBucketInfo = ozoneManagerClient.getBucketInfo(
+        volumeName, bucketName);
+    if (omBucketInfo.getQuotaInNamespace() == OLD_QUOTA_DEFAULT ||
+        omBucketInfo.getUsedBytes() == OLD_QUOTA_DEFAULT) {
+      LOG.warn("Bucket {} is created before version 1.1.0, usedBytes or " +
+          "usedNamespace may be inaccurate and it is not recommended to " +
+          "enable quota.", bucketName);
+    }
     ozoneManagerClient.setBucketProperty(builder.build());
 
   }
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/Handler.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/Handler.java
index ebf8c50..d8f49b9 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/Handler.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/Handler.java
@@ -118,6 +118,10 @@ public abstract class Handler implements Callable<Void> {
     out().println(JsonUtils.toJsonStringWithDefaultPrettyPrinter(o));
   }
 
+  protected void printMsg(String msg) {
+    out().println(msg);
+  }
+
   protected OzoneConfiguration getConf() {
     return conf;
   }
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/bucket/SetQuotaHandler.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/bucket/SetQuotaHandler.java
index 0bb743e..7df37a3 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/bucket/SetQuotaHandler.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/bucket/SetQuotaHandler.java
@@ -28,6 +28,8 @@ import picocli.CommandLine.Command;
 
 import java.io.IOException;
 
+import static org.apache.hadoop.ozone.OzoneConsts.OLD_QUOTA_DEFAULT;
+
 /**
  * set quota of the bucket.
  */
@@ -58,6 +60,14 @@ public class SetQuotaHandler extends BucketHandler {
       namespaceQuota = OzoneQuota.parseNameSpaceQuota(
           quotaOptions.getQuotaInNamespace()).getQuotaInNamespace();
     }
+
+    if (bucket.getQuotaInNamespace() == OLD_QUOTA_DEFAULT ||
+        bucket.getUsedBytes() == OLD_QUOTA_DEFAULT) {
+      String msg = "Bucket " + bucketName + " is created before version " +
+          "1.1.0, usedBytes or usedNamespace may be inaccurate and it is not" +
+          " recommended to enable quota.";
+      printMsg(msg);
+    }
     bucket.setQuota(OzoneQuota.getOzoneQuota(spaceQuota, namespaceQuota));
   }
 }
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/volume/SetQuotaHandler.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/volume/SetQuotaHandler.java
index 86ed084..018a213 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/volume/SetQuotaHandler.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/shell/volume/SetQuotaHandler.java
@@ -29,6 +29,8 @@ import picocli.CommandLine.Command;
 
 import java.io.IOException;
 
+import static org.apache.hadoop.ozone.OzoneConsts.OLD_QUOTA_DEFAULT;
+
 /**
  * Executes set volume quota calls.
  */
@@ -57,6 +59,13 @@ public class SetQuotaHandler extends VolumeHandler {
           quotaOptions.getQuotaInNamespace()).getQuotaInNamespace();
     }
 
+    if (volume.getQuotaInNamespace() == OLD_QUOTA_DEFAULT) {
+      String msg = "Volume " + volumeName + " is created before version " +
+          "1.1.0, usedNamespace may be inaccurate and it is not recommended" +
+          " to enable quota.";
+      printMsg(msg);
+    }
+
     volume.setQuota(OzoneQuota.getOzoneQuota(spaceQuota, namespaceQuota));
   }
 }


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