[ 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