HDFS-8219. setStoragePolicy with folder behavior is different after cluster restart. (surendra singh lilhore via Xiaoyu Yao)
(cherry picked from commit0100b15501
) (cherry picked from commite68e8b3b5c
) Conflicts: hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestBlockStoragePolicy.java (cherry picked from commit b054cb68fa0fc6d1e9e77ac84575731e7d1ec0c7)
This commit is contained in:
parent
41601eae6b
commit
08006b84f8
|
@ -129,6 +129,9 @@ Release 2.6.1 - UNRELEASED
|
||||||
HDFS-8070. Pre-HDFS-7915 DFSClient cannot use short circuit on
|
HDFS-8070. Pre-HDFS-7915 DFSClient cannot use short circuit on
|
||||||
post-HDFS-7915 DataNode (cmccabe)
|
post-HDFS-7915 DataNode (cmccabe)
|
||||||
|
|
||||||
|
HDFS-8219. setStoragePolicy with folder behavior is different after cluster restart.
|
||||||
|
(surendra singh lilhore via Xiaoyu Yao)
|
||||||
|
|
||||||
Release 2.6.0 - 2014-11-18
|
Release 2.6.0 - 2014-11-18
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -721,7 +721,7 @@ public class FSEditLog implements LogsPurgeable {
|
||||||
.setClientMachine(
|
.setClientMachine(
|
||||||
newNode.getFileUnderConstructionFeature().getClientMachine())
|
newNode.getFileUnderConstructionFeature().getClientMachine())
|
||||||
.setOverwrite(overwrite)
|
.setOverwrite(overwrite)
|
||||||
.setStoragePolicyId(newNode.getStoragePolicyID());
|
.setStoragePolicyId(newNode.getLocalStoragePolicyID());
|
||||||
|
|
||||||
AclFeature f = newNode.getAclFeature();
|
AclFeature f = newNode.getAclFeature();
|
||||||
if (f != null) {
|
if (f != null) {
|
||||||
|
|
|
@ -26,6 +26,7 @@ import java.util.*;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.hdfs.protocol.*;
|
import org.apache.hadoop.hdfs.protocol.*;
|
||||||
|
@ -1173,4 +1174,46 @@ public class TestBlockStoragePolicy {
|
||||||
cluster.shutdown();
|
cluster.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetFileStoragePolicyAfterRestartNN() throws Exception {
|
||||||
|
//HDFS8219
|
||||||
|
final MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf)
|
||||||
|
.numDataNodes(REPLICATION)
|
||||||
|
.storageTypes(
|
||||||
|
new StorageType[] {StorageType.DISK, StorageType.ARCHIVE})
|
||||||
|
.build();
|
||||||
|
cluster.waitActive();
|
||||||
|
final DistributedFileSystem fs = cluster.getFileSystem();
|
||||||
|
try {
|
||||||
|
final String file = "/testScheduleWithinSameNode/file";
|
||||||
|
Path dir = new Path("/testScheduleWithinSameNode");
|
||||||
|
fs.mkdirs(dir);
|
||||||
|
// 2. Set Dir policy
|
||||||
|
fs.setStoragePolicy(dir, "COLD");
|
||||||
|
// 3. Create file
|
||||||
|
final FSDataOutputStream out = fs.create(new Path(file));
|
||||||
|
out.writeChars("testScheduleWithinSameNode");
|
||||||
|
out.close();
|
||||||
|
// 4. Set Dir policy
|
||||||
|
fs.setStoragePolicy(dir, "HOT");
|
||||||
|
HdfsFileStatus status = fs.getClient().getFileInfo(file);
|
||||||
|
// 5. get file policy, it should be parent policy.
|
||||||
|
Assert
|
||||||
|
.assertTrue(
|
||||||
|
"File storage policy should be HOT",
|
||||||
|
status.getStoragePolicy() == HOT);
|
||||||
|
// 6. restart NameNode for reloading edits logs.
|
||||||
|
cluster.restartNameNode(true);
|
||||||
|
// 7. get file policy, it should be parent policy.
|
||||||
|
status = fs.getClient().getFileInfo(file);
|
||||||
|
Assert
|
||||||
|
.assertTrue(
|
||||||
|
"File storage policy should be HOT",
|
||||||
|
status.getStoragePolicy() == HOT);
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
cluster.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue