From 9a0d7716de7158bdad99f7bbc623e4d38c0194ec Mon Sep 17 00:00:00 2001 From: Ray Mattingly Date: Wed, 17 Jul 2024 15:23:21 -0400 Subject: [PATCH 1/3] HBASE-28643 Limit BackupInfo failure message length --- .../main/java/org/apache/hadoop/hbase/backup/BackupInfo.java | 4 ++++ 1 file changed, 4 insertions(+) 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 fdad0d549830..4d971bb53dbd 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 @@ -44,6 +44,7 @@ @InterfaceAudience.Private public class BackupInfo implements Comparable { private static final Logger LOG = LoggerFactory.getLogger(BackupInfo.class); + private static final int MAX_FAILED_MESSAGE_LENGTH = 1024; public interface Filter { /** @@ -253,6 +254,9 @@ public String getFailedMsg() { } public void setFailedMsg(String failedMsg) { + if (failedMsg.length() > MAX_FAILED_MESSAGE_LENGTH) { + failedMsg = failedMsg.substring(0, MAX_FAILED_MESSAGE_LENGTH); + } this.failedMsg = failedMsg; } From 0b6629581549d4594f8999186de2c9a79e2502ee Mon Sep 17 00:00:00 2001 From: Ray Mattingly Date: Wed, 17 Jul 2024 15:32:38 -0400 Subject: [PATCH 2/3] Ensure lost BackupInfo updates manifest as a failure --- .../hbase/backup/impl/BackupSystemTable.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java index 5a12b45a5861..ec7eb8169a5d 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java @@ -293,7 +293,19 @@ public void updateBackupInfo(BackupInfo info) throws IOException { } try (Table table = connection.getTable(tableName)) { Put put = createPutForBackupInfo(info); - table.put(put); + try { + table.put(put); + } catch (Exception e) { + // If the BackupInfo update can't be processed, then we should fall back to + // the previous BackupInfo, but also update it to reflect the failure. + LOG.error("Failed to update BackupInfo for {}. Marking as failed", info.getBackupId(), e); + BackupInfo legacyInfo = readBackupInfo(info.getBackupId()); + if (legacyInfo != null) { + legacyInfo.setFailedMsg("Failed to update BackupInfo. Error: " + e.getMessage()); + table.put(createPutForBackupInfo(legacyInfo)); + } + throw e; + } } } From 2cd3a229e9f6bb993a27850219549d80ad371784 Mon Sep 17 00:00:00 2001 From: Ray Mattingly Date: Fri, 26 Jul 2024 10:55:23 -0400 Subject: [PATCH 3/3] rm unhelpful error handling --- .../hbase/backup/impl/BackupSystemTable.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java index ec7eb8169a5d..5a12b45a5861 100644 --- a/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java +++ b/hbase-backup/src/main/java/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.java @@ -293,19 +293,7 @@ public void updateBackupInfo(BackupInfo info) throws IOException { } try (Table table = connection.getTable(tableName)) { Put put = createPutForBackupInfo(info); - try { - table.put(put); - } catch (Exception e) { - // If the BackupInfo update can't be processed, then we should fall back to - // the previous BackupInfo, but also update it to reflect the failure. - LOG.error("Failed to update BackupInfo for {}. Marking as failed", info.getBackupId(), e); - BackupInfo legacyInfo = readBackupInfo(info.getBackupId()); - if (legacyInfo != null) { - legacyInfo.setFailedMsg("Failed to update BackupInfo. Error: " + e.getMessage()); - table.put(createPutForBackupInfo(legacyInfo)); - } - throw e; - } + table.put(put); } }