HDFS-14519. NameQuota is not update after concat operation, so namequota is wrong. Contributed by Ranith Sardar.
This commit is contained in:
parent
4c1a1287bc
commit
049940e77b
|
@ -214,6 +214,7 @@ class FSDirConcatOp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
deltas.addNameSpace(-srcList.length);
|
||||||
return deltas;
|
return deltas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ import java.util.List;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.fs.ContentSummary;
|
||||||
import org.apache.hadoop.fs.DirectoryListingStartAfterNotFoundException;
|
import org.apache.hadoop.fs.DirectoryListingStartAfterNotFoundException;
|
||||||
import org.apache.hadoop.fs.FSDataOutputStream;
|
import org.apache.hadoop.fs.FSDataOutputStream;
|
||||||
import org.apache.hadoop.fs.FileStatus;
|
import org.apache.hadoop.fs.FileStatus;
|
||||||
|
@ -45,6 +46,7 @@ import org.apache.hadoop.fs.Options;
|
||||||
import org.apache.hadoop.fs.Options.Rename;
|
import org.apache.hadoop.fs.Options.Rename;
|
||||||
import org.apache.hadoop.fs.Path;
|
import org.apache.hadoop.fs.Path;
|
||||||
import org.apache.hadoop.fs.PathIsNotDirectoryException;
|
import org.apache.hadoop.fs.PathIsNotDirectoryException;
|
||||||
|
import org.apache.hadoop.fs.QuotaUsage;
|
||||||
import org.apache.hadoop.fs.RemoteIterator;
|
import org.apache.hadoop.fs.RemoteIterator;
|
||||||
import org.apache.hadoop.fs.XAttr;
|
import org.apache.hadoop.fs.XAttr;
|
||||||
import org.apache.hadoop.fs.permission.FsAction;
|
import org.apache.hadoop.fs.permission.FsAction;
|
||||||
|
@ -1232,4 +1234,35 @@ public class TestINodeFile {
|
||||||
toBeCleared.clearBlocks();
|
toBeCleared.clearBlocks();
|
||||||
assertTrue(toBeCleared.getBlocks().length == 0);
|
assertTrue(toBeCleared.getBlocks().length == 0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@Test
|
||||||
|
public void testConcat() throws IOException {
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
try (MiniDFSCluster cluster = new MiniDFSCluster.Builder(conf).build()) {
|
||||||
|
cluster.waitActive();
|
||||||
|
DistributedFileSystem dfs = cluster.getFileSystem();
|
||||||
|
String dir = "/testConcat";
|
||||||
|
dfs.mkdirs(new Path(dir), FsPermission.getDirDefault());
|
||||||
|
dfs.setQuota(new Path(dir), 100L, HdfsConstants.QUOTA_DONT_SET);
|
||||||
|
|
||||||
|
// Create 4 files
|
||||||
|
Path trg = new Path(dir + "/file");
|
||||||
|
DFSTestUtil.createFile(dfs, trg, 512, (short) 1, 0);
|
||||||
|
Path[] srcs = new Path[4];
|
||||||
|
for (int i = 0; i < 4; i++) {
|
||||||
|
srcs[i] = new Path(dir + "/file" + i);
|
||||||
|
DFSTestUtil.createFile(dfs, srcs[i], 512, (short) 1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Concat file1, file2, file3 to file0
|
||||||
|
dfs.concat(trg, srcs);
|
||||||
|
|
||||||
|
// Check the file and directory count and consumed space
|
||||||
|
ContentSummary cs = dfs.getContentSummary(new Path(dir));
|
||||||
|
QuotaUsage qu = dfs.getQuotaUsage(new Path(dir));
|
||||||
|
|
||||||
|
Assert.assertEquals(cs.getFileCount() + cs.getDirectoryCount(),
|
||||||
|
qu.getFileAndDirectoryCount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue