diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java index 8ba26ba..089410c 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java @@ -62,6 +62,7 @@ import org.apache.hadoop.hbase.TableNotFoundException; import org.apache.hadoop.hbase.UnknownRegionException; import org.apache.hadoop.hbase.ZooKeeperConnectionException; import org.apache.hadoop.hbase.backup.BackupRequest; +import org.apache.hadoop.hbase.backup.BackupType; import org.apache.hadoop.hbase.backup.util.BackupClientUtil; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.classification.InterfaceStability; @@ -1588,11 +1589,30 @@ public class HBaseAdmin implements Admin { return new TableBackupFuture(this, TableName.BACKUP_TABLE_NAME, response); } - String backupTables(final BackupRequest userRequest) throws IOException { - return get( - backupTablesAsync(userRequest), - backupWaitTimeout, - TimeUnit.SECONDS); + String backupTables(final BackupRequest userRequest) throws IOException { + boolean[] currentSettings = null; + boolean isFullBackup = userRequest.getBackupType() == BackupType.FULL; + if (isFullBackup) { + LOG.debug("Disabling table splits and merges"); + currentSettings = setSplitOrMergeEnabled(false, true, MasterSwitchType.SPLIT, + MasterSwitchType.MERGE); + } + String backupId = null; + try{ + backupId = get( + backupTablesAsync(userRequest), + backupWaitTimeout, + TimeUnit.SECONDS); + } finally { + if (isFullBackup) { + LOG.debug("Restoring table splits and merges"); + LOG.debug("Set SPLIT to "+ currentSettings[0]); + setSplitOrMergeEnabled(currentSettings[0], true, MasterSwitchType.SPLIT); + LOG.debug("Set MERGE to "+ currentSettings[1]); + setSplitOrMergeEnabled(currentSettings[1], true, MasterSwitchType.MERGE); + } + } + return backupId; } public static class TableBackupFuture extends TableFuture {