From 5c9203d643473e340f50aa5b45985b267bfd0fb3 Mon Sep 17 00:00:00 2001 From: Ritesh Garg Date: Mon, 28 Oct 2024 12:34:44 -0700 Subject: [PATCH 1/2] PHOENIX-7449 Handling already disabled table gracefully during dropTables execution --- .../query/ConnectionQueryServicesImpl.java | 18 +++++++++++++----- .../query/ConnectionQueryServicesImplTest.java | 1 - 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index b6adfe07a1b..52c6b6469c1 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -1583,7 +1583,7 @@ private TableDescriptor ensureTableCreated(byte[] physicalTableName, PTableType SQLExceptionCode.INCONSISTENT_NAMESPACE_MAPPING_PROPERTIES.getErrorCode()) { try { // In case we wrongly created SYSTEM.CATALOG or SYSTEM:CATALOG, we should drop it - admin.disableTable(TableName.valueOf(physicalTableName)); + disableTable(admin, TableName.valueOf(physicalTableName)); admin.deleteTable(TableName.valueOf(physicalTableName)); } catch (org.apache.hadoop.hbase.TableNotFoundException ignored) { // Ignore this since it just means that another client with a similar set of @@ -1740,7 +1740,7 @@ private void modifyTable(byte[] tableName, TableDescriptor newDesc, boolean shou TableName tn = TableName.valueOf(tableName); try (Admin admin = getAdmin()) { if (!allowOnlineTableSchemaUpdate()) { - admin.disableTable(tn); + disableTable(admin, tn); admin.modifyTable(newDesc); // TODO: Update to TableDescriptor admin.enableTable(tn); } else { @@ -1965,6 +1965,14 @@ private void ensureViewIndexTableCreated(byte[] physicalTableName, Map tableNamesToDelete) throws SQLExcepti try { TableName tn = TableName.valueOf(tableName); TableDescriptor htableDesc = this.getTableDescriptor(tableName); - admin.disableTable(tn); + disableTable(admin, tn); admin.deleteTable(tn); tableStatsCache.invalidateAll(htableDesc); clearTableRegionCache(TableName.valueOf(tableName)); @@ -3727,7 +3735,7 @@ protected PhoenixConnection upgradeSystemCatalogIfRequired(PhoenixConnection met // co-location of data and index regions. If we just modify the // table descriptor when online schema change enabled may reopen // the region in same region server instead of following data region. - admin.disableTable(table.getTableName()); + disableTable(admin,table.getTableName()); admin.modifyTable(table); admin.enableTable(table.getTableName()); } diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java index 4e6e615c908..90916249029 100644 --- a/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/query/ConnectionQueryServicesImplTest.java @@ -60,7 +60,6 @@ import org.apache.phoenix.util.ReadOnlyProps; import org.junit.Before; import org.junit.ClassRule; -import org.junit.Ignore; import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; From da63416de2fcf22b73f3d6b85d92869a9d1aa403 Mon Sep 17 00:00:00 2001 From: Ritesh Garg Date: Tue, 5 Nov 2024 11:05:48 -0800 Subject: [PATCH 2/2] PHOENIX-7449 Handling already disabled table gracefully during dropTables execution --- .../org/apache/phoenix/query/ConnectionQueryServicesImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java index 52c6b6469c1..71b5937ab52 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java @@ -128,6 +128,7 @@ import org.apache.hadoop.hbase.NamespaceNotFoundException; import org.apache.hadoop.hbase.TableExistsException; import org.apache.hadoop.hbase.TableName; +import org.apache.hadoop.hbase.TableNotEnabledException; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Append; import org.apache.hadoop.hbase.client.ClusterConnection;