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.