Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
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
public byte getStoragePolicyID() { byte id = getLocalStoragePolicyID(); if (id == BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) { return this.getParent() != null ? this.getParent().getStoragePolicyID() : id; } return id; }
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.