[ 
https://issues.apache.org/jira/browse/HDFS-7342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14520401#comment-14520401
 ] 

Ravi Prakash commented on HDFS-7342:
------------------------------------

I found another\(?) instance in which the lease is not recovered. This is 
reproducible easily on a pseudo-distributed single node cluster
# Before you start it helps if you set. This is not necessary, but simply 
reduces how long you have to wait 
{code}
  public static final long LEASE_SOFTLIMIT_PERIOD = 30 * 1000;
  public static final long LEASE_HARDLIMIT_PERIOD = 2 * LEASE_SOFTLIMIT_PERIOD;
{code}
# Client starts to write a file. (could be less than 1 block, but it hflushed 
so some of the data has landed on the datanodes) (I'm copying the client code I 
am using. I generate a jar and run it using $ hadoop jar TestHadoop.jar)
# Client crashes. (I simulate this by kill -9 the $(hadoop jar TestHadoop.jar) 
process after it has printed "Wrote to the bufferedWriter"
# Shoot the datanode. (Since I ran on a pseudo-distributed cluster, there was 
only 1)

I believe the lease should be recovered and the block should be marked missing. 
However this is not happening. The lease is never recovered. I am going to 
check what happens when only the primary datanode is shot. {color:red}Please 
let me know if I shouldn't hijack this JIRA. By default I will{color}

{code:title=TestHadoop.java|borderStyle=solid}
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class TestHadoop {
  public static void main(String args[]) throws IOException, 
InterruptedException {
    Path path = new Path("/tmp/testHadoop");
    Configuration conf = new Configuration();
    FileSystem fs = FileSystem.get(conf);
    System.out.println("DefaultFS: " + conf.get("fs.defaultFS"));
    System.out.flush();
    FSDataOutputStream hdfsout = fs.create(path,true);
    BufferedWriter br=new BufferedWriter(new OutputStreamWriter(hdfsout));
    System.out.println("Created the bufferedWriter" );
    System.out.flush();
    br.write("Some string");
    br.flush();
    hdfsout.hflush();
    System.out.println("Wrote to the bufferedWriter" );
    System.out.flush();
    
    Thread.sleep(120000); //KILL THE PROCESS DURING THIS SLEEP
    br.close();
    System.out.println("Closed the bufferedWriter" );
    System.out.flush();
  }
}
{code}



> Lease Recovery doesn't happen some times
> ----------------------------------------
>
>                 Key: HDFS-7342
>                 URL: https://issues.apache.org/jira/browse/HDFS-7342
>             Project: Hadoop HDFS
>          Issue Type: Bug
>    Affects Versions: 2.0.0-alpha
>            Reporter: Ravi Prakash
>         Attachments: HDFS-7342.1.patch, HDFS-7342.2.patch, HDFS-7342.3.patch
>
>
> In some cases, LeaseManager tries to recover a lease, but is not able to. 
> HDFS-4882 describes a possibility of that. We should fix this



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to