From 0596c9fc3edcd4fbf9dae5a0bedf31e99cabc930 Mon Sep 17 00:00:00 2001
From: kevalbhatt <kbhatt@apache.org>
Date: Fri, 9 Sep 2016 22:15:05 +0530
Subject: [PATCH] ATLAS-1160 Update Atlas hive hook to read configuration from atlas-application.properties instead of hive-site.xml (mneethiraj via kevalbhatt)

---
 addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java | 51 +++++++++++++++++++++++++++------------------------
 release-log.txt                                                           |  1 +
 2 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
index 14359c5..fdd0199 100755
--- a/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
+++ b/addons/hive-bridge/src/main/java/org/apache/atlas/hive/hook/HiveHook.java
@@ -97,7 +97,7 @@ public class HiveHook extends AtlasHook implements ExecuteWithHookContext {
     // wait time determines how long we wait before we exit the jvm on
     // shutdown. Pending requests after that will not be sent.
     private static final int WAIT_TIME = 3;
-    private static ExecutorService executor;
+    private static ExecutorService executor = null;
 
     private static final int minThreadsDefault = 1;
     private static final int maxThreadsDefault = 5;
@@ -110,28 +110,32 @@ public class HiveHook extends AtlasHook implements ExecuteWithHookContext {
         try {
             // initialize the async facility to process hook calls. We don't
             // want to do this inline since it adds plenty of overhead for the query.
-            int minThreads = atlasProperties.getInt(MIN_THREADS, minThreadsDefault);
-            int maxThreads = atlasProperties.getInt(MAX_THREADS, maxThreadsDefault);
-            long keepAliveTime = atlasProperties.getLong(KEEP_ALIVE_TIME, keepAliveTimeDefault);
-            int queueSize = atlasProperties.getInt(QUEUE_SIZE, queueSizeDefault);
-
-            executor = new ThreadPoolExecutor(minThreads, maxThreads, keepAliveTime, TimeUnit.MILLISECONDS,
-                new LinkedBlockingQueue<Runnable>(queueSize),
-                new ThreadFactoryBuilder().setNameFormat("Atlas Logger %d").build());
-
-            Runtime.getRuntime().addShutdownHook(new Thread() {
-                @Override
-                public void run() {
-                    try {
-                        executor.shutdown();
-                        executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS);
-                        executor = null;
-                    } catch (InterruptedException ie) {
-                        LOG.info("Interrupt received in shutdown.");
+            boolean isSync = atlasProperties.getBoolean(CONF_SYNC, Boolean.FALSE);
+
+            if(!isSync) {
+                int minThreads = atlasProperties.getInt(MIN_THREADS, minThreadsDefault);
+                int maxThreads = atlasProperties.getInt(MAX_THREADS, maxThreadsDefault);
+                long keepAliveTime = atlasProperties.getLong(KEEP_ALIVE_TIME, keepAliveTimeDefault);
+                int queueSize = atlasProperties.getInt(QUEUE_SIZE, queueSizeDefault);
+
+                executor = new ThreadPoolExecutor(minThreads, maxThreads, keepAliveTime, TimeUnit.MILLISECONDS,
+                        new LinkedBlockingQueue<Runnable>(queueSize),
+                        new ThreadFactoryBuilder().setNameFormat("Atlas Logger %d").build());
+
+                Runtime.getRuntime().addShutdownHook(new Thread() {
+                    @Override
+                    public void run() {
+                        try {
+                            executor.shutdown();
+                            executor.awaitTermination(WAIT_TIME, TimeUnit.SECONDS);
+                            executor = null;
+                        } catch (InterruptedException ie) {
+                            LOG.info("Interrupt received in shutdown.");
+                        }
+                        // shutdown client
                     }
-                    // shutdown client
-                }
-            });
+                });
+            }
 
             setupOperationMap();
         } catch (Exception e) {
@@ -174,8 +178,7 @@ public class HiveHook extends AtlasHook implements ExecuteWithHookContext {
             event.setQueryStartTime(hookContext.getQueryPlan().getQueryStartTime());
             event.setQueryType(hookContext.getQueryPlan().getQueryPlan().getQueryType());
 
-            boolean sync = conf.get(CONF_SYNC, "false").equals("true");
-            if (sync) {
+            if (executor == null) {
                 fireAndForget(event);
             } else {
                 executor.submit(new Runnable() {
diff --git a/release-log.txt b/release-log.txt
index 10765f9..8bbed03 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -10,6 +10,7 @@ ATLAS-1060 Add composite indexes for exact match performance improvements for al
 ATLAS-1127 Modify creation and modification timestamps to Date instead of Long(sumasai)
 
 ALL CHANGES:
+ATLAS-1160 Update Atlas hive hook to read configuration from atlas-application.properties instead of hive-site.xml (mneethiraj via kevalbhatt)
 ATLAS-1154 Errors in Eclipse with web.xml (davidrad via dkantor)
 ATLAS-1147 UI: column name doesn't show up in schema tab for hive table (Kalyanikashikar via kevalbhatt)
 ATLAS-772 Ordering of columns is not maintained in schema query response, where as hive table entity response maintains the ordering (sarath.kum4r@gmail.com via kevalbhatt)
--
libgit2 0.27.1