nk1506 commented on code in PR #9432:
URL: https://github.com/apache/iceberg/pull/9432#discussion_r1445921148
##########
hive-metastore/src/main/java/org/apache/iceberg/hive/MetastoreUtil.java:
##########
@@ -72,6 +73,23 @@ public static void alterTable(
env.putAll(extraEnv);
env.put(StatsSetupConst.DO_NOT_UPDATE_STATS, StatsSetupConst.TRUE);
- ALTER_TABLE.invoke(client, databaseName, tblName, table, new
EnvironmentContext(env));
+ try {
+ ALTER_TABLE.invoke(client, databaseName, tblName, table, new
EnvironmentContext(env));
+ } catch (RuntimeException e) {
Review Comment:
Why not unwrap RTE with both `MetaException` as well as
`InvalidOperationException` and translate to
`org.apache.hadoop.hive.metastore.api.AlreadyExistsException` . Since all the
callers of `alterTable` is already handling
`org.apache.hadoop.hive.metastore.api.AlreadyExistsException`.
I am thinking something like this:
```
catch (RuntimeException e) {
// MetaException would be wrapped into RuntimeException during
reflection
if (e.getCause() instanceof MetaException) {
throw (MetaException) e.getCause();
}
// InvalidOperationException would be wrapped into RuntimeException
during reflection, as
// java.lang.RuntimeException:InvalidOperationException(message:new
table <> already exists)
if (e.getCause() instanceof InvalidOperationException
&& e.getCause().getMessage() != null
&& e.getCause()
.getMessage()
.contains(
String.format(
"new table %s.%s already exists",
table.getDbName(), table.getTableName()))) {
throw new AlreadyExistsException(
String.format("Table already exists: %s.%s",
table.getDbName(), table.getTableName()));
}
throw e;
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]