HBASE-19765 Fixed Checkstyle errors in hbase-backup
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c2236b77 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c2236b77 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c2236b77 Branch: refs/heads/master Commit: c2236b77cb04cf7b92576113a7c9b87b244ff2e4 Parents: f1502a3 Author: Jan Hentschel <jan.hentsc...@ultratendency.com> Authored: Sat Jan 27 02:07:52 2018 +0100 Committer: Jan Hentschel <jan.hentsc...@ultratendency.com> Committed: Sun Jan 28 13:45:45 2018 +0100 ---------------------------------------------------------------------- .../hbase/backup/BackupClientFactory.java | 9 +- .../hadoop/hbase/backup/BackupCopyJob.java | 3 +- .../hadoop/hbase/backup/BackupHFileCleaner.java | 36 ++-- .../apache/hadoop/hbase/backup/BackupInfo.java | 27 ++- .../hadoop/hbase/backup/BackupMergeJob.java | 6 +- .../hbase/backup/BackupRestoreConstants.java | 124 ++++++----- .../hbase/backup/BackupRestoreFactory.java | 3 +- .../hadoop/hbase/backup/BackupTableInfo.java | 5 +- .../hadoop/hbase/backup/HBackupFileSystem.java | 6 +- .../apache/hadoop/hbase/backup/LogUtils.java | 3 +- .../hadoop/hbase/backup/RestoreDriver.java | 22 +- .../apache/hadoop/hbase/backup/RestoreJob.java | 3 +- .../hadoop/hbase/backup/RestoreRequest.java | 4 +- .../hbase/backup/impl/BackupAdminImpl.java | 158 ++++++-------- .../hbase/backup/impl/BackupCommands.java | 205 ++++++++++--------- .../hadoop/hbase/backup/impl/BackupManager.java | 28 +-- .../hbase/backup/impl/BackupManifest.java | 44 ++-- .../hbase/backup/impl/BackupSystemTable.java | 146 ++++++------- .../backup/impl/FullTableBackupClient.java | 26 ++- .../backup/impl/IncrementalBackupManager.java | 37 ++-- .../impl/IncrementalTableBackupClient.java | 47 ++--- .../hbase/backup/impl/RestoreTablesClient.java | 37 ++-- .../hbase/backup/impl/TableBackupClient.java | 35 ++-- .../mapreduce/MapReduceBackupMergeJob.java | 43 ++-- .../mapreduce/MapReduceHFileSplitterJob.java | 2 +- .../backup/mapreduce/MapReduceRestoreJob.java | 23 +-- .../hbase/backup/master/BackupLogCleaner.java | 11 +- .../master/LogRollMasterProcedureManager.java | 20 +- .../regionserver/LogRollBackupSubprocedure.java | 13 +- .../LogRollBackupSubprocedurePool.java | 8 +- .../LogRollRegionServerProcedureManager.java | 7 +- .../hadoop/hbase/backup/util/BackupUtils.java | 108 +++++----- .../hadoop/hbase/backup/util/RestoreTool.java | 49 ++--- .../hadoop/hbase/backup/TestBackupBase.java | 54 +++-- .../hbase/backup/TestBackupBoundaryTests.java | 19 +- .../hadoop/hbase/backup/TestBackupDelete.java | 12 +- .../hbase/backup/TestBackupDeleteRestore.java | 5 +- .../backup/TestBackupDeleteWithFailures.java | 47 ++--- .../hadoop/hbase/backup/TestBackupDescribe.java | 10 +- .../hbase/backup/TestBackupHFileCleaner.java | 12 +- .../hbase/backup/TestBackupShowHistory.java | 35 ++-- .../hbase/backup/TestBackupStatusProgress.java | 7 +- .../hbase/backup/TestBackupSystemTable.java | 16 +- .../hadoop/hbase/backup/TestFullBackupSet.java | 10 +- .../hadoop/hbase/backup/TestFullRestore.java | 53 +++-- .../TestIncrementalBackupMergeWithFailures.java | 33 +-- .../TestIncrementalBackupWithBulkLoad.java | 20 +- .../hadoop/hbase/backup/TestRemoteBackup.java | 43 ++-- .../hadoop/hbase/backup/TestRemoteRestore.java | 9 +- .../backup/TestRepairAfterFailedDelete.java | 5 +- .../hbase/backup/TestRestoreBoundaryTests.java | 9 +- .../hbase/backup/TestSystemTableSnapshot.java | 8 +- 52 files changed, 766 insertions(+), 939 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupClientFactory.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupClientFactory.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupClientFactory.java index 68e5c11..4c96229 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupClientFactory.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupClientFactory.java @@ -28,11 +28,12 @@ import org.apache.hadoop.hbase.client.Connection; import org.apache.yetus.audience.InterfaceAudience; @InterfaceAudience.Private -public class BackupClientFactory { +public final class BackupClientFactory { + private BackupClientFactory() { + } - public static TableBackupClient create (Connection conn, String backupId, BackupRequest request) - throws IOException - { + public static TableBackupClient create(Connection conn, String backupId, BackupRequest request) + throws IOException { Configuration conf = conn.getConfiguration(); try { String clsName = conf.get(TableBackupClient.BACKUP_CLIENT_IMPL_CLASS); http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupCopyJob.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupCopyJob.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupCopyJob.java index 3385f1d..f5e2137 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupCopyJob.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupCopyJob.java @@ -32,7 +32,6 @@ import org.apache.yetus.audience.InterfaceAudience; */ @InterfaceAudience.Private public interface BackupCopyJob extends Configurable { - /** * Copy backup data to destination * @param backupInfo context object @@ -49,7 +48,7 @@ public interface BackupCopyJob extends Configurable { /** * Cancel copy job * @param jobHandler backup copy job handler - * @throws IOException + * @throws IOException if cancelling the jobs fails */ void cancel(String jobHandler) throws IOException; } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupHFileCleaner.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupHFileCleaner.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupHFileCleaner.java index da4f56e..68e6b43 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupHFileCleaner.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupHFileCleaner.java @@ -31,16 +31,15 @@ import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.HBaseInterfaceAudience; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.backup.impl.BackupSystemTable; -import org.apache.yetus.audience.InterfaceAudience; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.master.cleaner.BaseHFileCleanerDelegate; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting; -import org.apache.hbase.thirdparty.com.google.common.base.Predicate; import org.apache.hbase.thirdparty.com.google.common.collect.Iterables; /** @@ -61,9 +60,12 @@ public class BackupHFileCleaner extends BaseHFileCleanerDelegate implements Abor private List<TableName> fullyBackedUpTables = null; private Set<String> getFilenameFromBulkLoad(Map<byte[], List<Path>>[] maps) { - Set<String> filenames = new HashSet<String>(); + Set<String> filenames = new HashSet<>(); for (Map<byte[], List<Path>> map : maps) { - if (map == null) continue; + if (map == null) { + continue; + } + for (List<Path> paths : map.values()) { for (Path p : paths) { filenames.add(p.getName()); @@ -98,7 +100,10 @@ public class BackupHFileCleaner extends BaseHFileCleanerDelegate implements Abor // obtain the Set of TableName's which have been fully backed up // so that we filter BulkLoad to be returned from server if (checkForFullyBackedUpTables) { - if (connection == null) return files; + if (connection == null) { + return files; + } + try (BackupSystemTable tbl = new BackupSystemTable(connection)) { fullyBackedUpTables = tbl.getTablesForBackupType(BackupType.FULL); } catch (IOException ioe) { @@ -114,17 +119,14 @@ public class BackupHFileCleaner extends BaseHFileCleanerDelegate implements Abor LOG.error("Failed to read hfile references, skipping checking deletable files", ioe); return Collections.emptyList(); } - Iterable<FileStatus> deletables = Iterables.filter(files, new Predicate<FileStatus>() { - @Override - public boolean apply(FileStatus file) { - // If the file is recent, be conservative and wait for one more scan of backup:system table - if (file.getModificationTime() > secondPrevReadFromBackupTbl) { - return false; - } - String hfile = file.getPath().getName(); - boolean foundHFileRef = hfileRefs.contains(hfile); - return !foundHFileRef; + Iterable<FileStatus> deletables = Iterables.filter(files, file -> { + // If the file is recent, be conservative and wait for one more scan of backup:system table + if (file.getModificationTime() > secondPrevReadFromBackupTbl) { + return false; } + String hfile = file.getPath().getName(); + boolean foundHFileRef = hfileRefs.contains(hfile); + return !foundHFileRef; }); return deletables; } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java index f6935f8..6c304ca 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupInfo.java @@ -32,14 +32,14 @@ import java.util.Set; import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.backup.util.BackupUtils; +import org.apache.hadoop.hbase.util.Bytes; import org.apache.yetus.audience.InterfaceAudience; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos; import org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.BackupInfo.Builder; -import org.apache.hadoop.hbase.util.Bytes; - /** * An object to encapsulate the information for each backup session @@ -48,20 +48,19 @@ import org.apache.hadoop.hbase.util.Bytes; public class BackupInfo implements Comparable<BackupInfo> { private static final Logger LOG = LoggerFactory.getLogger(BackupInfo.class); - public static interface Filter { - + public interface Filter { /** * Filter interface * @param info backup info * @return true if info passes filter, false otherwise */ - public boolean apply(BackupInfo info); + boolean apply(BackupInfo info); } /** * Backup session states */ - public static enum BackupState { + public enum BackupState { RUNNING, COMPLETE, FAILED, ANY } @@ -69,7 +68,7 @@ public class BackupInfo implements Comparable<BackupInfo> { * BackupPhase - phases of an ACTIVE backup session (running), when state of a backup session is * BackupState.RUNNING */ - public static enum BackupPhase { + public enum BackupPhase { REQUEST, SNAPSHOT, PREPARE_INCREMENTAL, SNAPSHOTCOPY, INCREMENTAL_COPY, STORE_MANIFEST } @@ -155,7 +154,7 @@ public class BackupInfo implements Comparable<BackupInfo> { private long bandwidth = -1; public BackupInfo() { - backupTableInfoMap = new HashMap<TableName, BackupTableInfo>(); + backupTableInfoMap = new HashMap<>(); } public BackupInfo(String backupId, BackupType type, TableName[] tables, String targetRootDir) { @@ -196,7 +195,7 @@ public class BackupInfo implements Comparable<BackupInfo> { } public void setTableSetTimestampMap(HashMap<TableName, - HashMap<String, Long>> tableSetTimestampMap) { + HashMap<String, Long>> tableSetTimestampMap) { this.tableSetTimestampMap = tableSetTimestampMap; } @@ -216,7 +215,6 @@ public class BackupInfo implements Comparable<BackupInfo> { * Set progress (0-100%) * @param p progress value */ - public void setProgress(int p) { this.progress = p; } @@ -297,7 +295,7 @@ public class BackupInfo implements Comparable<BackupInfo> { } public List<String> getSnapshotNames() { - List<String> snapshotNames = new ArrayList<String>(); + List<String> snapshotNames = new ArrayList<>(); for (BackupTableInfo backupStatus : this.backupTableInfoMap.values()) { snapshotNames.add(backupStatus.getSnapshotName()); } @@ -309,7 +307,7 @@ public class BackupInfo implements Comparable<BackupInfo> { } public List<TableName> getTableNames() { - return new ArrayList<TableName>(backupTableInfoMap.keySet()); + return new ArrayList<>(backupTableInfoMap.keySet()); } public void addTables(TableName[] tables) { @@ -355,8 +353,8 @@ public class BackupInfo implements Comparable<BackupInfo> { * Set the new region server log timestamps after distributed log roll * @param newTableSetTimestampMap table timestamp map */ - public void - setIncrTimestampMap(HashMap<TableName, HashMap<String, Long>> newTableSetTimestampMap) { + public void setIncrTimestampMap(HashMap<TableName, + HashMap<String, Long>> newTableSetTimestampMap) { this.tableSetTimestampMap = newTableSetTimestampMap; } @@ -546,5 +544,4 @@ public class BackupInfo implements Comparable<BackupInfo> { Long otherTS = Long.valueOf(o.getBackupId().substring(o.getBackupId().lastIndexOf("_") + 1)); return thisTS.compareTo(otherTS); } - } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupMergeJob.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupMergeJob.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupMergeJob.java index dc2e85b..de91fa1 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupMergeJob.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupMergeJob.java @@ -30,11 +30,11 @@ import org.apache.yetus.audience.InterfaceAudience; @InterfaceAudience.Private public interface BackupMergeJob extends Configurable { - /** - * Run backup merge operation + * Run backup merge operation. + * * @param backupIds backup image ids - * @throws IOException + * @throws IOException if the backup merge operation fails */ void run(String[] backupIds) throws IOException; } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java index 3ea8c56..eaeef22 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreConstants.java @@ -29,102 +29,96 @@ public interface BackupRestoreConstants { /* * Backup/Restore constants */ - public final static String BACKUP_SYSTEM_TABLE_NAME_KEY = "hbase.backup.system.table.name"; - public final static String BACKUP_SYSTEM_TABLE_NAME_DEFAULT = "backup:system"; + String BACKUP_SYSTEM_TABLE_NAME_KEY = "hbase.backup.system.table.name"; + String BACKUP_SYSTEM_TABLE_NAME_DEFAULT = "backup:system"; - public final static String BACKUP_SYSTEM_TTL_KEY = "hbase.backup.system.ttl"; + String BACKUP_SYSTEM_TTL_KEY = "hbase.backup.system.ttl"; - public final static int BACKUP_SYSTEM_TTL_DEFAULT = HConstants.FOREVER; - public final static String BACKUP_ENABLE_KEY = "hbase.backup.enable"; - public final static boolean BACKUP_ENABLE_DEFAULT = false; + int BACKUP_SYSTEM_TTL_DEFAULT = HConstants.FOREVER; + String BACKUP_ENABLE_KEY = "hbase.backup.enable"; + boolean BACKUP_ENABLE_DEFAULT = false; + String BACKUP_MAX_ATTEMPTS_KEY = "hbase.backup.attempts.max"; + int DEFAULT_BACKUP_MAX_ATTEMPTS = 10; - public static final String BACKUP_MAX_ATTEMPTS_KEY = "hbase.backup.attempts.max"; - public static final int DEFAULT_BACKUP_MAX_ATTEMPTS = 10; - - public static final String BACKUP_ATTEMPTS_PAUSE_MS_KEY = "hbase.backup.attempts.pause.ms"; - public static final int DEFAULT_BACKUP_ATTEMPTS_PAUSE_MS = 10000; + String BACKUP_ATTEMPTS_PAUSE_MS_KEY = "hbase.backup.attempts.pause.ms"; + int DEFAULT_BACKUP_ATTEMPTS_PAUSE_MS = 10000; /* * Drivers option list */ - public static final String OPTION_OVERWRITE = "o"; - public static final String OPTION_OVERWRITE_DESC = - "Overwrite data if any of the restore target tables exists"; + String OPTION_OVERWRITE = "o"; + String OPTION_OVERWRITE_DESC = "Overwrite data if any of the restore target tables exists"; - public static final String OPTION_CHECK = "c"; - public static final String OPTION_CHECK_DESC = + String OPTION_CHECK = "c"; + String OPTION_CHECK_DESC = "Check restore sequence and dependencies only (does not execute the command)"; - public static final String OPTION_SET = "s"; - public static final String OPTION_SET_DESC = "Backup set name"; - public static final String OPTION_SET_RESTORE_DESC = - "Backup set to restore, mutually exclusive with -t (table list)"; - public static final String OPTION_SET_BACKUP_DESC = - "Backup set to backup, mutually exclusive with -t (table list)"; - public static final String OPTION_DEBUG = "d"; - public static final String OPTION_DEBUG_DESC = "Enable debug loggings"; - - public static final String OPTION_TABLE = "t"; - public static final String OPTION_TABLE_DESC = "Table name. If specified, only backup images," + String OPTION_SET = "s"; + String OPTION_SET_DESC = "Backup set name"; + String OPTION_SET_RESTORE_DESC = "Backup set to restore, mutually exclusive with -t (table list)"; + String OPTION_SET_BACKUP_DESC = "Backup set to backup, mutually exclusive with -t (table list)"; + String OPTION_DEBUG = "d"; + String OPTION_DEBUG_DESC = "Enable debug loggings"; + + String OPTION_TABLE = "t"; + String OPTION_TABLE_DESC = "Table name. If specified, only backup images," + " which contain this table will be listed."; - public static final String OPTION_TABLE_LIST = "l"; - public static final String OPTION_TABLE_LIST_DESC = "Table name list, comma-separated."; + String OPTION_TABLE_LIST = "l"; + String OPTION_TABLE_LIST_DESC = "Table name list, comma-separated."; - public static final String OPTION_BANDWIDTH = "b"; - public static final String OPTION_BANDWIDTH_DESC = "Bandwidth per task (MapReduce task) in MB/s"; + String OPTION_BANDWIDTH = "b"; + String OPTION_BANDWIDTH_DESC = "Bandwidth per task (MapReduce task) in MB/s"; - public static final String OPTION_WORKERS = "w"; - public static final String OPTION_WORKERS_DESC = "Number of parallel MapReduce tasks to execute"; + String OPTION_WORKERS = "w"; + String OPTION_WORKERS_DESC = "Number of parallel MapReduce tasks to execute"; - public static final String OPTION_RECORD_NUMBER = "n"; - public static final String OPTION_RECORD_NUMBER_DESC = - "Number of records of backup history. Default: 10"; + String OPTION_RECORD_NUMBER = "n"; + String OPTION_RECORD_NUMBER_DESC = "Number of records of backup history. Default: 10"; - public static final String OPTION_PATH = "p"; - public static final String OPTION_PATH_DESC = "Backup destination root directory path"; + String OPTION_PATH = "p"; + String OPTION_PATH_DESC = "Backup destination root directory path"; - public static final String OPTION_TABLE_MAPPING = "m"; - public static final String OPTION_TABLE_MAPPING_DESC = + String OPTION_TABLE_MAPPING = "m"; + String OPTION_TABLE_MAPPING_DESC = "A comma separated list of target tables. " + "If specified, each table in <tables> must have a mapping"; - public static final String OPTION_YARN_QUEUE_NAME = "q"; - public static final String OPTION_YARN_QUEUE_NAME_DESC = "Yarn queue name to run backup create command on"; - public static final String OPTION_YARN_QUEUE_NAME_RESTORE_DESC = "Yarn queue name to run backup restore command on"; - - public final static String JOB_NAME_CONF_KEY = "mapreduce.job.name"; - - public static final String BACKUP_CONFIG_STRING = BackupRestoreConstants.BACKUP_ENABLE_KEY + "=true\n" - + "hbase.master.logcleaner.plugins=" - +"YOUR_PLUGINS,org.apache.hadoop.hbase.backup.master.BackupLogCleaner\n" - + "hbase.procedure.master.classes=YOUR_CLASSES," - +"org.apache.hadoop.hbase.backup.master.LogRollMasterProcedureManager\n" - + "hbase.procedure.regionserver.classes=YOUR_CLASSES," - + "org.apache.hadoop.hbase.backup.regionserver.LogRollRegionServerProcedureManager\n" - + "hbase.coprocessor.region.classes=YOUR_CLASSES," - + "org.apache.hadoop.hbase.backup.BackupObserver\n" - + "and restart the cluster\n"; - public static final String ENABLE_BACKUP = "Backup is not enabled. To enable backup, "+ + String OPTION_YARN_QUEUE_NAME = "q"; + String OPTION_YARN_QUEUE_NAME_DESC = "Yarn queue name to run backup create command on"; + String OPTION_YARN_QUEUE_NAME_RESTORE_DESC = "Yarn queue name to run backup restore command on"; + + String JOB_NAME_CONF_KEY = "mapreduce.job.name"; + + String BACKUP_CONFIG_STRING = BackupRestoreConstants.BACKUP_ENABLE_KEY + + "=true\n" + + "hbase.master.logcleaner.plugins=" + +"YOUR_PLUGINS,org.apache.hadoop.hbase.backup.master.BackupLogCleaner\n" + + "hbase.procedure.master.classes=YOUR_CLASSES," + +"org.apache.hadoop.hbase.backup.master.LogRollMasterProcedureManager\n" + + "hbase.procedure.regionserver.classes=YOUR_CLASSES," + + "org.apache.hadoop.hbase.backup.regionserver.LogRollRegionServerProcedureManager\n" + + "hbase.coprocessor.region.classes=YOUR_CLASSES," + + "org.apache.hadoop.hbase.backup.BackupObserver\n" + + "and restart the cluster\n"; + String ENABLE_BACKUP = "Backup is not enabled. To enable backup, "+ "in hbase-site.xml, set:\n " + BACKUP_CONFIG_STRING; - public static final String VERIFY_BACKUP = "Please make sure that backup is enabled on the cluster. To enable backup, "+ - "in hbase-site.xml, set:\n " - + BACKUP_CONFIG_STRING; + String VERIFY_BACKUP = "Please make sure that backup is enabled on the cluster. To enable " + + "backup, in hbase-site.xml, set:\n " + BACKUP_CONFIG_STRING; /* * Delimiter in table name list in restore command */ - public static final String TABLENAME_DELIMITER_IN_COMMAND = ","; + String TABLENAME_DELIMITER_IN_COMMAND = ","; - public static final String CONF_STAGING_ROOT = "snapshot.export.staging.root"; + String CONF_STAGING_ROOT = "snapshot.export.staging.root"; - public static final String BACKUPID_PREFIX = "backup_"; + String BACKUPID_PREFIX = "backup_"; - public static enum BackupCommand { + enum BackupCommand { CREATE, CANCEL, DELETE, DESCRIBE, HISTORY, STATUS, CONVERT, MERGE, STOP, SHOW, HELP, PROGRESS, SET, SET_ADD, SET_REMOVE, SET_DELETE, SET_DESCRIBE, SET_LIST, REPAIR } - } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreFactory.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreFactory.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreFactory.java index 9612ebe..b1bc532 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreFactory.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupRestoreFactory.java @@ -21,8 +21,8 @@ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.backup.mapreduce.MapReduceBackupCopyJob; import org.apache.hadoop.hbase.backup.mapreduce.MapReduceBackupMergeJob; import org.apache.hadoop.hbase.backup.mapreduce.MapReduceRestoreJob; -import org.apache.yetus.audience.InterfaceAudience; import org.apache.hadoop.util.ReflectionUtils; +import org.apache.yetus.audience.InterfaceAudience; /** * Factory implementation for backup/restore related jobs @@ -30,7 +30,6 @@ import org.apache.hadoop.util.ReflectionUtils; */ @InterfaceAudience.Private public final class BackupRestoreFactory { - public final static String HBASE_INCR_RESTORE_IMPL_CLASS = "hbase.incremental.restore.class"; public final static String HBASE_BACKUP_COPY_IMPL_CLASS = "hbase.backup.copy.class"; public final static String HBASE_BACKUP_MERGE_IMPL_CLASS = "hbase.backup.merge.class"; http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupTableInfo.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupTableInfo.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupTableInfo.java index 5f221a5..50abcc8 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupTableInfo.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/BackupTableInfo.java @@ -30,7 +30,6 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos; @InterfaceAudience.Private public class BackupTableInfo { - /* * Table name for backup */ @@ -39,11 +38,9 @@ public class BackupTableInfo { /* * Snapshot name for offline/online snapshot */ - private String snapshotName = null; public BackupTableInfo() { - } public BackupTableInfo(TableName table, String targetRootDir, String backupId) { @@ -76,7 +73,7 @@ public class BackupTableInfo { if (snapshotName != null) { builder.setSnapshotName(snapshotName); } - builder.setTableName(org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toProtoTableName(table)); + builder.setTableName(ProtobufUtil.toProtoTableName(table)); return builder.build(); } } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/HBackupFileSystem.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/HBackupFileSystem.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/HBackupFileSystem.java index 68dba54..ff65a64 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/HBackupFileSystem.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/HBackupFileSystem.java @@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory; * the on-disk Backup Image data. */ @InterfaceAudience.Private -public class HBackupFileSystem { +public final class HBackupFileSystem { public static final Logger LOG = LoggerFactory.getLogger(HBackupFileSystem.class); /** @@ -106,10 +106,8 @@ public class HBackupFileSystem { // Move manifest file to other place private static Path getManifestPath(Configuration conf, Path backupRootPath, String backupId) throws IOException { - Path manifestPath = null; - FileSystem fs = backupRootPath.getFileSystem(conf); - manifestPath = + Path manifestPath = new Path(getBackupPath(backupRootPath.toString(), backupId) + Path.SEPARATOR + BackupManifest.MANIFEST_FILE_NAME); if (!fs.exists(manifestPath)) { http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/LogUtils.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/LogUtils.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/LogUtils.java index 5ce975f..b96e3c7 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/LogUtils.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/LogUtils.java @@ -17,10 +17,10 @@ */ package org.apache.hadoop.hbase.backup; -import org.apache.yetus.audience.InterfaceAudience; import org.apache.log4j.Level; import org.apache.log4j.LogManager; import org.apache.log4j.Logger; +import org.apache.yetus.audience.InterfaceAudience; /** * Utility class for disabling Zk and client logging @@ -28,7 +28,6 @@ import org.apache.log4j.Logger; */ @InterfaceAudience.Private final class LogUtils { - private LogUtils() { } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java index 2903bb0..b6c324d 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreDriver.java @@ -47,9 +47,6 @@ import org.apache.hadoop.hbase.backup.impl.BackupAdminImpl; import org.apache.hadoop.hbase.backup.impl.BackupManager; import org.apache.hadoop.hbase.backup.impl.BackupSystemTable; import org.apache.hadoop.hbase.backup.util.BackupUtils; -import org.apache.yetus.audience.InterfaceAudience; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.util.AbstractHBaseTool; @@ -57,6 +54,9 @@ import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.util.ToolRunner; import org.apache.log4j.Level; import org.apache.log4j.LogManager; +import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @@ -65,7 +65,6 @@ import org.apache.log4j.LogManager; */ @InterfaceAudience.Private public class RestoreDriver extends AbstractHBaseTool { - private static final Logger LOG = LoggerFactory.getLogger(RestoreDriver.class); private CommandLine cmd; @@ -81,7 +80,7 @@ public class RestoreDriver extends AbstractHBaseTool { init(); } - protected void init() throws IOException { + protected void init() { // disable irrelevant loggers to avoid it mess up command output LogUtils.disableZkAndClientLoggers(); } @@ -142,7 +141,7 @@ public class RestoreDriver extends AbstractHBaseTool { String backupRootDir = remainArgs[0]; String backupId = remainArgs[1]; - String tables = null; + String tables; String tableMapping = cmd.hasOption(OPTION_TABLE_MAPPING) ? cmd.getOptionValue(OPTION_TABLE_MAPPING) : null; try (final Connection conn = ConnectionFactory.createConnection(conf); @@ -190,7 +189,11 @@ public class RestoreDriver extends AbstractHBaseTool { throws IOException { try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<TableName> tables = table.describeBackupSet(name); - if (tables == null) return null; + + if (tables == null) { + return null; + } + return StringUtils.join(tables, BackupRestoreConstants.TABLENAME_DELIMITER_IN_COMMAND); } } @@ -205,7 +208,6 @@ public class RestoreDriver extends AbstractHBaseTool { addOptWithArg(OPTION_TABLE, OPTION_TABLE_LIST_DESC); addOptWithArg(OPTION_TABLE_MAPPING, OPTION_TABLE_MAPPING_DESC); addOptWithArg(OPTION_YARN_QUEUE_NAME, OPTION_YARN_QUEUE_NAME_RESTORE_DESC); - } @Override @@ -228,7 +230,7 @@ public class RestoreDriver extends AbstractHBaseTool { } @Override - public int run(String[] args) throws IOException { + public int run(String[] args) { if (conf == null) { LOG.error("Tool configuration is not initialized"); throw new NullPointerException("conf"); @@ -262,7 +264,7 @@ public class RestoreDriver extends AbstractHBaseTool { return ret; } - protected void printToolUsage() throws IOException { + protected void printToolUsage() { System.out.println(USAGE_STRING); HelpFormatter helpFormatter = new HelpFormatter(); helpFormatter.setLeftPadding(2); http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreJob.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreJob.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreJob.java index ca57e59..29b1288 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreJob.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreJob.java @@ -32,14 +32,13 @@ import org.apache.yetus.audience.InterfaceAudience; @InterfaceAudience.Private public interface RestoreJob extends Configurable { - /** * Run restore operation * @param dirPaths path array of WAL log directories * @param fromTables from tables * @param toTables to tables * @param fullBackupRestore full backup restore - * @throws IOException + * @throws IOException if running the job fails */ void run(Path[] dirPaths, TableName[] fromTables, TableName[] toTables, boolean fullBackupRestore) throws IOException; http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreRequest.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreRequest.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreRequest.java index 5a0a7d4..a654cce 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreRequest.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/RestoreRequest.java @@ -24,8 +24,7 @@ import org.apache.yetus.audience.InterfaceAudience; * POJO class for restore request */ @InterfaceAudience.Private -public class RestoreRequest { - +public final class RestoreRequest { public static class Builder { RestoreRequest request; @@ -63,7 +62,6 @@ public class RestoreRequest { return this; } - public RestoreRequest build() { return request; } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java index f27490c..776cc1b 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupAdminImpl.java @@ -44,13 +44,14 @@ import org.apache.hadoop.hbase.backup.HBackupFileSystem; import org.apache.hadoop.hbase.backup.RestoreRequest; import org.apache.hadoop.hbase.backup.util.BackupSet; import org.apache.hadoop.hbase.backup.util.BackupUtils; +import org.apache.hadoop.hbase.client.Admin; +import org.apache.hadoop.hbase.client.Connection; +import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.yetus.audience.InterfaceAudience; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.apache.hadoop.hbase.client.Admin; -import org.apache.hadoop.hbase.client.Connection; + import org.apache.hbase.thirdparty.com.google.common.collect.Lists; -import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; @InterfaceAudience.Private public class BackupAdminImpl implements BackupAdmin { @@ -66,12 +67,12 @@ public class BackupAdminImpl implements BackupAdmin { } @Override - public void close() throws IOException { + public void close() { } @Override public BackupInfo getBackupInfo(String backupId) throws IOException { - BackupInfo backupInfo = null; + BackupInfo backupInfo; try (final BackupSystemTable table = new BackupSystemTable(conn)) { if (backupId == null) { ArrayList<BackupInfo> recentSessions = table.getBackupInfos(BackupState.RUNNING); @@ -93,12 +94,11 @@ public class BackupAdminImpl implements BackupAdmin { public int deleteBackups(String[] backupIds) throws IOException { int totalDeleted = 0; - Map<String, HashSet<TableName>> allTablesMap = new HashMap<String, HashSet<TableName>>(); + Map<String, HashSet<TableName>> allTablesMap = new HashMap<>(); - boolean deleteSessionStarted = false; - boolean snapshotDone = false; + boolean deleteSessionStarted; + boolean snapshotDone; try (final BackupSystemTable sysTable = new BackupSystemTable(conn)) { - // Step 1: Make sure there is no active session // is running by using startBackupSession API // If there is an active session in progress, exception will be thrown @@ -107,8 +107,8 @@ public class BackupAdminImpl implements BackupAdmin { deleteSessionStarted = true; } catch (IOException e) { LOG.warn("You can not run delete command while active backup session is in progress. \n" - + "If there is no active backup session running, run backup repair utility to restore \n" - + "backup system integrity."); + + "If there is no active backup session running, run backup repair utility to " + + "restore \nbackup system integrity."); return -1; } @@ -136,7 +136,7 @@ public class BackupAdminImpl implements BackupAdmin { String rootDir = info.getBackupRootDir(); HashSet<TableName> allTables = allTablesMap.get(rootDir); if (allTables == null) { - allTables = new HashSet<TableName>(); + allTables = new HashSet<>(); allTablesMap.put(rootDir, allTables); } allTables.addAll(info.getTableNames()); @@ -176,11 +176,10 @@ public class BackupAdminImpl implements BackupAdmin { /** * Updates incremental backup set for every backupRoot - * @param tablesMap map [backupRoot: Set<TableName>] + * @param tablesMap map [backupRoot: {@code Set<TableName>}] * @param table backup system table - * @throws IOException + * @throws IOException if a table operation fails */ - private void finalizeDelete(Map<String, HashSet<TableName>> tablesMap, BackupSystemTable table) throws IOException { for (String backupRoot : tablesMap.keySet()) { @@ -213,15 +212,15 @@ public class BackupAdminImpl implements BackupAdmin { * which includes T<br> * if(INCREMENTAL, YES) deletes only physical data (PD) if(INCREMENTAL, NO) deletes physical data * and for table T scans all backup images between last<br> - * FULL backup, which is older than the backup being deleted and the next FULL backup (if exists) <br> + * FULL backup, which is older than the backup being deleted and the next FULL backup (if exists) + * <br> * or last one for a particular table T and removes T from list of backup tables. * @param backupId backup id * @param sysTable backup system table * @return total number of deleted backup images - * @throws IOException + * @throws IOException if deleting the backup fails */ private int deleteBackup(String backupId, BackupSystemTable sysTable) throws IOException { - BackupInfo backupInfo = sysTable.readBackupInfo(backupId); int totalDeleted = 0; @@ -271,7 +270,7 @@ public class BackupAdminImpl implements BackupAdmin { LOG.debug(numDeleted + " bulk loaded files out of " + map.size() + " were deleted"); } if (success) { - sysTable.deleteBulkLoadedRows(new ArrayList<byte[]>(map.keySet())); + sysTable.deleteBulkLoadedRows(new ArrayList<>(map.keySet())); } sysTable.deleteBackupInfo(backupInfo.getBackupId()); @@ -283,8 +282,7 @@ public class BackupAdminImpl implements BackupAdmin { return totalDeleted; } - private void - removeTableFromBackupImage(BackupInfo info, TableName tn, BackupSystemTable sysTable) + private void removeTableFromBackupImage(BackupInfo info, TableName tn, BackupSystemTable sysTable) throws IOException { List<TableName> tables = info.getTableNames(); LOG.debug("Remove " + tn + " from " + info.getBackupId() + " tables=" @@ -311,7 +309,7 @@ public class BackupAdminImpl implements BackupAdmin { BackupSystemTable table) throws IOException { LOG.debug("GetAffectedBackupInfos for: " + backupInfo.getBackupId() + " table=" + tn); long ts = backupInfo.getStartTs(); - List<BackupInfo> list = new ArrayList<BackupInfo>(); + List<BackupInfo> list = new ArrayList<>(); List<BackupInfo> history = table.getBackupHistory(backupInfo.getBackupRootDir()); // Scan from most recent to backupInfo // break when backupInfo reached @@ -337,7 +335,7 @@ public class BackupAdminImpl implements BackupAdmin { /** * Clean up the data at target directory - * @throws IOException + * @throws IOException if cleaning up the backup directory fails */ private void cleanupBackupDir(BackupInfo backupInfo, TableName table, Configuration conf) throws IOException { @@ -359,7 +357,6 @@ public class BackupAdminImpl implements BackupAdmin { } else { LOG.info("No data has been found in " + targetDirPath.toString() + "."); } - } catch (IOException e1) { LOG.error("Cleaning up backup data of " + backupInfo.getBackupId() + " for table " + table + "at " + backupInfo.getBackupRootDir() + " failed due to " + e1.getMessage() + "."); @@ -375,11 +372,7 @@ public class BackupAdminImpl implements BackupAdmin { if (!tables.contains(tn)) { continue; } - if (info.getStartTs() <= startTime) { - return true; - } else { - return false; - } + return info.getStartTs() <= startTime; } return false; } @@ -388,8 +381,12 @@ public class BackupAdminImpl implements BackupAdmin { public List<BackupInfo> getHistory(int n) throws IOException { try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<BackupInfo> history = table.getBackupHistory(); - if (history.size() <= n) return history; - List<BackupInfo> list = new ArrayList<BackupInfo>(); + + if (history.size() <= n) { + return history; + } + + List<BackupInfo> list = new ArrayList<>(); for (int i = 0; i < n; i++) { list.add(history.get(i)); } @@ -399,12 +396,18 @@ public class BackupAdminImpl implements BackupAdmin { @Override public List<BackupInfo> getHistory(int n, BackupInfo.Filter... filters) throws IOException { - if (filters.length == 0) return getHistory(n); + if (filters.length == 0) { + return getHistory(n); + } + try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<BackupInfo> history = table.getBackupHistory(); - List<BackupInfo> result = new ArrayList<BackupInfo>(); + List<BackupInfo> result = new ArrayList<>(); for (BackupInfo bi : history) { - if (result.size() == n) break; + if (result.size() == n) { + break; + } + boolean passed = true; for (int i = 0; i < filters.length; i++) { if (!filters[i].apply(bi)) { @@ -424,7 +427,7 @@ public class BackupAdminImpl implements BackupAdmin { public List<BackupSet> listBackupSets() throws IOException { try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<String> list = table.listBackupSets(); - List<BackupSet> bslist = new ArrayList<BackupSet>(); + List<BackupSet> bslist = new ArrayList<>(); for (String s : list) { List<TableName> tables = table.describeBackupSet(s); if (tables != null) { @@ -439,7 +442,11 @@ public class BackupAdminImpl implements BackupAdmin { public BackupSet getBackupSet(String name) throws IOException { try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<TableName> list = table.describeBackupSet(name); - if (list == null) return null; + + if (list == null) { + return null; + } + return new BackupSet(name, list); } } @@ -502,7 +509,6 @@ public class BackupAdminImpl implements BackupAdmin { conn.getConfiguration(), rootPath, backupId); // Check and validate the backup image and its dependencies - if (BackupUtils.validate(backupManifestMap, conn.getConfiguration())) { LOG.info(CHECK_OK); } else { @@ -522,14 +528,13 @@ public class BackupAdminImpl implements BackupAdmin { String backupId = BackupRestoreConstants.BACKUPID_PREFIX + EnvironmentEdgeManager.currentTime(); if (type == BackupType.INCREMENTAL) { - Set<TableName> incrTableSet = null; + Set<TableName> incrTableSet; try (BackupSystemTable table = new BackupSystemTable(conn)) { incrTableSet = table.getIncrementalBackupTableSet(targetRootDir); } if (incrTableSet.isEmpty()) { - String msg = - "Incremental backup table set contains no tables. " + String msg = "Incremental backup table set contains no tables. " + "You need to run full backup first " + (tableList != null ? "on " + StringUtils.join(tableList, ",") : ""); @@ -539,8 +544,7 @@ public class BackupAdminImpl implements BackupAdmin { tableList.removeAll(incrTableSet); if (!tableList.isEmpty()) { String extraTables = StringUtils.join(tableList, ","); - String msg = - "Some tables (" + extraTables + ") haven't gone through full backup. " + String msg = "Some tables (" + extraTables + ") haven't gone through full backup. " + "Perform full backup on " + extraTables + " first, " + "then retry the command"; throw new IOException(msg); } @@ -585,13 +589,12 @@ public class BackupAdminImpl implements BackupAdmin { // update table list BackupRequest.Builder builder = new BackupRequest.Builder(); - request = - builder.withBackupType(request.getBackupType()).withTableList(tableList) + request = builder.withBackupType(request.getBackupType()).withTableList(tableList) .withTargetRootDir(request.getTargetRootDir()) .withBackupSetName(request.getBackupSetName()).withTotalTasks(request.getTotalTasks()) .withBandwidthPerTasks((int) request.getBandwidth()).build(); - TableBackupClient client = null; + TableBackupClient client; try { client = BackupClientFactory.create(conn, backupId, request); } catch (IOException e) { @@ -606,7 +609,6 @@ public class BackupAdminImpl implements BackupAdmin { private List<TableName> excludeNonExistingTables(List<TableName> tableList, List<TableName> nonExistingTableList) { - for (TableName table : nonExistingTableList) { tableList.remove(table); } @@ -634,13 +636,14 @@ public class BackupAdminImpl implements BackupAdmin { * <p> * @param backupIds list of backup ids * @param table backup system table - * @throws IOException + * @throws IOException if the backup image is not valid for merge */ - private void checkIfValidForMerge(String[] backupIds, BackupSystemTable table) throws IOException { + private void checkIfValidForMerge(String[] backupIds, BackupSystemTable table) + throws IOException { String backupRoot = null; - final Set<TableName> allTables = new HashSet<TableName>(); - final Set<String> allBackups = new HashSet<String>(); + final Set<TableName> allTables = new HashSet<>(); + final Set<String> allBackups = new HashSet<>(); long minTime = Long.MAX_VALUE, maxTime = Long.MIN_VALUE; for (String backupId : backupIds) { BackupInfo bInfo = table.readBackupInfo(backupId); @@ -651,8 +654,8 @@ public class BackupAdminImpl implements BackupAdmin { if (backupRoot == null) { backupRoot = bInfo.getBackupRootDir(); } else if (!bInfo.getBackupRootDir().equals(backupRoot)) { - throw new IOException("Found different backup destinations in a list of a backup sessions \n" - + "1. " + backupRoot + "\n" + "2. " + bInfo.getBackupRootDir()); + throw new IOException("Found different backup destinations in a list of a backup sessions " + + "\n1. " + backupRoot + "\n" + "2. " + bInfo.getBackupRootDir()); } if (bInfo.getType() == BackupType.FULL) { throw new IOException("FULL backup image can not be merged for: \n" + bInfo); @@ -673,7 +676,6 @@ public class BackupAdminImpl implements BackupAdmin { } } - final long startRangeTime = minTime; final long endRangeTime = maxTime; final String backupDest = backupRoot; @@ -681,54 +683,26 @@ public class BackupAdminImpl implements BackupAdmin { // Filter 1 : backupRoot // Filter 2 : time range filter // Filter 3 : table filter + BackupInfo.Filter destinationFilter = info -> info.getBackupRootDir().equals(backupDest); - BackupInfo.Filter destinationFilter = new BackupInfo.Filter() { - - @Override - public boolean apply(BackupInfo info) { - return info.getBackupRootDir().equals(backupDest); - } + BackupInfo.Filter timeRangeFilter = info -> { + long time = info.getStartTs(); + return time >= startRangeTime && time <= endRangeTime ; }; - BackupInfo.Filter timeRangeFilter = new BackupInfo.Filter() { - - @Override - public boolean apply(BackupInfo info) { - long time = info.getStartTs(); - return time >= startRangeTime && time <= endRangeTime ; - } - }; - - BackupInfo.Filter tableFilter = new BackupInfo.Filter() { - - @Override - public boolean apply(BackupInfo info) { - List<TableName> tables = info.getTableNames(); - return !Collections.disjoint(allTables, tables); - } - }; - - BackupInfo.Filter typeFilter = new BackupInfo.Filter() { - - @Override - public boolean apply(BackupInfo info) { - return info.getType() == BackupType.INCREMENTAL; - } + BackupInfo.Filter tableFilter = info -> { + List<TableName> tables = info.getTableNames(); + return !Collections.disjoint(allTables, tables); }; - BackupInfo.Filter stateFilter = new BackupInfo.Filter() { - @Override - public boolean apply(BackupInfo info) { - return info.getState() == BackupState.COMPLETE; - } - }; + BackupInfo.Filter typeFilter = info -> info.getType() == BackupType.INCREMENTAL; + BackupInfo.Filter stateFilter = info -> info.getState() == BackupState.COMPLETE; - List<BackupInfo> allInfos = - table.getBackupHistory( -1, destinationFilter, + List<BackupInfo> allInfos = table.getBackupHistory(-1, destinationFilter, timeRangeFilter, tableFilter, typeFilter, stateFilter); if (allInfos.size() != allBackups.size()) { // Yes we have at least one hole in backup image sequence - List<String> missingIds = new ArrayList<String>(); + List<String> missingIds = new ArrayList<>(); for(BackupInfo info: allInfos) { if(allBackups.contains(info.getBackupId())) { continue; http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java index bbedcee..c310178 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupCommands.java @@ -20,6 +20,8 @@ package org.apache.hadoop.hbase.backup.impl; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_BANDWIDTH; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_BANDWIDTH_DESC; +import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_DEBUG; +import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_DEBUG_DESC; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_PATH; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_PATH_DESC; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_RECORD_NUMBER; @@ -34,8 +36,6 @@ import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_WORKE import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_WORKERS_DESC; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_YARN_QUEUE_NAME; import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_YARN_QUEUE_NAME_DESC; -import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_DEBUG; -import static org.apache.hadoop.hbase.backup.BackupRestoreConstants.OPTION_DEBUG_DESC; import java.io.IOException; import java.net.URI; @@ -62,17 +62,16 @@ import org.apache.hadoop.hbase.backup.util.BackupSet; import org.apache.hadoop.hbase.backup.util.BackupUtils; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; -import org.apache.hbase.thirdparty.com.google.common.collect.Lists; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.yetus.audience.InterfaceAudience; +import org.apache.hbase.thirdparty.com.google.common.collect.Lists; + /** * General backup commands, options and usage messages */ - @InterfaceAudience.Private public final class BackupCommands { - public final static String INCORRECT_USAGE = "Incorrect usage"; public final static String TOP_LEVEL_NOT_ALLOWED = @@ -173,7 +172,6 @@ public final class BackupCommands { System.err.println("Backup system recovery is required."); throw new IOException("Failed backup MERGE found, aborted command execution"); } - } } } @@ -209,47 +207,49 @@ public final class BackupCommands { } public static Command createCommand(Configuration conf, BackupCommand type, CommandLine cmdline) { - Command cmd = null; + Command cmd; switch (type) { - case CREATE: - cmd = new CreateCommand(conf, cmdline); - break; - case DESCRIBE: - cmd = new DescribeCommand(conf, cmdline); - break; - case PROGRESS: - cmd = new ProgressCommand(conf, cmdline); - break; - case DELETE: - cmd = new DeleteCommand(conf, cmdline); - break; - case HISTORY: - cmd = new HistoryCommand(conf, cmdline); - break; - case SET: - cmd = new BackupSetCommand(conf, cmdline); - break; - case REPAIR: - cmd = new RepairCommand(conf, cmdline); - break; - case MERGE: - cmd = new MergeCommand(conf, cmdline); - break; - case HELP: - default: - cmd = new HelpCommand(conf, cmdline); - break; + case CREATE: + cmd = new CreateCommand(conf, cmdline); + break; + case DESCRIBE: + cmd = new DescribeCommand(conf, cmdline); + break; + case PROGRESS: + cmd = new ProgressCommand(conf, cmdline); + break; + case DELETE: + cmd = new DeleteCommand(conf, cmdline); + break; + case HISTORY: + cmd = new HistoryCommand(conf, cmdline); + break; + case SET: + cmd = new BackupSetCommand(conf, cmdline); + break; + case REPAIR: + cmd = new RepairCommand(conf, cmdline); + break; + case MERGE: + cmd = new MergeCommand(conf, cmdline); + break; + case HELP: + default: + cmd = new HelpCommand(conf, cmdline); + break; } return cmd; } static int numOfArgs(String[] args) { - if (args == null) return 0; + if (args == null) { + return 0; + } + return args.length; } public static class CreateCommand extends Command { - CreateCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -293,7 +293,7 @@ public final class BackupCommands { if (isRootFolder(targetBackupDir)) { throw new IOException(TOP_LEVEL_NOT_ALLOWED); } - String tables = null; + String tables; // Check if we have both: backup set and list of tables if (cmdline.hasOption(OPTION_TABLE) && cmdline.hasOption(OPTION_SET)) { @@ -359,7 +359,11 @@ public final class BackupCommands { Path p = new Path(path); Configuration conf = getConf() != null ? getConf() : HBaseConfiguration.create(); URI uri = p.toUri(); - if (uri.getScheme() == null) return false; + + if (uri.getScheme() == null) { + return false; + } + FileSystem.get(uri, conf); return true; } catch (Exception e) { @@ -370,7 +374,11 @@ public final class BackupCommands { private String getTablesForSet(String name, Configuration conf) throws IOException { try (final BackupSystemTable table = new BackupSystemTable(conn)) { List<TableName> tables = table.describeBackupSet(name); - if (tables == null) return null; + + if (tables == null) { + return null; + } + return StringUtils.join(tables, BackupRestoreConstants.TABLENAME_DELIMITER_IN_COMMAND); } } @@ -392,12 +400,10 @@ public final class BackupCommands { helpFormatter.setWidth(100); helpFormatter.setSyntaxPrefix("Options:"); helpFormatter.printHelp(" ", null, options, USAGE_FOOTER); - } } private static class HelpCommand extends Command { - HelpCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -449,7 +455,6 @@ public final class BackupCommands { } private static class DescribeCommand extends Command { - DescribeCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -488,7 +493,6 @@ public final class BackupCommands { } private static class ProgressCommand extends Command { - ProgressCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -522,7 +526,6 @@ public final class BackupCommands { info = infos.get(0); backupId = info.getBackupId(); System.out.println("Found ongoing session with backupId=" + backupId); - } else { } } int progress = info == null ? -1 : info.getProgress(); @@ -545,7 +548,6 @@ public final class BackupCommands { } private static class DeleteCommand extends Command { - DeleteCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -572,11 +574,10 @@ public final class BackupCommands { int deleted = admin.deleteBackups(backupIds); System.out.println("Deleted " + deleted + " backups. Total requested: " + (args.length -1)); } catch (IOException e) { - System.err - .println("Delete command FAILED. Please run backup repair tool to restore backup system integrity"); + System.err.println("Delete command FAILED. Please run backup repair tool to restore backup " + + "system integrity"); throw e; } - } @Override @@ -586,7 +587,6 @@ public final class BackupCommands { } private static class RepairCommand extends Command { - RepairCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -637,7 +637,6 @@ public final class BackupCommands { sysTable.updateBackupInfo(backupInfo); sysTable.finishBackupExclusiveOperation(); System.out.println("REPAIR status: finished repair failed session:\n " + backupInfo); - } } @@ -660,7 +659,6 @@ public final class BackupCommands { admin.deleteBackups(backupIds); } System.out.println("DELETE operation finished OK: " + StringUtils.join(backupIds)); - } private void repairFailedBackupMergeIfAny(Connection conn, BackupSystemTable sysTable) @@ -684,7 +682,6 @@ public final class BackupCommands { admin.mergeBackups(backupIds); } System.out.println("MERGE operation finished OK: " + StringUtils.join(backupIds)); - } @Override @@ -694,7 +691,6 @@ public final class BackupCommands { } private static class MergeCommand extends Command { - MergeCommand(Configuration conf, CommandLine cmdline) { super(conf); this.cmdline = cmdline; @@ -744,7 +740,6 @@ public final class BackupCommands { } private static class HistoryCommand extends Command { - private final static int DEFAULT_HISTORY_LENGTH = 10; HistoryCommand(Configuration conf, CommandLine cmdline) { @@ -754,14 +749,16 @@ public final class BackupCommands { @Override public void execute() throws IOException { - int n = parseHistoryLength(); final TableName tableName = getTableName(); final String setName = getTableSetName(); BackupInfo.Filter tableNameFilter = new BackupInfo.Filter() { @Override public boolean apply(BackupInfo info) { - if (tableName == null) return true; + if (tableName == null) { + return true; + } + List<TableName> names = info.getTableNames(); return names.contains(tableName); } @@ -769,13 +766,16 @@ public final class BackupCommands { BackupInfo.Filter tableSetFilter = new BackupInfo.Filter() { @Override public boolean apply(BackupInfo info) { - if (setName == null) return true; + if (setName == null) { + return true; + } + String backupId = info.getBackupId(); return backupId.startsWith(setName); } }; Path backupRootPath = getBackupRootPath(); - List<BackupInfo> history = null; + List<BackupInfo> history; if (backupRootPath == null) { // Load from backup system table super.execute(); @@ -796,7 +796,11 @@ public final class BackupCommands { String value = null; try { value = cmdline.getOptionValue(OPTION_PATH); - if (value == null) return null; + + if (value == null) { + return null; + } + return new Path(value); } catch (IllegalArgumentException e) { System.out.println("ERROR: Illegal argument for backup root path: " + value); @@ -807,7 +811,11 @@ public final class BackupCommands { private TableName getTableName() throws IOException { String value = cmdline.getOptionValue(OPTION_TABLE); - if (value == null) return null; + + if (value == null) { + return null; + } + try { return TableName.valueOf(value); } catch (IllegalArgumentException e) { @@ -817,15 +825,17 @@ public final class BackupCommands { } } - private String getTableSetName() throws IOException { - String value = cmdline.getOptionValue(OPTION_SET); - return value; + private String getTableSetName() { + return cmdline.getOptionValue(OPTION_SET); } private int parseHistoryLength() throws IOException { String value = cmdline.getOptionValue(OPTION_RECORD_NUMBER); try { - if (value == null) return DEFAULT_HISTORY_LENGTH; + if (value == null) { + return DEFAULT_HISTORY_LENGTH; + } + return Integer.parseInt(value); } catch (NumberFormatException e) { System.out.println("Illegal argument for history length: " + value); @@ -877,24 +887,23 @@ public final class BackupCommands { BackupCommand cmd = getCommand(cmdStr); switch (cmd) { - case SET_ADD: - processSetAdd(args); - break; - case SET_REMOVE: - processSetRemove(args); - break; - case SET_DELETE: - processSetDelete(args); - break; - case SET_DESCRIBE: - processSetDescribe(args); - break; - case SET_LIST: - processSetList(args); - break; - default: - break; - + case SET_ADD: + processSetAdd(args); + break; + case SET_REMOVE: + processSetRemove(args); + break; + case SET_DELETE: + processSetDelete(args); + break; + case SET_DESCRIBE: + processSetDescribe(args); + break; + case SET_LIST: + processSetList(args); + break; + default: + break; } } @@ -991,20 +1000,21 @@ public final class BackupCommands { } private BackupCommand getCommand(String cmdStr) throws IOException { - if (cmdStr.equals(SET_ADD_CMD)) { - return BackupCommand.SET_ADD; - } else if (cmdStr.equals(SET_REMOVE_CMD)) { - return BackupCommand.SET_REMOVE; - } else if (cmdStr.equals(SET_DELETE_CMD)) { - return BackupCommand.SET_DELETE; - } else if (cmdStr.equals(SET_DESCRIBE_CMD)) { - return BackupCommand.SET_DESCRIBE; - } else if (cmdStr.equals(SET_LIST_CMD)) { - return BackupCommand.SET_LIST; - } else { - System.out.println("ERROR: Unknown command for 'set' :" + cmdStr); - printUsage(); - throw new IOException(INCORRECT_USAGE); + switch (cmdStr) { + case SET_ADD_CMD: + return BackupCommand.SET_ADD; + case SET_REMOVE_CMD: + return BackupCommand.SET_REMOVE; + case SET_DELETE_CMD: + return BackupCommand.SET_DELETE; + case SET_DESCRIBE_CMD: + return BackupCommand.SET_DESCRIBE; + case SET_LIST_CMD: + return BackupCommand.SET_LIST; + default: + System.out.println("ERROR: Unknown command for 'set' :" + cmdStr); + printUsage(); + throw new IOException(INCORRECT_USAGE); } } @@ -1012,6 +1022,5 @@ public final class BackupCommands { protected void printUsage() { System.out.println(SET_CMD_USAGE); } - } } http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java index 4ca998c..f09d6d0 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManager.java @@ -81,7 +81,6 @@ public class BackupManager implements Closeable { this.conf = conf; this.conn = conn; this.systemTable = new BackupSystemTable(conn); - } /** @@ -113,14 +112,14 @@ public class BackupManager implements Closeable { if (classes == null) { conf.set(ProcedureManagerHost.MASTER_PROCEDURE_CONF_KEY, masterProcedureClass); } else if (!classes.contains(masterProcedureClass)) { - conf.set(ProcedureManagerHost.MASTER_PROCEDURE_CONF_KEY, classes + "," + masterProcedureClass); + conf.set(ProcedureManagerHost.MASTER_PROCEDURE_CONF_KEY, classes + "," + + masterProcedureClass); } if (LOG.isDebugEnabled()) { LOG.debug("Added log cleaner: " + cleanerClass + "\n" + "Added master procedure manager: " + masterProcedureClass); } - } /** @@ -170,7 +169,6 @@ public class BackupManager implements Closeable { */ @Override public void close() { - if (systemTable != null) { try { systemTable.close(); @@ -200,7 +198,6 @@ public class BackupManager implements Closeable { if (type == BackupType.FULL && (tableList == null || tableList.isEmpty())) { // If table list is null for full backup, which means backup all tables. Then fill the table // list with all user tables from meta. It no table available, throw the request exception. - HTableDescriptor[] htds = null; try (Admin admin = conn.getAdmin()) { htds = admin.listTables(); @@ -242,7 +239,6 @@ public class BackupManager implements Closeable { * @throws IOException exception */ private String getOngoingBackupId() throws IOException { - ArrayList<BackupInfo> sessions = systemTable.getBackupInfos(BackupState.RUNNING); if (sessions.size() == 0) { return null; @@ -272,13 +268,11 @@ public class BackupManager implements Closeable { * @param backupInfo The backup info for the current backup * @return The ancestors for the current backup * @throws IOException exception - * @throws BackupException exception */ - public ArrayList<BackupImage> getAncestors(BackupInfo backupInfo) throws IOException, - BackupException { + public ArrayList<BackupImage> getAncestors(BackupInfo backupInfo) throws IOException { LOG.debug("Getting the direct ancestors of the current backup " + backupInfo.getBackupId()); - ArrayList<BackupImage> ancestors = new ArrayList<BackupImage>(); + ArrayList<BackupImage> ancestors = new ArrayList<>(); // full backup does not have ancestor if (backupInfo.getType() == BackupType.FULL) { @@ -287,7 +281,6 @@ public class BackupManager implements Closeable { } // get all backup history list in descending order - ArrayList<BackupInfo> allHistoryList = getBackupHistory(true); for (BackupInfo backup : allHistoryList) { @@ -327,7 +320,8 @@ public class BackupManager implements Closeable { ancestors.add(lastIncrImage); LOG.debug("Last dependent incremental backup image: " + "{BackupID=" - + lastIncrImage.getBackupId() + "," + "BackupDir=" + lastIncrImage.getRootDir() + "}"); + + lastIncrImage.getBackupId() + "," + "BackupDir=" + lastIncrImage.getRootDir() + + "}"); } } } @@ -340,13 +334,12 @@ public class BackupManager implements Closeable { * @param backupInfo backup info * @param table table * @return backupImages on the dependency list - * @throws BackupException exception * @throws IOException exception */ public ArrayList<BackupImage> getAncestors(BackupInfo backupInfo, TableName table) - throws BackupException, IOException { + throws IOException { ArrayList<BackupImage> ancestors = getAncestors(backupInfo); - ArrayList<BackupImage> tableAncestors = new ArrayList<BackupImage>(); + ArrayList<BackupImage> tableAncestors = new ArrayList<>(); for (BackupImage image : ancestors) { if (image.hasTable(table)) { tableAncestors.add(image); @@ -489,9 +482,10 @@ public class BackupManager implements Closeable { } /** - * Get WAL files iterator + * Get WAL files iterator. + * * @return WAL files iterator from backup system table - * @throws IOException + * @throws IOException if getting the WAL files iterator fails */ public Iterator<BackupSystemTable.WALItem> getWALFilesFromBackupSystem() throws IOException { return systemTable.getWALFilesIterator(backupInfo.getBackupRootDir()); http://git-wip-us.apache.org/repos/asf/hbase/blob/c2236b77/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java ---------------------------------------------------------------------- diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java index c579bca..4c38219 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupManifest.java @@ -56,7 +56,6 @@ import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos; */ @InterfaceAudience.Private public class BackupManifest { - private static final Logger LOG = LoggerFactory.getLogger(BackupManifest.class); // manifest file name @@ -66,9 +65,7 @@ public class BackupManifest { * Backup image, the dependency graph is made up by series of backup images BackupImage contains * all the relevant information to restore the backup and is used during restore operation */ - public static class BackupImage implements Comparable<BackupImage> { - static class Builder { BackupImage image; @@ -145,7 +142,7 @@ public class BackupManifest { long startTs = im.getStartTs(); long completeTs = im.getCompleteTs(); List<HBaseProtos.TableName> tableListList = im.getTableListList(); - List<TableName> tableList = new ArrayList<TableName>(); + List<TableName> tableList = new ArrayList<>(); for (HBaseProtos.TableName tn : tableListList) { tableList.add(ProtobufUtil.toTableName(tn)); } @@ -194,14 +191,17 @@ public class BackupManifest { BackupProtos.BackupImage proto) { List<BackupProtos.TableServerTimestamp> list = proto.getTstMapList(); - HashMap<TableName, HashMap<String, Long>> incrTimeRanges = - new HashMap<TableName, HashMap<String, Long>>(); - if (list == null || list.size() == 0) return incrTimeRanges; + HashMap<TableName, HashMap<String, Long>> incrTimeRanges = new HashMap<>(); + + if (list == null || list.size() == 0) { + return incrTimeRanges; + } + for (BackupProtos.TableServerTimestamp tst : list) { TableName tn = ProtobufUtil.toTableName(tst.getTableName()); HashMap<String, Long> map = incrTimeRanges.get(tn); if (map == null) { - map = new HashMap<String, Long>(); + map = new HashMap<>(); incrTimeRanges.put(tn, map); } List<BackupProtos.ServerTimestamp> listSt = tst.getServerTimestampList(); @@ -290,13 +290,13 @@ public class BackupManifest { public ArrayList<BackupImage> getAncestors() { if (this.ancestors == null) { - this.ancestors = new ArrayList<BackupImage>(); + this.ancestors = new ArrayList<>(); } return this.ancestors; } public void removeAncestors(List<String> backupIds) { - List<BackupImage> toRemove = new ArrayList<BackupImage>(); + List<BackupImage> toRemove = new ArrayList<>(); for (BackupImage im : this.ancestors) { if (backupIds.contains(im.getBackupId())) { toRemove.add(im); @@ -377,7 +377,6 @@ public class BackupManifest { * @param backup The ongoing backup info */ public BackupManifest(BackupInfo backup) { - BackupImage.Builder builder = BackupImage.newBuilder(); this.backupImage = builder.withBackupId(backup.getBackupId()).withType(backup.getType()) @@ -402,11 +401,11 @@ public class BackupManifest { /** * Construct manifest from a backup directory. + * * @param conf configuration * @param backupPath backup path - * @throws IOException + * @throws IOException if constructing the manifest from the backup directory fails */ - public BackupManifest(Configuration conf, Path backupPath) throws IOException { this(backupPath.getFileSystem(conf), backupPath); } @@ -417,7 +416,6 @@ public class BackupManifest { * @param backupPath backup path * @throws BackupException exception */ - public BackupManifest(FileSystem fs, Path backupPath) throws BackupException { if (LOG.isDebugEnabled()) { LOG.debug("Loading manifest from: " + backupPath.toString()); @@ -427,7 +425,6 @@ public class BackupManifest { // This variable's purpose is to keep the correct and original location so // that we can store/persist it. try { - FileStatus[] subFiles = BackupUtils.listStatus(fs, backupPath, null); if (subFiles == null) { String errorMsg = backupPath.toString() + " does not exist"; @@ -436,7 +433,6 @@ public class BackupManifest { } for (FileStatus subFile : subFiles) { if (subFile.getPath().getName().equals(MANIFEST_FILE_NAME)) { - // load and set manifest field from file content FSDataInputStream in = fs.open(subFile.getPath()); long len = subFile.getLen(); @@ -456,7 +452,6 @@ public class BackupManifest { } String errorMsg = "No manifest file found in: " + backupPath.toString(); throw new IOException(errorMsg); - } catch (IOException e) { throw new BackupException(e.getMessage()); } @@ -478,7 +473,6 @@ public class BackupManifest { * TODO: fix it. Persist the manifest file. * @throws IOException IOException when storing the manifest file. */ - public void store(Configuration conf) throws BackupException { byte[] data = backupImage.toProto().toByteArray(); // write the file, overwrite if already exist @@ -529,12 +523,12 @@ public class BackupManifest { * @return the backup image list for restore in time order */ public ArrayList<BackupImage> getRestoreDependentList(boolean reverse) { - TreeMap<Long, BackupImage> restoreImages = new TreeMap<Long, BackupImage>(); + TreeMap<Long, BackupImage> restoreImages = new TreeMap<>(); restoreImages.put(backupImage.startTs, backupImage); for (BackupImage image : backupImage.getAncestors()) { restoreImages.put(Long.valueOf(image.startTs), image); } - return new ArrayList<BackupImage>(reverse ? (restoreImages.descendingMap().values()) + return new ArrayList<>(reverse ? (restoreImages.descendingMap().values()) : (restoreImages.values())); } @@ -545,7 +539,7 @@ public class BackupManifest { * @return the backup image list for a table in time order */ public ArrayList<BackupImage> getDependentListByTable(TableName table) { - ArrayList<BackupImage> tableImageList = new ArrayList<BackupImage>(); + ArrayList<BackupImage> tableImageList = new ArrayList<>(); ArrayList<BackupImage> imageList = getRestoreDependentList(true); for (BackupImage image : imageList) { if (image.hasTable(table)) { @@ -567,7 +561,7 @@ public class BackupManifest { * dependency of this image */ public ArrayList<BackupImage> getAllDependentListByTable(TableName table) { - ArrayList<BackupImage> tableImageList = new ArrayList<BackupImage>(); + ArrayList<BackupImage> tableImageList = new ArrayList<>(); ArrayList<BackupImage> imageList = getRestoreDependentList(false); for (BackupImage image : imageList) { if (image.hasTable(table)) { @@ -596,7 +590,7 @@ public class BackupManifest { } List<TableName> image1TableList = image1.getTableNames(); List<TableName> image2TableList = image2.getTableNames(); - boolean found = false; + boolean found; for (int i = 0; i < image2TableList.size(); i++) { found = false; for (int j = 0; j < image1TableList.size(); j++) { @@ -634,14 +628,14 @@ public class BackupManifest { } } - ArrayList<String> image1TableList = new ArrayList<String>(); + ArrayList<String> image1TableList = new ArrayList<>(); for (BackupImage image1 : fullImages) { List<TableName> tableList = image1.getTableNames(); for (TableName table : tableList) { image1TableList.add(table.getNameAsString()); } } - ArrayList<String> image2TableList = new ArrayList<String>(); + ArrayList<String> image2TableList = new ArrayList<>(); List<TableName> tableList = image.getTableNames(); for (TableName table : tableList) { image2TableList.add(table.getNameAsString());