[ 
https://issues.apache.org/jira/browse/HDFS-9534?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15110288#comment-15110288
 ] 

Vinayakumar B commented on HDFS-9534:
-------------------------------------

1. 
{code}
   /**
+   * Remove the storage policy st for a given file or directory,
+   * and set it to unspecified storage policy.
+   * @param src file or directory path.
+   * @throws IOException
+   */
{code}
There is a nit, {{storage policy st for a}}.
Also I think, {{set it to unspecified storage policy}} this sentence is not 
required. As chris said, let it be transparent to user.
Similar changes in other places as well.

2. In {{FSDirAttrOp#setDirStoragePolicy}}, in case of removal, we should 
actually remove the xattr, instead of setting with UNSPECIFIED. It will be 
extra xattr, which adds to memory.
May be following would work.
{code}
@@ -485,11 +489,18 @@ private static void setDirStoragePolicy(
       int latestSnapshotId) throws IOException {
     List<XAttr> existingXAttrs = XAttrStorage.readINodeXAttrs(inode);
     XAttr xAttr = BlockStoragePolicySuite.buildXAttr(policyId);
-    List<XAttr> newXAttrs = FSDirXAttrOp.setINodeXAttrs(fsd, existingXAttrs,
-                                                        Arrays.asList(xAttr),
-                                                        EnumSet.of(
-                                                            
XAttrSetFlag.CREATE,
-                                                            
XAttrSetFlag.REPLACE));
+    List<XAttr> newXAttrs = null;
+    if (policyId == BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
+      List<XAttr> toRemove = Lists.newArrayList();
+      toRemove.add(xAttr);
+      List<XAttr> removed = Lists.newArrayList();
+      newXAttrs =
+          FSDirXAttrOp.filterINodeXAttrs(existingXAttrs, toRemove, removed);
+    } else {
+      newXAttrs =
+          FSDirXAttrOp.setINodeXAttrs(fsd, existingXAttrs, 
Arrays.asList(xAttr),
+              EnumSet.of(XAttrSetFlag.CREATE, XAttrSetFlag.REPLACE));
+    }
     XAttrStorage.updateINodeXAttrs(inode, newXAttrs, latestSnapshotId);
   }
{code}

Agree?

> Add CLI command to clear storage policy from a path.
> ----------------------------------------------------
>
>                 Key: HDFS-9534
>                 URL: https://issues.apache.org/jira/browse/HDFS-9534
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: tools
>            Reporter: Chris Nauroth
>            Assignee: Xiaobing Zhou
>         Attachments: HDFS-9534.001.patch
>
>
> The {{hdfs storagepolicies}} command has sub-commands for 
> {{-setStoragePolicy}} and {{-getStoragePolicy}} on a path.  However, there is 
> no {{-removeStoragePolicy}} to remove a previously set storage policy on a 
> path.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to