[ 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