[
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)