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