Now federation doesn't support set the global quota for each folder. Currently the quota will be applied for each subcluster under the specified folder via RPC call.
It will be very useful for users that federation can support setting global quota and exposing the command of this.
In a federated environment, a folder can be spread across multiple subclusters. For this reason, we plan to solve this by following way:
- Set global quota across each subcluster. We don't allow each subcluster can exceed maximun quota value.
- We need to construct one <Path, QuotaUsage> cache map for storing the sum quota usage of these subclusters under federation folder. Every time we want to do WRITE operation under specified folder, we will get its quota usage from cache and verify its quota. If quota exceeded, throw exception, otherwise update its quota usage in cache when finishing operations.
The quota will be set to mount table and as a new field in mount table. The set/unset command will be like: