Skip to content

Commit

Permalink
HDFS-15558: ViewDistributedFileSystem#recoverLease should call super.…
Browse files Browse the repository at this point in the history
…recoverLease when there are no mounts configured (apache#2275) Contributed by Uma Maheswara Rao G.

(cherry picked from commit ac7d462)
Change-Id: Ia9c4880fa1567c2ea279dc90254e73a13a94c8c1
(cherry picked from commit 80dcf12)
  • Loading branch information
umamaheswararao authored and Uma Maheswara Rao Gangumalla committed Sep 14, 2020
1 parent e743b0a commit c1f4d4a
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,10 @@ public void setVerifyChecksum(final boolean verifyChecksum) {

@Override
public boolean recoverLease(final Path f) throws IOException {
if (this.vfs == null) {
return super.recoverLease(f);
}

ViewFileSystemOverloadScheme.MountPathInfo<FileSystem> mountPathInfo =
this.vfs.getMountPathInfo(f, getConf());
checkDFS(mountPathInfo.getTargetFs(), "recoverLease");
Expand All @@ -285,6 +289,9 @@ public FSDataInputStream open(final Path f, final int bufferSize)
@Override
public FSDataInputStream open(PathHandle fd, int bufferSize)
throws IOException {
if (this.vfs == null) {
return super.open(fd, bufferSize);
}
return this.vfs.open(fd, bufferSize);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,22 @@ public void testBlockRecoveryRetryAfterFailedRecovery() throws Exception {
*/
@Test
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();
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();
Path file = new Path("/testLeaseRecovery");
DistributedFileSystem dfs = cluster.getFileSystem();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,13 @@
*/
package org.apache.hadoop.hdfs;

import org.apache.hadoop.conf.Configuration;
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.mockito.internal.util.reflection.Whitebox;
import org.junit.Test;

import java.io.IOException;

Expand All @@ -44,4 +48,23 @@ public void testStatistics() throws IOException {
data.set(null);
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();
}
}
}
}

0 comments on commit c1f4d4a

Please sign in to comment.