Palash Chauhan created PHOENIX-7284: ---------------------------------------
Summary: Refactor TransformTool cutover to be done through MetadataEndpointImpl RPC Key: PHOENIX-7284 URL: https://issues.apache.org/jira/browse/PHOENIX-7284 Project: Phoenix Issue Type: Bug Reporter: Palash Chauhan During online data format change, TransformMonitorTask performs a cutover where we switch from using old physical table for reads and writes to the new physical table for reads and writes. This is done using an [UPSERT query|https://github.com/apache/phoenix/blob/master/phoenix-core-server/src/main/java/org/apache/phoenix/schema/transform/Transform.java#L140-L145] into SYSTEM.CATALOG. {code:java} String changeTable = String.format("UPSERT INTO SYSTEM.CATALOG " + "(TENANT_ID, TABLE_SCHEM, TABLE_NAME, PHYSICAL_TABLE_NAME %s ) " + "VALUES(?, ?, ?, ? %s)", columnNames.size() > 0 ? "," + String.join(",", columnNames) : "", columnNames.size() > 0 ? "," + QueryUtil.generateInListParams(columnValues.size()) : ""); LOGGER.info("About to do cutover via " + changeTable); {code} If clients are using [PHOENIX-6883|https://issues.apache.org/jira/browse/PHOENIX-6883], they will never be able to learn about this change of physical table for the logical table. We can refactor the cutover logic to be implemented as an RPC in MetadataEndpointImpl where we can take a lock on the table, update LAST_DDL_TIMESTAMP and invalidate cache entries on all region servers. This way all clients will be able to learn about this change. -- This message was sent by Atlassian Jira (v8.20.10#820010)