diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java index be5ffea..6c2dfd3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java @@ -386,6 +386,25 @@ public class BackupInfo implements Comparable { } @Override + public int hashCode() { + int hash = 33 * type.hashCode() + backupId != null ? backupId.hashCode() : 0; + if (targetRootDir != null) { + hash = 33 * hash + targetRootDir.hashCode(); + } + hash = 33 * hash + state.hashCode(); + hash = 33 * hash + phase.hashCode(); + hash = 33 * hash + (int)(startTs ^ (startTs >>> 32)); + hash = 33 * hash + (int)(endTs ^ (endTs >>> 32)); + hash = 33 * hash + (int)(totalBytesCopied ^ (totalBytesCopied >>> 32)); + if (hlogTargetDir != null) { + hash = 33 * hash + hlogTargetDir.hashCode(); + } + if (jobId != null) { + hash = 33 * hash + jobId.hashCode(); + } + return hash; + } + @Override public boolean equals(Object obj) { if (obj instanceof BackupInfo) { BackupInfo other = (BackupInfo) obj; @@ -496,8 +515,8 @@ public class BackupInfo implements Comparable { @Override public int compareTo(BackupInfo o) { - Long thisTS = new Long(this.getBackupId().substring(this.getBackupId().lastIndexOf("_") + 1)); - Long otherTS = new Long(o.getBackupId().substring(o.getBackupId().lastIndexOf("_") + 1)); + Long thisTS = Long.valueOf(this.getBackupId().substring(this.getBackupId().lastIndexOf("_") + 1)); + Long otherTS = Long.valueOf(o.getBackupId().substring(o.getBackupId().lastIndexOf("_") + 1)); return thisTS.compareTo(otherTS); } diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupStatus.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupStatus.java index c82e05a..4b030fd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupStatus.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/BackupStatus.java @@ -39,7 +39,7 @@ public class BackupStatus implements Serializable { private static final long serialVersionUID = -5968397963548535982L; // table name for backup - private TableName table; + private transient TableName table; // target directory of the backup image for this table private String targetDir; diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java index 3686284..b2b4e78 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java @@ -361,8 +361,8 @@ public final class BackupCommands { System.err.println("No backup id was specified, " + "will retrieve the most recent (ongoing) sessions"); } - String[] args = cmdline.getArgs(); - if (args.length > 2) { + String[] args = cmdline == null ? null : cmdline.getArgs(); + if (args != null && args.length > 2) { System.err.println("ERROR: wrong number of arguments: " + args.length); printUsage(); throw new IOException(INCORRECT_USAGE); @@ -438,8 +438,6 @@ public final class BackupCommands { if (cmdline == null || cmdline.getArgs() == null || cmdline.getArgs().length < 2) { System.out.println("No backup id(s) was specified, will use the most recent one"); } - String[] args = cmdline.getArgs(); - String backupId = args == null || args.length == 0 ? null : args[1]; Configuration conf = getConf() != null ? getConf() : HBaseConfiguration.create(); try (final Connection conn = ConnectionFactory.createConnection(conf); HBaseBackupAdmin admin = new HBaseBackupAdmin(conn);) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java index d10713d..2b66454 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java @@ -228,13 +228,31 @@ public class BackupManifest { String name1 = thisBackupId.substring(0, index1); String name2 = otherBackupId.substring(0, index2); if(name1.equals(name2)) { - Long thisTS = new Long(thisBackupId.substring(index1 + 1)); - Long otherTS = new Long(otherBackupId.substring(index2 + 1)); + Long thisTS = Long.valueOf(thisBackupId.substring(index1 + 1)); + Long otherTS = Long.valueOf(otherBackupId.substring(index2 + 1)); return thisTS.compareTo(otherTS); } else { return name1.compareTo(name2); } } + @Override + public boolean equals(Object obj) { + if (obj instanceof BackupImage) { + return this.compareTo((BackupImage)obj) == 0; + } + return false; + } + @Override + public int hashCode() { + int hash = 33 * this.getBackupId().hashCode() + type.hashCode(); + hash = 33 * hash + rootDir.hashCode(); + hash = 33 * hash + Long.valueOf(startTs).hashCode(); + hash = 33 * hash + Long.valueOf(completeTs).hashCode(); + for (TableName table : tableList) { + hash = 33 * hash + table.hashCode(); + } + return hash; + } } // manifest version @@ -526,10 +544,11 @@ public class BackupManifest { BackupProtos.TableServerTimestamp.newBuilder(); tstBuilder.setTable(ProtobufUtil.toProtoTableName(key)); - for (String s : value.keySet()) { + for (Map.Entry entry2 : value.entrySet()) { + String s = entry2.getKey(); BackupProtos.ServerTimestamp.Builder stBuilder = BackupProtos.ServerTimestamp.newBuilder(); stBuilder.setServer(s); - stBuilder.setTimestamp(value.get(s)); + stBuilder.setTimestamp(entry2.getValue()); tstBuilder.addServerTimestamp(stBuilder.build()); } builder.addTstMap(tstBuilder.build()); diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/util/RestoreServerUtil.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/util/RestoreServerUtil.java index c317844..a0afb3d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/util/RestoreServerUtil.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/backup/util/RestoreServerUtil.java @@ -715,15 +715,17 @@ public class RestoreServerUtil { } long startTime = EnvironmentEdgeManager.currentTime(); while (!admin.isTableAvailable(targetTableName, keys)) { - Thread.sleep(100); + try { + Thread.sleep(100); + } catch (InterruptedException ie) { + Thread.currentThread().interrupt(); + } if (EnvironmentEdgeManager.currentTime() - startTime > TABLE_AVAILABILITY_WAIT_TIME) { throw new IOException("Time out "+TABLE_AVAILABILITY_WAIT_TIME+ "ms expired, table " + targetTableName + " is still not available"); } } } - } catch (Exception e) { - throw new IOException(e); } }