From b689ad8fc5ccd3c7fd8009e916c0bcc1d1934fd3 Mon Sep 17 00:00:00 2001 From: Hernan Romer Date: Mon, 28 Oct 2024 19:00:25 -0400 Subject: [PATCH] HBASE-28917 ColumnFamilyMismatchException mixes IA public and private (#6369) Co-authored-by: Hernan Gelaf-Romer Signed-off-by: Ray Mattingly --- .../hbase/backup/impl/ColumnFamilyMismatchException.java | 3 ++- .../hbase/backup/impl/IncrementalTableBackupClient.java | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/ColumnFamilyMismatchException.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/ColumnFamilyMismatchException.java index 87cc896e182d..3c1ecde57091 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/ColumnFamilyMismatchException.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/ColumnFamilyMismatchException.java @@ -20,12 +20,13 @@ import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.StringUtils; +import org.apache.hadoop.hbase.HBaseIOException; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor; import org.apache.yetus.audience.InterfaceAudience; @InterfaceAudience.Public -public final class ColumnFamilyMismatchException extends BackupException { +public final class ColumnFamilyMismatchException extends HBaseIOException { private final List mismatchedTables; private ColumnFamilyMismatchException(String msg, List mismatchedTables) { diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.java index 8855bf9186f4..6ad487337c22 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/IncrementalTableBackupClient.java @@ -268,6 +268,12 @@ private void updateFileLists(List activeFiles, List archiveFiles LOG.debug(newlyArchived.size() + " files have been archived."); } + /** + * @throws IOException If the execution of the backup fails + * @throws ColumnFamilyMismatchException If the column families of the current table do not match + * the column families for the last full backup. In which + * case, a full backup should be taken + */ @Override public void execute() throws IOException, ColumnFamilyMismatchException { try { @@ -491,7 +497,7 @@ private void verifyCfCompatibility(Set tables, try { fs = FileSystem.get(new URI(fullBackupInfo.getBackupRootDir()), conf); } catch (URISyntaxException e) { - throw new IOException("Unable to get fs", e); + throw new IOException("Unable to get fs for backup " + fullBackupInfo.getBackupId(), e); } SnapshotProtos.SnapshotDescription snapshotDescription =