Store doReconstructionLog will fail if oldlogfile.log is empty and won't load 
region
------------------------------------------------------------------------------------

                 Key: HBASE-2358
                 URL: https://issues.apache.org/jira/browse/HBASE-2358
             Project: Hadoop HBase
          Issue Type: Bug
          Components: regionserver
    Affects Versions: 0.20.3
         Environment: Any
            Reporter: Cosmin Lehene
            Assignee: Cosmin Lehene
             Fix For: 0.21.0


doReconstructionLog doesn't handle empty files correctly:
{code}
    FileStatus stat = this.fs.getFileStatus(reconstructionLog);
    if (stat.getLen() <= 0) {
      LOG.warn("Passed reconstruction log " + reconstructionLog +
        " is zero-length. Deleting existing file");
       fs.delete(reconstructionLog, false);
      return -1;
    }
{code}

Notice it actually compares the length of the array instead of the file length.

It should call getLen() and delete the file afterwards
{code}
   FileStatus stat = this.fs.getFileStatus(reconstructionLog);
    if (stat.getLen() <= 0) {
      LOG.warn("Passed reconstruction log " + reconstructionLog +
        " is zero-length. Deleting existing file");
       fs.delete(reconstructionLog, false);
      return -1;
    }
{code}

Also. This is a situation that shouldn't happen as an empty oldlogfile.log 
should be deleted when HMaster does the split in HLog.splitLog().
I couldn't figure what would make it leave it there as I also see in the logs 
that other empty logs are deleted. This might expose a thornier situation.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to