[ https://issues.apache.org/jira/browse/HIVE-25648?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
LiuJun reassigned HIVE-25648: ----------------------------- Assignee: LiuJun > HiveMetaHook not work well in HiveMetaStoreClient when commitCreateTable > table failed! > -------------------------------------------------------------------------------------- > > Key: HIVE-25648 > URL: https://issues.apache.org/jira/browse/HIVE-25648 > Project: Hive > Issue Type: Bug > Components: API, Hooks, Standalone Metastore > Affects Versions: 3.1.2 > Reporter: LiuJun > Assignee: LiuJun > Priority: Major > > {code:java} > // source code in HiveMetaStoreClient.java -- createTable func > public void createTable(Table tbl, EnvironmentContext envContext) throws > AlreadyExistsException, > InvalidObjectException, MetaException, NoSuchObjectException, > TException { > if (!tbl.isSetCatName()) { > tbl.setCatName(getDefaultCatalog(conf)); > } > HiveMetaHook hook = getHook(tbl); > if (hook != null) { > hook.preCreateTable(tbl); > } > boolean success = false; > try { > // Subclasses can override this step (for example, for temporary tables) > create_table_with_environment_context(tbl, envContext); *//create > metadata record* > if (hook != null) { > hook.commitCreateTable(tbl); *//create table in external catalog* > } > success = true; > } > finally { > if (!success && (hook != null)) { > try { > * // roll back from external catalog but without roll back from hive meta* > hook.rollbackCreateTable(tbl); > } catch (Exception e){ > LOG.error("Create rollback failed with", e); > } > } > } > } > {code} > Accoriding to the source code above, when implementing hivemetastore's > HiveMetaHook to create external catalog tables(may be hbase),firstly create > meta records to the database such as pg, then call the commitCreateTable > function to create table in hbase. Here comes the question: What if exception > thrown when creating the real table in hbase, because meta data has been > created so it is not in sync between Hive's metastore and hbase. > I think it is necessary to rollback metadata from hivemetastore when > failed to create table in external catalog by calling commitCreateTable, so > that we can keep external catalog in sync with Hive's metastore. > Please let me know if my idea is correct or I had an misunderstanding on > how to use the HiveMetaHook mechanism correctly! -- This message was sent by Atlassian Jira (v8.20.1#820001)