HBASE-21219 Hbase incremental backup fails with null pointer exception

Signed-off-by: tedyu <yuzhihong@gmail.com>
This commit is contained in:
Vladimir Rodionov 2018-09-24 17:28:26 -07:00 committed by tedyu
parent e42741e085
commit 5da0c2010b
1 changed files with 15 additions and 4 deletions

View File

@ -296,9 +296,20 @@ public class IncrementalBackupManager extends BackupManager {
currentLogFile = log.getPath().toString();
resultLogFiles.add(currentLogFile);
currentLogTS = BackupUtils.getCreationTime(log.getPath());
// newestTimestamps is up-to-date with the current list of hosts
// so newestTimestamps.get(host) will not be null.
if (currentLogTS > newestTimestamps.get(host)) {
// If newestTimestamps.get(host) is null, means that
// either RS (host) has been restarted recently with different port number
// or RS is down (was decommisioned). In any case, we treat this
// log file as eligible for inclusion into incremental backup log list
Long ts = newestTimestamps.get(host);
if (ts == null) {
LOG.warn("ORPHAN log found: " + log + " host=" + host);
LOG.debug("Known hosts (from newestTimestamps):");
for (String s: newestTimestamps.keySet()) {
LOG.debug(s);
}
}
if (ts == null || currentLogTS > ts) {
newestLogs.add(currentLogFile);
}
}
@ -343,7 +354,7 @@ public class IncrementalBackupManager extends BackupManager {
// Even if these logs belong to a obsolete region server, we still need
// to include they to avoid loss of edits for backup.
Long newTimestamp = newestTimestamps.get(host);
if (newTimestamp != null && currentLogTS > newTimestamp) {
if (newTimestamp == null || currentLogTS > newTimestamp) {
newestLogs.add(currentLogFile);
}
}