From 83175fdf8375527fb893debfa441e3862d5093b9 Mon Sep 17 00:00:00 2001 From: tedyu Date: Sun, 3 Sep 2017 07:10:19 -0700 Subject: [PATCH] HBASE-18743 HFiles in use by a table which has the same name and namespace with a default table cloned from snapshot may be deleted when that snapshot and default table are deleted (wenbang) --- .../src/main/java/org/apache/hadoop/hbase/TableName.java | 2 +- .../test/java/org/apache/hadoop/hbase/io/TestHFileLink.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java index c74a5e20fd8..347709833b1 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/TableName.java @@ -413,7 +413,7 @@ public final class TableName implements Comparable { for (TableName tn : tableCache) { if (qualifierAsString.equals(tn.getQualifierAsString()) && - namespaceAsString.equals(tn.getNameAsString())) { + namespaceAsString.equals(tn.getNamespaceAsString())) { return tn; } } diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHFileLink.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHFileLink.java index eac3a6a54af..33bac39f257 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHFileLink.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/TestHFileLink.java @@ -106,7 +106,8 @@ public class TestHFileLink { TableName.NAMESPACE_DELIM, '=') + "=" + encodedRegion + "-" + storeFileName; TableName tableNames[] = {TableName.valueOf(name.getMethodName() + "1"), - TableName.valueOf("ns", name.getMethodName() + "2")}; + TableName.valueOf("ns", name.getMethodName() + "2"), + TableName.valueOf(name.getMethodName()+ ":" +name.getMethodName())}; for( TableName tableName : tableNames) { Path tableDir = FSUtils.getTableDir(rootDir, tableName); @@ -116,7 +117,7 @@ public class TestHFileLink { //Verify back reference creation assertEquals(encodedRegion+"."+ tableName.getNameAsString().replace(TableName.NAMESPACE_DELIM, '='), - HFileLink.createBackReferenceName(tableName.getNameAsString(), + HFileLink.createBackReferenceName(FSUtils.getTableName(tableDir).getNameAsString(), encodedRegion)); //verify parsing back reference