You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Peter Shi (JIRA)" <ji...@apache.org> on 2015/04/22 10:29:58 UTC
[jira] [Updated] (HDFS-8219) setStoragePolicy with folder behavior
is different after cluster restart
[ 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)