[jira] [Updated] (HDFS-14661) RBF:updateMountTableEntry shouldn't update mountTableEntry if targetPath not exist

2019-07-22 Thread xuzq (JIRA)


 [ 
https://issues.apache.org/jira/browse/HDFS-14661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xuzq updated HDFS-14661:

Attachment: HDFS-14661-trunk-001.patch

> RBF:updateMountTableEntry shouldn't update mountTableEntry if targetPath not 
> exist
> --
>
> Key: HDFS-14661
> URL: https://issues.apache.org/jira/browse/HDFS-14661
> Project: Hadoop HDFS
>  Issue Type: Bug
>  Components: rbf
>Affects Versions: 3.1.2
>Reporter: xuzq
>Priority: Major
> Attachments: HDFS-14661-HDFS-13891-001.patch, 
> HDFS-14661-trunk-001.patch
>
>
> The updateMountTableEntry shouldn't update the mountEntry if the targetPath 
> not exist.
> {code:java}
> @Override
> public UpdateMountTableEntryResponse updateMountTableEntry(
> UpdateMountTableEntryRequest request) throws IOException {
>   UpdateMountTableEntryResponse response =
>   getMountTableStore().updateMountTableEntry(request);
>   MountTable mountTable = request.getEntry();
>   if (mountTable != null && router.isQuotaEnabled()) {
> synchronizeQuota(mountTable.getSourcePath(),
> mountTable.getQuota().getQuota(),
> mountTable.getQuota().getSpaceQuota());
>   }
>   return response;
> }
> /**
>  * Synchronize the quota value across mount table and subclusters.
>  * @param path Source path in given mount table.
>  * @param nsQuota Name quota definition in given mount table.
>  * @param ssQuota Space quota definition in given mount table.
>  * @throws IOException
>  */
> private void synchronizeQuota(String path, long nsQuota, long ssQuota)
> throws IOException {
>   if (router.isQuotaEnabled() &&
>   (nsQuota != HdfsConstants.QUOTA_DONT_SET
>   || ssQuota != HdfsConstants.QUOTA_DONT_SET)) {
> HdfsFileStatus ret = this.router.getRpcServer().getFileInfo(path);
> if (ret != null) {
>   this.router.getRpcServer().getQuotaModule().setQuota(path, nsQuota,
>   ssQuota, null);
> }
>   }
> }
> {code}
> As above, updateMountTableEntry update one mountEntry:
>  # update mountEntry in zookeeper
>  # synchronizeQuota(maybe throw some exception like "Directory does not 
> exist")
>  
> if  synchronizeQuota throw some exception, will return some exception to 
> dfsRouterAdmin, but the new mountEntry has been updated to zk.  
> It's clearly not what we would expect.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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



[jira] [Updated] (HDFS-14661) RBF:updateMountTableEntry shouldn't update mountTableEntry if targetPath not exist

2019-07-22 Thread xuzq (JIRA)


 [ 
https://issues.apache.org/jira/browse/HDFS-14661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

xuzq updated HDFS-14661:

Attachment: HDFS-14661-HDFS-13891-001.patch

> RBF:updateMountTableEntry shouldn't update mountTableEntry if targetPath not 
> exist
> --
>
> Key: HDFS-14661
> URL: https://issues.apache.org/jira/browse/HDFS-14661
> Project: Hadoop HDFS
>  Issue Type: Bug
>  Components: rbf
>Affects Versions: 3.1.2
>Reporter: xuzq
>Priority: Major
> Attachments: HDFS-14661-HDFS-13891-001.patch
>
>
> The updateMountTableEntry shouldn't update the mountEntry if the targetPath 
> not exist.
> {code:java}
> @Override
> public UpdateMountTableEntryResponse updateMountTableEntry(
> UpdateMountTableEntryRequest request) throws IOException {
>   UpdateMountTableEntryResponse response =
>   getMountTableStore().updateMountTableEntry(request);
>   MountTable mountTable = request.getEntry();
>   if (mountTable != null && router.isQuotaEnabled()) {
> synchronizeQuota(mountTable.getSourcePath(),
> mountTable.getQuota().getQuota(),
> mountTable.getQuota().getSpaceQuota());
>   }
>   return response;
> }
> /**
>  * Synchronize the quota value across mount table and subclusters.
>  * @param path Source path in given mount table.
>  * @param nsQuota Name quota definition in given mount table.
>  * @param ssQuota Space quota definition in given mount table.
>  * @throws IOException
>  */
> private void synchronizeQuota(String path, long nsQuota, long ssQuota)
> throws IOException {
>   if (router.isQuotaEnabled() &&
>   (nsQuota != HdfsConstants.QUOTA_DONT_SET
>   || ssQuota != HdfsConstants.QUOTA_DONT_SET)) {
> HdfsFileStatus ret = this.router.getRpcServer().getFileInfo(path);
> if (ret != null) {
>   this.router.getRpcServer().getQuotaModule().setQuota(path, nsQuota,
>   ssQuota, null);
> }
>   }
> }
> {code}
> As above, updateMountTableEntry update one mountEntry:
>  # update mountEntry in zookeeper
>  # synchronizeQuota(maybe throw some exception like "Directory does not 
> exist")
>  
> if  synchronizeQuota throw some exception, will return some exception to 
> dfsRouterAdmin, but the new mountEntry has been updated to zk.  
> It's clearly not what we would expect.



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)

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