You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "Jinglun (Jira)" <ji...@apache.org> on 2019/11/07 09:10:00 UTC

[jira] [Created] (HDFS-14964) Race between RouterUpdateService and RouterAdmin -setQuota

Jinglun created HDFS-14964:
------------------------------

             Summary: Race between RouterUpdateService and RouterAdmin -setQuota
                 Key: HDFS-14964
                 URL: https://issues.apache.org/jira/browse/HDFS-14964
             Project: Hadoop HDFS
          Issue Type: Bug
            Reporter: Jinglun
            Assignee: Jinglun


There is a race condition between RouterUpdateService and RouterAdmin -setQuota. 

Supposing the mount table is:

M1: /dir-1              ns0:/dir-1 \{nsQuota, ssQuota}
 # RouterUpdateService is scheduled. It finds the nsUsage of M1 is changed and wants to update it at RouterQuotaUpdateService#147.
 # Before RouterUpdateService updates, a RouterAdmin use -setQuota and update the Mount Entry Quota.
 # RouterAdmin -setQuota executes successfully and the quota is updated.
 # RouterUpdateService is re-scheduled. It doesn't know the mount entry on zk has already been updated. So it continue to update the quota usage and hence overwrite RouterAdmin's change. 

 

I think a possible solution would be not letting RouterUpdateService to update mount entry on zk(It will still update usage in cache). Let RouterAdmin be the only entrance to update mount entry on zk. Even one Router restarts the RouterUpdateService would compute and update the usage in cache so not getting usage from zk won't be a big problem.

 

I wrote a unit test to show the race case. 



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

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-help@hadoop.apache.org