HDFS-15558: ViewDistributedFileSystem#recoverLease should call super.recoverLease when there are no mounts configured (#2275) Contributed by Uma Maheswara Rao G.
This commit is contained in:
parent
34fe74da0e
commit
ac7d4623ae
|
@ -266,6 +266,10 @@ public class ViewDistributedFileSystem extends DistributedFileSystem {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean recoverLease(final Path f) throws IOException {
|
public boolean recoverLease(final Path f) throws IOException {
|
||||||
|
if (this.vfs == null) {
|
||||||
|
return super.recoverLease(f);
|
||||||
|
}
|
||||||
|
|
||||||
ViewFileSystemOverloadScheme.MountPathInfo<FileSystem> mountPathInfo =
|
ViewFileSystemOverloadScheme.MountPathInfo<FileSystem> mountPathInfo =
|
||||||
this.vfs.getMountPathInfo(f, getConf());
|
this.vfs.getMountPathInfo(f, getConf());
|
||||||
checkDFS(mountPathInfo.getTargetFs(), "recoverLease");
|
checkDFS(mountPathInfo.getTargetFs(), "recoverLease");
|
||||||
|
@ -286,6 +290,9 @@ public class ViewDistributedFileSystem extends DistributedFileSystem {
|
||||||
@Override
|
@Override
|
||||||
public FSDataInputStream open(PathHandle fd, int bufferSize)
|
public FSDataInputStream open(PathHandle fd, int bufferSize)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
if (this.vfs == null) {
|
||||||
|
return super.open(fd, bufferSize);
|
||||||
|
}
|
||||||
return this.vfs.open(fd, bufferSize);
|
return this.vfs.open(fd, bufferSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -280,8 +280,22 @@ public class TestLeaseRecovery {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testLeaseRecoveryAndAppend() throws Exception {
|
public void testLeaseRecoveryAndAppend() throws Exception {
|
||||||
|
testLeaseRecoveryAndAppend(new Configuration());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recover the lease on a file and append file from another client with
|
||||||
|
* ViewDFS enabled.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testLeaseRecoveryAndAppendWithViewDFS() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
try{
|
conf.set("fs.hdfs.impl", ViewDistributedFileSystem.class.getName());
|
||||||
|
testLeaseRecoveryAndAppend(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void testLeaseRecoveryAndAppend(Configuration conf) throws Exception {
|
||||||
|
try {
|
||||||
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build();
|
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build();
|
||||||
Path file = new Path("/testLeaseRecovery");
|
Path file = new Path("/testLeaseRecovery");
|
||||||
DistributedFileSystem dfs = cluster.getFileSystem();
|
DistributedFileSystem dfs = cluster.getFileSystem();
|
||||||
|
|
|
@ -17,9 +17,13 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hadoop.hdfs;
|
package org.apache.hadoop.hdfs;
|
||||||
|
|
||||||
|
import org.apache.hadoop.conf.Configuration;
|
||||||
import org.apache.hadoop.fs.FileSystem;
|
import org.apache.hadoop.fs.FileSystem;
|
||||||
|
import org.apache.hadoop.fs.Path;
|
||||||
|
import org.apache.hadoop.fs.PathHandle;
|
||||||
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
||||||
import org.apache.hadoop.test.Whitebox;
|
import org.apache.hadoop.test.Whitebox;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
@ -44,4 +48,23 @@ public class TestViewDistributedFileSystem extends TestDistributedFileSystem{
|
||||||
data.set(null);
|
data.set(null);
|
||||||
super.testStatistics();
|
super.testStatistics();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOpenWithPathHandle() throws Exception {
|
||||||
|
Configuration conf = getTestConfiguration();
|
||||||
|
MiniDFSCluster cluster = null;
|
||||||
|
try {
|
||||||
|
cluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build();
|
||||||
|
FileSystem fileSys = cluster.getFileSystem();
|
||||||
|
Path openTestPath = new Path("/testOpen");
|
||||||
|
fileSys.create(openTestPath).close();
|
||||||
|
PathHandle pathHandle =
|
||||||
|
fileSys.getPathHandle(fileSys.getFileStatus(openTestPath));
|
||||||
|
fileSys.open(pathHandle, 1024).close();
|
||||||
|
} finally {
|
||||||
|
if (cluster != null) {
|
||||||
|
cluster.shutdown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue