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

Peter Shi updated HDFS-8219:
----------------------------
    Description: 
Reproduce steps.
1) mkdir named /temp
2) put one file A under /temp
3) change /temp storage policy to COLD
4) use -getStoragePolicy to query file A's storage policy, it is same with /temp
5) change /temp folder storage policy again, will see file A's storage policy 
keep same with parent folder.

then restart the cluster.
do 3) 4) again, will find file A's storage policy is not change while parent 
folder's storage policy changes. It behaves different.

As i debugged, found the code:
in INodeFile.getStoragePolicyID
{code}
  public byte getStoragePolicyID() {
    byte id = getLocalStoragePolicyID();
    if (id == BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
      return this.getParent() != null ?
          this.getParent().getStoragePolicyID() : id;
    }
    return id;
  }
{code}

If the file do not have its storage policy, it will use parent's. But after 
cluster restart, the file turns to have its own storage policy.



  was:
Reproduce steps.
1) mkdir named /temp
2) put one file A under /temp
3) change /temp storage policy to COLD
4) use -getStoragePolicy to query file A's storage policy, it is same with /temp
5) change /temp folder storage policy again, will see file A's storage policy 
keep same with parent folder.

then restart the cluster.
do 3) 4) again, will find file A's storage policy is not change while parent 
folder's storage policy changes. It behaves different.

As i debugged, found the code:
in INodeFile.getStoragePolicyID
{code}
  public byte getStoragePolicyID() {
    byte id = getLocalStoragePolicyID();
    if (id == BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
      return this.getParent() != null ?
          this.getParent().getStoragePolicyID() : id;
    }
    return id;
  }
{code}

I think the problem maybe here.




> setStoragePolicy with folder behavior is different after cluster restart
> ------------------------------------------------------------------------
>
>                 Key: HDFS-8219
>                 URL: https://issues.apache.org/jira/browse/HDFS-8219
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: Peter Shi
>            Priority: Minor
>
> Reproduce steps.
> 1) mkdir named /temp
> 2) put one file A under /temp
> 3) change /temp storage policy to COLD
> 4) use -getStoragePolicy to query file A's storage policy, it is same with 
> /temp
> 5) change /temp folder storage policy again, will see file A's storage policy 
> keep same with parent folder.
> then restart the cluster.
> do 3) 4) again, will find file A's storage policy is not change while parent 
> folder's storage policy changes. It behaves different.
> As i debugged, found the code:
> in INodeFile.getStoragePolicyID
> {code}
>   public byte getStoragePolicyID() {
>     byte id = getLocalStoragePolicyID();
>     if (id == BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
>       return this.getParent() != null ?
>           this.getParent().getStoragePolicyID() : id;
>     }
>     return id;
>   }
> {code}
> If the file do not have its storage policy, it will use parent's. But after 
> cluster restart, the file turns to have its own storage policy.



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

Reply via email to