[ 
https://issues.apache.org/jira/browse/HDFS-14814?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16941301#comment-16941301
 ] 

Íñigo Goiri commented on HDFS-14814:
------------------------------------

Regarding {{setQuota()}}, keep in mind we should keep the signature from 
ClientProtocol:
{code}
  @Idempotent
  void setQuota(String path, long namespaceQuota, long storagespaceQuota,
      StorageType type) throws IOException;
{code}
We cannot set Override because this is not a full impl.
So let's keep the old method and add the extra one just for 
RouterQuotaUpdateService.
We could potentially also make it package protected instead of public.
(Same for all the aux methods.)

I think that in thel loop in getGlobalQuota, you could just do the ifs, and not 
do the if with the break, you will get the same number of comparissons.
In addition, I don't think getGlobalQuota() needs the check for operation as 
it's not supposed to be invoked through RPC directly.
As I mentioned before, let's make all these aux methods package private to 
distinguish them from the public API ones.
Maybe even adding some annotation?

For the log in RouterQuotaUpdateService#fixGlobalQuota we should fully leverage 
logger.
{code}
162           LOG.info("[Fix Quota] src={} dst={} oldQuota={}/{} 
newQuota={}/{}",
163               location.getSrc(), location,
164               remoteQuota.getQuota(), remoteQuota.getSpaceQuota(),
165               gQuota.getQuota(), gQuota.getSpaceQuota());
{code}

> RBF: RouterQuotaUpdateService supports inherited rule.
> ------------------------------------------------------
>
>                 Key: HDFS-14814
>                 URL: https://issues.apache.org/jira/browse/HDFS-14814
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>            Reporter: Jinglun
>            Assignee: Jinglun
>            Priority: Major
>         Attachments: HDFS-14814.001.patch, HDFS-14814.002.patch, 
> HDFS-14814.003.patch, HDFS-14814.004.patch, HDFS-14814.005.patch, 
> HDFS-14814.006.patch, HDFS-14814.007.patch, HDFS-14814.008.patch, 
> HDFS-14814.009.patch, HDFS-14814.010.patch
>
>
> I want to add a rule *'The quota should be set the same as the nearest 
> parent'* to Global Quota. Supposing we have the mount table below.
> M1: /dir-a                            ns0->/dir-a     \{nquota=10,squota=20}
> M2: /dir-a/dir-b                 ns1->/dir-b     \{nquota=-1,squota=30}
> M3: /dir-a/dir-b/dir-c       ns2->/dir-c     \{nquota=-1,squota=-1}
> M4: /dir-d                           ns3->/dir-d     \{nquota=-1,squota=-1}
>  
> The quota for the remote locations on the namespaces should be:
>  ns0->/dir-a     \{nquota=10,squota=20}
>  ns1->/dir-b     \{nquota=10,squota=30}
>  ns2->/dir-c      \{nquota=10,squota=30}
>  ns3->/dir-d     \{nquota=-1,squota=-1}
>  
> The quota of the remote location is set the same as the corresponding 
> MountTable, and if there is no quota of the MountTable then the quota is set 
> to the nearest parent MountTable with quota.
>  
> It's easy to implement it. In RouterQuotaUpdateService each time we compute 
> the currentQuotaUsage, we can get the quota info for each MountTable. We can 
> do a
>  check and fix all the MountTable which's quota doesn't match the rule above.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to