You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sh...@apache.org on 2024/03/30 02:23:56 UTC
(phoenix) branch PHOENIX-6883-feature updated: PHOENIX-7294 : Validate DDL timestamps only for Tables, Views and Indexes (#1865)
This is an automated email from the ASF dual-hosted git repository.
shahrs87 pushed a commit to branch PHOENIX-6883-feature
in repository https://gitbox.apache.org/repos/asf/phoenix.git
The following commit(s) were added to refs/heads/PHOENIX-6883-feature by this push:
new 8840cb6f81 PHOENIX-7294 : Validate DDL timestamps only for Tables, Views and Indexes (#1865)
8840cb6f81 is described below
commit 8840cb6f814a0668877cfd472de71014e2954758
Author: palash <pa...@gmail.com>
AuthorDate: Fri Mar 29 19:23:50 2024 -0700
PHOENIX-7294 : Validate DDL timestamps only for Tables, Views and Indexes (#1865)
---
.../phoenix/util/ValidateLastDDLTimestampUtil.java | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/phoenix-core-client/src/main/java/org/apache/phoenix/util/ValidateLastDDLTimestampUtil.java b/phoenix-core-client/src/main/java/org/apache/phoenix/util/ValidateLastDDLTimestampUtil.java
index 7d77e6aa89..bc1ae34f6a 100644
--- a/phoenix-core-client/src/main/java/org/apache/phoenix/util/ValidateLastDDLTimestampUtil.java
+++ b/phoenix-core-client/src/main/java/org/apache/phoenix/util/ValidateLastDDLTimestampUtil.java
@@ -18,9 +18,11 @@
package org.apache.phoenix.util;
import java.sql.SQLException;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Collectors;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.ServerName;
@@ -35,6 +37,7 @@ import org.apache.phoenix.query.QueryServicesOptions;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.PTableKey;
+import org.apache.phoenix.schema.PTableType;
import org.apache.phoenix.schema.TableRef;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,6 +51,8 @@ public class ValidateLastDDLTimestampUtil {
private static final Logger LOGGER = LoggerFactory
.getLogger(ValidateLastDDLTimestampUtil.class);
+ private static final List<PTableType> ALLOWED_PTABLE_TYPES = Arrays.asList(new PTableType[]
+ {PTableType.TABLE, PTableType.VIEW, PTableType.INDEX, PTableType.SYSTEM});
public static String getInfoString(PName tenantId, List<TableRef> tableRefs) {
StringBuilder sb = new StringBuilder();
@@ -76,13 +81,14 @@ public class ValidateLastDDLTimestampUtil {
* A random live region server is picked for invoking the RPC to validate LastDDLTimestamp.
* Retry once if there was an error performing the RPC, otherwise throw the Exception.
*
- * @param tableRefs
+ * @param allTableRefs
* @param doRetry
* @throws SQLException
*/
public static void validateLastDDLTimestamp(PhoenixConnection conn,
- List<TableRef> tableRefs,
+ List<TableRef> allTableRefs,
boolean doRetry) throws SQLException {
+ List<TableRef> tableRefs = filterTableRefs(allTableRefs);
String infoString = getInfoString(conn.getTenantId(), tableRefs);
try (Admin admin = conn.getQueryServices().getAdmin()) {
// get all live region servers
@@ -198,4 +204,16 @@ public class ValidateLastDDLTimestampUtil {
builder.setTableName(ByteStringer.wrap(tableName.getBytes()));
builder.setLastDDLTimestamp(lastDDLTimestamp);
}
+
+ /**
+ * Filter out any TableRefs which are not tables, views or indexes.
+ * @param tableRefs
+ * @return
+ */
+ private static List<TableRef> filterTableRefs(List<TableRef> tableRefs) {
+ List<TableRef> filteredTableRefs = tableRefs.stream()
+ .filter(tableRef -> ALLOWED_PTABLE_TYPES.contains(tableRef.getTable().getType()))
+ .collect(Collectors.toList());
+ return filteredTableRefs;
+ }
}