[
https://issues.apache.org/jira/browse/HDFS-14542?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16856504#comment-16856504
]
Jinglun commented on HDFS-14542:
--------------------------------
Hi [~ayushtkn], thanks for comments. No, the method isQuotaByStorageTypeSet(t)
wouldn't check for each storage type. Method isQuotaByStorageTypeSet(t) works
differently from isQuotaByStorageTypeSet(), it only checks the value
corresponding to StorageType t.
Quota check is a very frequent operation. Doing the storage type quota check 10
times for each parent inode with quota whenever calling mkdir, create, addBlock
etc. It's a big cost.
The simple way is deleting the redundant code and we can reduce the cost by
half. I'm considering a final version that skips the check if there isn't any
storage type quota. See HDFS-14547.
> Remove redundant code when verify quota
> ---------------------------------------
>
> Key: HDFS-14542
> URL: https://issues.apache.org/jira/browse/HDFS-14542
> Project: Hadoop HDFS
> Issue Type: Improvement
> Affects Versions: 3.1.1
> Reporter: Jinglun
> Assignee: Jinglun
> Priority: Minor
> Attachments: HDFS-14542.patch
>
>
> DirectoryWithQuotaFeature.verifyQuotaByStorageType() does the job of
> verifying quota. It's redundant to call isQuotaByStorageTypeSet() because the
> for each iterator nextline has done the same job.
> {code:java}
> private void verifyQuotaByStorageType(EnumCounters<StorageType> typeDelta)
> throws QuotaByStorageTypeExceededException {
> if (!isQuotaByStorageTypeSet()) { // REDUNDANT.
> return;
> }
> for (StorageType t: StorageType.getTypesSupportingQuota()) {
> if (!isQuotaByStorageTypeSet(t)) { // CHECK FOR EACH STORAGETYPE.
> continue;
> }
> if (Quota.isViolated(quota.getTypeSpace(t), usage.getTypeSpace(t),
> typeDelta.get(t))) {
> throw new QuotaByStorageTypeExceededException(
> quota.getTypeSpace(t), usage.getTypeSpace(t) + typeDelta.get(t), t);
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]