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.