From e7e01bb2df2a92fac659441e8512021f5d7c349e Mon Sep 17 00:00:00 2001 From: wen_yi Date: Mon, 15 Jun 2020 14:44:20 +0800 Subject: [PATCH 1/2] HBASE-24546 --- .../hadoop/hbase/master/procedure/CloneSnapshotProcedure.java | 4 ++++ 1 file changed, 4 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 99bb26ec4919..79a4bafdcf58 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,10 @@ private List createFsLayout( // 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)) { + 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); From 62d35c596da7cc31f8fafd52fb795e5a615ceeae Mon Sep 17 00:00:00 2001 From: wen_yi Date: Mon, 6 Jul 2020 10:56:43 +0800 Subject: [PATCH 2/2] add comment --- .../hadoop/hbase/master/procedure/CloneSnapshotProcedure.java | 1 + 1 file changed, 1 insertion(+) 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 79a4bafdcf58..1c2bddc37e4b 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 @@ -459,6 +459,7 @@ private List createFsLayout( // 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); }