From 054723a24227799b89e6b4eb9cfb5dab8d55e38e Mon Sep 17 00:00:00 2001 From: Xiaobing Zhou Date: Mon, 2 Jun 2014 22:49:06 -0700 Subject: [PATCH] HIVE-7167[apache-hive-branch-0.13]: Hive Metastore fails to start with SQLServerException --- hcatalog/core/.gitignore | 1 + .../hadoop/hive/metastore/HiveMetaStore.java | 40 ++++++++++++++++++++-- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/hcatalog/core/.gitignore b/hcatalog/core/.gitignore index 0a7a9c5..0d84604 100644 --- a/hcatalog/core/.gitignore +++ b/hcatalog/core/.gitignore @@ -1 +1,2 @@ mapred +/bin diff --git a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java index a6afd8c..c57a6e0 100644 --- a/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java +++ b/metastore/src/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java @@ -47,6 +47,8 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Pattern; +import javax.jdo.JDOException; + import org.apache.commons.cli.OptionBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -521,18 +523,36 @@ private void createDefaultDB() throws MetaException { } try { createDefaultDB_core(getMS()); + } catch (JDOException e) { + LOG.warn("Retrying creating default database after error: " + e.getMessage(), e); + try { + createDefaultDB_core(getMS()); + } catch (InvalidObjectException e1) { + throw new MetaException(e1.getMessage()); + } } catch (InvalidObjectException e) { throw new MetaException(e.getMessage()); - } catch (MetaException e) { - throw e; } catch (Exception e) { assert (e instanceof RuntimeException); throw (RuntimeException) e; } } - + /** + * create default roles if they don't exist + * + * @throws MetaException + */ private void createDefaultRoles() throws MetaException { + try { + createDefaultRoles_core(); + } catch (JDOException e) { + LOG.warn("Retrying creating default roles after error: " + e.getMessage(), e); + createDefaultRoles_core(); + } + } + + private void createDefaultRoles_core() throws MetaException { if(defaultRolesCreated) { LOG.debug("Admin role already created previously."); @@ -576,7 +596,21 @@ private void createDefaultRoles() throws MetaException { defaultRolesCreated = true; } + /** + * add admin users if they don't exist + * + * @throws MetaException + */ private void addAdminUsers() throws MetaException { + try { + addAdminUsers_core(); + } catch (JDOException e) { + LOG.warn("Retrying adding admin users after error: " + e.getMessage(), e); + addAdminUsers_core(); + } + } + + private void addAdminUsers_core() throws MetaException { if(adminUsersAdded) { LOG.debug("Admin users already added."); -- 1.8.5.2 (Apple Git-48)