Quanlong Huang created IMPALA-13983:
---------------------------------------
Summary: Invalidate+AlterTable could overwrite the result of a
concurrent AlterTable
Key: IMPALA-13983
URL: https://issues.apache.org/jira/browse/IMPALA-13983
Project: IMPALA
Issue Type: Bug
Components: Catalog
Reporter: Quanlong Huang
I'm reproducing the issue using the master branch at commit
b19331b3d336f680f67c15b4674e2523288d7e59 with an additional sleep before
sending the alter_table HMS RPC in
[CatalogOpExecutor#applyAlterTable()|https://github.com/apache/impala/blob/b19331b3d336f680f67c15b4674e2523288d7e59/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java#L6731]:
{code:java}
diff --git a/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
b/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
index 4461c03f5..5f5dffb40 100644
--- a/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
+++ b/fe/src/main/java/org/apache/impala/service/CatalogOpExecutor.java
@@ -6728,6 +6728,7 @@ public class CatalogOpExecutor {
MetastoreShim.alterTableWithTransaction(msClient.getHiveClient(),
msTbl, tblTxn);
} else {
try {
+ try {Thread.sleep(20000);} catch (Exception e) {}
msClient.getHiveClient().alter_table(
msTbl.getDbName(), msTbl.getTableName(), msTbl);
} catch (TException e) {{code}
The sleep is added to make the concurrent issue easier to happen.
Steps to reproduce the issue:
{code:sql}
create table tbl (i int);{code}
Run the first AlterTable statement in background:
{code:bash}
impala-shell.sh -q "alter table tbl set tblproperties('k1'='100')" &{code}
Then run another session to submit the Invalidate+AlterTable on the same table,
but setting a new tblproperty:
{code:bash}
impala-shell.sh -q "invalidate metadata tbl; alter table tbl set
tblproperties('k2'='200')"{code}
After both of them finish, describe the table to check the tblproperties.
k1=100 is missing there.
{noformat}
Query: describe formatted tbl
+------------------------------+------------------------------------------------------------+----------------------+
| name | type
| comment |
+------------------------------+------------------------------------------------------------+----------------------+
| # col_name | data_type
| comment |
| | NULL
| NULL |
| i | int
| NULL |
| | NULL
| NULL |
| # Detailed Table Information | NULL
| NULL |
| Database: | default
| NULL |
| OwnerType: | USER
| NULL |
| Owner: | quanlong
| NULL |
| CreateTime: | Tue Apr 22 18:37:00 CST 2025
| NULL |
| LastAccessTime: | UNKNOWN
| NULL |
| Retention: | 0
| NULL |
| Location: | hdfs://localhost:20500/test-warehouse/tbl
| NULL |
| Erasure Coding Policy: | NONE
| NULL |
| Table Type: | EXTERNAL_TABLE
| NULL |
| Table Parameters: | NULL
| NULL |
| | EXTERNAL
| TRUE |
| | OBJCAPABILITIES
| EXTREAD,EXTWRITE |
| | TRANSLATED_TO_EXTERNAL
| TRUE |
| | external.table.purge
| TRUE |
| | k2
| 200 |
| | transient_lastDdlTime
| 1745318281 |
| | NULL
| NULL |
| # Storage Information | NULL
| NULL |
| SerDe Library: |
org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe | NULL
|
| InputFormat: | org.apache.hadoop.mapred.TextInputFormat
| NULL |
| OutputFormat: |
org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat | NULL
|
| Compressed: | No
| NULL |
| Num Buckets: | 0
| NULL |
| Bucket Columns: | []
| NULL |
| Sort Columns: | []
| NULL |
| | NULL
| NULL |
| # Constraints | NULL
| NULL |
+------------------------------+------------------------------------------------------------+----------------------+{noformat}
CC [~csringhofer] , [~MikaelSmith] , [~rizaon]
--
This message was sent by Atlassian Jira
(v8.20.10#820010)