Repository: hive
Updated Branches:
  refs/heads/branch-3 6ddfa8232 -> 9e10efc43


HIVE-17840: HiveMetaStore eats exception if transactionalListeners.notifyEvent 
fail (Sankar Hariappan, reviewed by Mahesh Kumar Behera, Daniel Dai)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9e10efc4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9e10efc4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9e10efc4

Branch: refs/heads/branch-3
Commit: 9e10efc4367108ba31826000b3dc01396d5f87d5
Parents: 6ddfa82
Author: Sankar Hariappan <sank...@apache.org>
Authored: Tue Jul 3 10:19:43 2018 +0530
Committer: Sankar Hariappan <sank...@apache.org>
Committed: Tue Jul 3 10:19:43 2018 +0530

----------------------------------------------------------------------
 .../hive/hcatalog/listener/DummyRawStoreFailEvent.java       | 2 +-
 .../java/org/apache/hadoop/hive/metastore/ObjectStore.java   | 7 ++++---
 .../main/java/org/apache/hadoop/hive/metastore/RawStore.java | 3 ++-
 .../org/apache/hadoop/hive/metastore/cache/CachedStore.java  | 2 +-
 .../hadoop/hive/metastore/DummyRawStoreControlledCommit.java | 2 +-
 .../hadoop/hive/metastore/DummyRawStoreForJdoConnection.java | 2 +-
 .../org/apache/hadoop/hive/metastore/TestObjectStore.java    | 8 ++++----
 7 files changed, 14 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
----------------------------------------------------------------------
diff --git 
a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
 
b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
index ff97522..7b8c4a7 100644
--- 
a/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
+++ 
b/itests/hcatalog-unit/src/test/java/org/apache/hive/hcatalog/listener/DummyRawStoreFailEvent.java
@@ -859,7 +859,7 @@ public class DummyRawStoreFailEvent implements RawStore, 
Configurable {
   }
 
   @Override
-  public void addNotificationEvent(NotificationEvent event) {
+  public void addNotificationEvent(NotificationEvent event) throws 
MetaException {
     objectStore.addNotificationEvent(event);
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
index fdadf12..5cdbbfc 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/ObjectStore.java
@@ -9547,7 +9547,7 @@ public class ObjectStore implements RawStore, 
Configurable {
   }
 
   @Override
-  public void addNotificationEvent(NotificationEvent entry) {
+  public void addNotificationEvent(NotificationEvent entry) throws 
MetaException {
     boolean commited = false;
     Query query = null;
     try {
@@ -9571,8 +9571,9 @@ public class ObjectStore implements RawStore, 
Configurable {
       }
       pm.makePersistent(translateThriftToDb(entry));
       commited = commitTransaction();
-    } catch (Exception e) {
-      LOG.error("couldnot get lock for update", e);
+    } catch (MetaException e) {
+      LOG.error("Couldn't get lock for update", e);
+      throw e;
     } finally {
       rollbackAndCleanup(commited, query);
     }

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
index f350aa9..a78d51b 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/RawStore.java
@@ -1178,8 +1178,9 @@ public interface RawStore extends Configurable {
   /**
    * Add a notification entry.  This should only be called from inside the 
metastore
    * @param event the notification to add
+   * @throws MetaException error accessing RDBMS
    */
-  void addNotificationEvent(NotificationEvent event);
+  void addNotificationEvent(NotificationEvent event) throws MetaException;
 
   /**
    * Remove older notification events.

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
index d9356b8..5a8b564 100644
--- 
a/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
+++ 
b/standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/cache/CachedStore.java
@@ -2018,7 +2018,7 @@ public class CachedStore implements RawStore, 
Configurable {
   }
 
   @Override
-  public void addNotificationEvent(NotificationEvent event) {
+  public void addNotificationEvent(NotificationEvent event) throws 
MetaException {
     rawStore.addNotificationEvent(event);
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
index 8c3ada3..9d50b25 100644
--- 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
+++ 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreControlledCommit.java
@@ -811,7 +811,7 @@ public class DummyRawStoreControlledCommit implements 
RawStore, Configurable {
   }
 
   @Override
-  public void addNotificationEvent(NotificationEvent event) {
+  public void addNotificationEvent(NotificationEvent event) throws 
MetaException {
     objectStore.addNotificationEvent(event);
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
index f98e8de..7e15292 100644
--- 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
+++ 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/DummyRawStoreForJdoConnection.java
@@ -816,7 +816,7 @@ public class DummyRawStoreForJdoConnection implements 
RawStore {
   }
 
   @Override
-  public void addNotificationEvent(NotificationEvent event) {
+  public void addNotificationEvent(NotificationEvent event) throws 
MetaException {
 
   }
 

http://git-wip-us.apache.org/repos/asf/hive/blob/9e10efc4/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
----------------------------------------------------------------------
diff --git 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
index 9912213..ac35882 100644
--- 
a/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
+++ 
b/standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestObjectStore.java
@@ -519,7 +519,7 @@ public class TestObjectStore {
    */
   // TODO MS-SPLIT uncomment once we move EventMessage over
   @Test
-  public void testNotificationOps() throws InterruptedException {
+  public void testNotificationOps() throws InterruptedException, MetaException 
{
     final int NO_EVENT_ID = 0;
     final int FIRST_EVENT_ID = 1;
     final int SECOND_EVENT_ID = 2;
@@ -571,7 +571,7 @@ public class TestObjectStore {
           + " 
https://db.apache.org/derby/docs/10.10/devguide/cdevconcepts842385.html";
   )
   @Test
-  public void testConcurrentAddNotifications() throws ExecutionException, 
InterruptedException {
+  public void testConcurrentAddNotifications() throws ExecutionException, 
InterruptedException, MetaException {
 
     final int NUM_THREADS = 10;
     CyclicBarrier cyclicBarrier = new CyclicBarrier(NUM_THREADS,
@@ -620,10 +620,10 @@ public class TestObjectStore {
 
             try {
               cyclicBarrier.await();
-            } catch (InterruptedException | BrokenBarrierException e) {
+              store.addNotificationEvent(dbEvent);
+            } catch (InterruptedException | BrokenBarrierException | 
MetaException e) {
               throw new RuntimeException(e);
             }
-            store.addNotificationEvent(dbEvent);
             System.out.println("FINISH NOTIFICATION");
           });
     }

Reply via email to