From 6b22170beef28897fe05f8dd0235658c538e95c8 Mon Sep 17 00:00:00 2001 From: Konstantin V Shvachko Date: Sat, 24 Jan 2015 16:39:04 -0800 Subject: [PATCH] HDFS-7643. Test case to ensure lazy persist files cannot be truncated. (Contributed by Yi Liu) --- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../fsdataset/impl/TestLazyPersistFiles.java | 26 ++++++++++++++----- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index a48cbed69ca..47ead307577 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -494,6 +494,9 @@ Release 2.7.0 - UNRELEASED HDFS-7634. Disallow truncation of Lazy persist files. (Yi Liu via Arpit Agarwal) + HDFS-7643. Test case to ensure lazy persist files cannot be truncated. + (Yi Liu via Arpit Agarwal) + Release 2.6.1 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestLazyPersistFiles.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestLazyPersistFiles.java index ad2197a631b..84ac2a59bc6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestLazyPersistFiles.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/fsdataset/impl/TestLazyPersistFiles.java @@ -23,13 +23,10 @@ import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.hdfs.protocol.HdfsFileStatus; import org.apache.hadoop.hdfs.protocol.LocatedBlock; import org.apache.hadoop.hdfs.protocol.LocatedBlocks; -import org.apache.hadoop.hdfs.server.datanode.DatanodeUtil; -import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsVolumeSpi; import org.apache.hadoop.test.GenericTestUtils; import org.junit.Assert; import org.junit.Test; -import java.io.File; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; @@ -37,9 +34,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicBoolean; import java.util.ArrayList; import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; import static org.apache.hadoop.hdfs.DFSConfigKeys.*; import static org.apache.hadoop.hdfs.StorageType.DEFAULT; @@ -247,6 +241,26 @@ public class TestLazyPersistFiles extends LazyPersistTestCase { } } + /** + * Truncate to lazy persist file is denied. + * @throws IOException + */ + @Test + public void testTruncateIsDenied() throws IOException { + startUpCluster(true, -1); + final String METHOD_NAME = GenericTestUtils.getMethodName(); + Path path = new Path("/" + METHOD_NAME + ".dat"); + + makeTestFile(path, BLOCK_SIZE, true); + + try { + client.truncate(path.toString(), BLOCK_SIZE/2); + fail("Truncate to LazyPersist file did not fail as expected"); + } catch (Throwable t) { + LOG.info("Got expected exception ", t); + } + } + /** * If one or more replicas of a lazyPersist file are lost, then the file * must be discarded by the NN, instead of being kept around as a