From 5416cef27fc2740e1b5920f9b51dbb5986e6bbc9 Mon Sep 17 00:00:00 2001 From: WenFeiYi Date: Mon, 6 Jul 2020 13:45:19 +0800 Subject: [PATCH] HBASE-24546 CloneSnapshotProcedure unlimited retry (#1900) Signed-off-by: Guanghao Zhang --- .../hbase/master/procedure/CloneSnapshotProcedure.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java index 99bb26ec491..1c2bddc37e4 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.java @@ -458,6 +458,11 @@ public class CloneSnapshotProcedure // 1. Create Table Descriptor // using a copy of descriptor, table will be created enabling first final Path tempTableDir = CommonFSUtils.getTableDir(tempdir, tableDescriptor.getTableName()); + if (CommonFSUtils.isExists(mfs.getFileSystem(), tempTableDir)) { + // if the region dirs exist, will cause exception and unlimited retry (see HBASE-24546) + LOG.warn("temp table dir already exists on disk: {}, will be deleted.", tempTableDir); + CommonFSUtils.deleteDirectory(mfs.getFileSystem(), tempTableDir); + } ((FSTableDescriptors) (env.getMasterServices().getTableDescriptors())) .createTableDescriptorForTableDirectory(tempTableDir, TableDescriptorBuilder.newBuilder(tableDescriptor).build(), false);