This is an automated email from the ASF dual-hosted git repository.

prasanthj pushed a commit to branch branch-3
in repository https://gitbox.apache.org/repos/asf/hive.git

commit 096627cd0fb9a87326dbc968cda0907759e3971a
Author: sergey <ser...@apache.org>
AuthorDate: Mon Jul 30 12:16:47 2018 -0700

    HIVE-19568 : Active/Passive HS2 HA: Disallow direct connection to passive 
HS2 instance (Sergey Shelukhin, reviewed by Prasanth Jayachandran)
---
 .../org/apache/hive/jdbc/TestActivePassiveHA.java  | 64 ++++++++++++++++++++--
 .../hive/service/cli/session/TestQueryDisplay.java |  2 +-
 .../java/org/apache/hive/jdbc/miniHS2/MiniHS2.java |  4 ++
 .../org/apache/hive/service/cli/CLIService.java    | 11 ++--
 .../hive/service/cli/session/SessionManager.java   | 48 +++++++++++++++-
 .../cli/thrift/EmbeddedThriftBinaryCLIService.java |  3 +-
 .../apache/hive/service/server/HiveServer2.java    | 37 +++++++------
 .../hive/service/auth/TestPlainSaslHelper.java     |  2 +-
 .../cli/TestCLIServiceConnectionLimits.java        |  2 +-
 .../hive/service/cli/TestCLIServiceRestore.java    |  2 +-
 .../cli/TestRetryingThriftCLIServiceClient.java    |  2 +-
 .../cli/session/TestPluggableHiveSessionImpl.java  |  4 +-
 .../cli/session/TestSessionGlobalInitFile.java     |  2 +-
 .../cli/session/TestSessionManagerMetrics.java     |  2 +-
 14 files changed, 147 insertions(+), 38 deletions(-)

diff --git 
a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestActivePassiveHA.java 
b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestActivePassiveHA.java
index 4055f13..bf24ebf 100644
--- 
a/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestActivePassiveHA.java
+++ 
b/itests/hive-unit/src/test/java/org/apache/hive/jdbc/TestActivePassiveHA.java
@@ -43,7 +43,9 @@ import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.registry.impl.ZkRegistryBase;
 import org.apache.hive.http.security.PamAuthenticator;
+import org.apache.hive.jdbc.Utils.JdbcConnectionParams;
 import org.apache.hive.jdbc.miniHS2.MiniHS2;
+import org.apache.hive.service.cli.HiveSQLException;
 import org.apache.hive.service.server.HS2ActivePassiveHARegistry;
 import org.apache.hive.service.server.HS2ActivePassiveHARegistryClient;
 import org.apache.hive.service.server.HiveServer2Instance;
@@ -383,11 +385,7 @@ public class TestActivePassiveHA {
       assertEquals("false", sendGet(url2, true, true));
       assertEquals(false, miniHS2_2.isLeader());
     } finally {
-      // revert configs to not affect other tests
-      unsetPamConfs(hiveConf1);
-      unsetPamConfs(hiveConf2);
-      hiveConf1.unset(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS.varname);
-      hiveConf2.unset(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS.varname);
+      resetFailoverConfs();
     }
   }
 
@@ -427,6 +425,62 @@ public class TestActivePassiveHA {
   }
 
   @Test(timeout = 60000)
+  public void testNoConnectionOnPassive() throws Exception {
+    hiveConf1.setBoolVar(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS, true);
+    hiveConf2.setBoolVar(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS, true);
+    setPamConfs(hiveConf1);
+    setPamConfs(hiveConf2);
+    try {
+      PamAuthenticator pamAuthenticator1 = new 
TestHS2HttpServerPam.TestPamAuthenticator(hiveConf1);
+      PamAuthenticator pamAuthenticator2 = new 
TestHS2HttpServerPam.TestPamAuthenticator(hiveConf2);
+      String instanceId1 = UUID.randomUUID().toString();
+      miniHS2_1.setPamAuthenticator(pamAuthenticator1);
+      miniHS2_1.start(getSecureConfOverlay(instanceId1));
+      String instanceId2 = UUID.randomUUID().toString();
+      Map<String, String> confOverlay = getSecureConfOverlay(instanceId2);
+      miniHS2_2.setPamAuthenticator(pamAuthenticator2);
+      miniHS2_2.start(confOverlay);
+      String url1 = "http://localhost:"; + 
hiveConf1.get(ConfVars.HIVE_SERVER2_WEBUI_PORT.varname) + "/leader";
+      assertEquals(true, miniHS2_1.getIsLeaderTestFuture().get());
+      assertEquals(true, miniHS2_1.isLeader());
+
+      // Don't get urls from ZK, it will actually be a service discovery URL 
that we don't want.
+      String hs1Url = "jdbc:hive2://" + miniHS2_1.getHost() + ":" + 
miniHS2_1.getBinaryPort();
+      Connection hs2Conn = getConnection(hs1Url, 
System.getProperty("user.name")); // Should work.
+      hs2Conn.close();
+
+      String resp = sendDelete(url1, true);
+      assertTrue(resp, resp.contains("Failover successful!"));
+      // wait for failover to close sessions
+      while (miniHS2_1.getOpenSessionsCount() != 0) {
+        Thread.sleep(100);
+      }
+
+      assertEquals(true, miniHS2_2.getIsLeaderTestFuture().get());
+      assertEquals(true, miniHS2_2.isLeader());
+
+      try {
+        hs2Conn = getConnection(hs1Url, System.getProperty("user.name"));
+        fail("Should throw");
+      } catch (Exception e) {
+        if (!e.getMessage().contains("Cannot open sessions on an inactive 
HS2")) {
+          throw e;
+        }
+      }
+    } finally {
+      resetFailoverConfs();
+    }
+  }
+
+  private void resetFailoverConfs() {
+    // revert configs to not affect other tests
+    unsetPamConfs(hiveConf1);
+    unsetPamConfs(hiveConf2);
+    hiveConf1.unset(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS.varname);
+    hiveConf2.unset(ConfVars.HIVE_SERVER2_WEBUI_ENABLE_CORS.varname);
+  }
+
+  @Test(timeout = 60000)
   public void testClientConnectionsOnFailover() throws Exception {
     setPamConfs(hiveConf1);
     setPamConfs(hiveConf2);
diff --git 
a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
 
b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
index b51523f..28948a9 100644
--- 
a/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
+++ 
b/itests/hive-unit/src/test/java/org/apache/hive/service/cli/session/TestQueryDisplay.java
@@ -48,7 +48,7 @@ public class TestQueryDisplay {
     conf = new HiveConf();
     conf.set("hive.support.concurrency", "false");
 
-    sessionManager = new SessionManager(null);
+    sessionManager = new SessionManager(null, true);
     sessionManager.init(conf);
   }
 
diff --git 
a/itests/util/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java 
b/itests/util/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java
index 6eaddab..faf404d 100644
--- a/itests/util/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java
+++ b/itests/util/src/main/java/org/apache/hive/jdbc/miniHS2/MiniHS2.java
@@ -613,6 +613,10 @@ public class MiniHS2 extends AbstractHiveService {
          */
         sessionHandle = hs2Client.openSession("foo", "bar", sessionConf);
       } catch (Exception e) {
+        if (e.getMessage().contains("Cannot open sessions on an inactive 
HS2")) {
+          // Passive HS2 has started. TODO: seems fragile
+          return;
+        }
         // service not started yet
         continue;
       }
diff --git a/service/src/java/org/apache/hive/service/cli/CLIService.java 
b/service/src/java/org/apache/hive/service/cli/CLIService.java
index 95635ee..bc25d82 100644
--- a/service/src/java/org/apache/hive/service/cli/CLIService.java
+++ b/service/src/java/org/apache/hive/service/cli/CLIService.java
@@ -72,16 +72,19 @@ public class CLIService extends CompositeService implements 
ICLIService {
   // The HiveServer2 instance running this service
   private final HiveServer2 hiveServer2;
   private int defaultFetchRows;
+  // This is necessary for tests and embedded mode, where HS2 init is not 
executed.
+  private boolean allowSessionsInitial;
 
-  public CLIService(HiveServer2 hiveServer2) {
+  public CLIService(HiveServer2 hiveServer2, boolean allowSessions) {
     super(CLIService.class.getSimpleName());
     this.hiveServer2 = hiveServer2;
+    this.allowSessionsInitial = allowSessions;
   }
 
   @Override
   public synchronized void init(HiveConf hiveConf) {
     setHiveConf(hiveConf);
-    sessionManager = new SessionManager(hiveServer2);
+    sessionManager = new SessionManager(hiveServer2, allowSessionsInitial);
     defaultFetchRows = 
hiveConf.getIntVar(ConfVars.HIVE_SERVER2_THRIFT_RESULTSET_DEFAULT_FETCH_SIZE);
     addService(sessionManager);
     //  If the hadoop cluster is secure, do a kerberos login for the service 
from the keytab
@@ -450,7 +453,7 @@ public class CLIService extends CompositeService implements 
ICLIService {
           HiveConf.ConfVars.HIVE_SERVER2_LONG_POLLING_TIMEOUT, 
TimeUnit.MILLISECONDS);
 
       final long elapsed = System.currentTimeMillis() - 
operation.getBeginTime();
-      // A step function to increase the polling timeout by 500 ms every 10 
sec, 
+      // A step function to increase the polling timeout by 500 ms every 10 
sec,
       // starting from 500 ms up to HIVE_SERVER2_LONG_POLLING_TIMEOUT
       final long timeout = Math.min(maxTimeout, (elapsed / 
TimeUnit.SECONDS.toMillis(10) + 1) * 500);
 
@@ -489,7 +492,7 @@ public class CLIService extends CompositeService implements 
ICLIService {
         || !OperationType.EXECUTE_STATEMENT.equals(operation.getType())) {
       return new JobProgressUpdate(ProgressMonitor.NULL);
     }
-    
+
     SessionState sessionState = operation.getParentSession().getSessionState();
     long startTime = System.nanoTime();
     int timeOutMs = 8;
diff --git 
a/service/src/java/org/apache/hive/service/cli/session/SessionManager.java 
b/service/src/java/org/apache/hive/service/cli/session/SessionManager.java
index e964982..694a691 100644
--- a/service/src/java/org/apache/hive/service/cli/session/SessionManager.java
+++ b/service/src/java/org/apache/hive/service/cli/session/SessionManager.java
@@ -37,6 +37,7 @@ import java.util.concurrent.atomic.LongAdder;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
+
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.hive.common.metrics.common.Metrics;
 import org.apache.hadoop.hive.common.metrics.common.MetricsConstant;
@@ -63,9 +64,16 @@ import org.slf4j.LoggerFactory;
  */
 public class SessionManager extends CompositeService {
 
+  private static final String INACTIVE_ERROR_MESSAGE =
+      "Cannot open sessions on an inactive HS2 instance; use service discovery 
to connect";
   public static final String HIVERCFILE = ".hiverc";
   private static final Logger LOG = 
LoggerFactory.getLogger(CompositeService.class);
   private HiveConf hiveConf;
+  /** The lock that synchronizes the allowSessions flag and handleToSession 
map.
+      Active-passive HA first disables the connections, then closes existing 
one, making sure
+      there are no races between these two processes. */
+  private final Object sessionAddLock = new Object();
+  private boolean allowSessions;
   private final Map<SessionHandle, HiveSession> handleToSession =
       new ConcurrentHashMap<SessionHandle, HiveSession>();
   private final Map<String, LongAdder> connectionsCount = new 
ConcurrentHashMap<>();
@@ -87,9 +95,10 @@ public class SessionManager extends CompositeService {
   private String sessionImplWithUGIclassName;
   private String sessionImplclassName;
 
-  public SessionManager(HiveServer2 hiveServer2) {
+  public SessionManager(HiveServer2 hiveServer2, boolean allowSessions) {
     super(SessionManager.class.getSimpleName());
     this.hiveServer2 = hiveServer2;
+    this.allowSessions = allowSessions;
   }
 
   @Override
@@ -373,10 +382,18 @@ public class SessionManager extends CompositeService {
     return createSession(null, protocol, username, password, ipAddress, 
sessionConf,
       withImpersonation, delegationToken).getSessionHandle();
   }
+
   public HiveSession createSession(SessionHandle sessionHandle, 
TProtocolVersion protocol, String username,
     String password, String ipAddress, Map<String, String> sessionConf, 
boolean withImpersonation,
     String delegationToken)
     throws HiveSQLException {
+    // Check the flag opportunistically.
+    synchronized (sessionAddLock) {
+      if (!allowSessions) {
+        throw new HiveSQLException(INACTIVE_ERROR_MESSAGE);
+      }
+    }
+    // Do the expensive operations outside of any locks; we'll recheck the 
flag again at the end.
 
     // if client proxies connection, use forwarded ip-addresses instead of 
just the gateway
     final List<String> forwardedAddresses = getForwardedAddresses();
@@ -448,8 +465,23 @@ public class SessionManager extends CompositeService {
       session = null;
       throw new HiveSQLException("Failed to execute session hooks: " + 
e.getMessage(), e);
     }
-    handleToSession.put(session.getSessionHandle(), session);
-    LOG.info("Session opened, " + session.getSessionHandle() + ", current 
sessions:" + getOpenSessionCount());
+    boolean isAdded = false;
+    synchronized (sessionAddLock) {
+      if (allowSessions) {
+        handleToSession.put(session.getSessionHandle(), session);
+        isAdded = true;
+      }
+    }
+    if (!isAdded) {
+      try {
+        closeSessionInternal(session);
+      } catch (Exception e) {
+        LOG.warn("Failed to close the session opened during an HA state 
change; ignoring", e);
+      }
+      throw new HiveSQLException(INACTIVE_ERROR_MESSAGE);
+    }
+    LOG.info("Session opened, " + session.getSessionHandle()
+        + ", current sessions:" + getOpenSessionCount());
     return session;
   }
 
@@ -548,6 +580,10 @@ public class SessionManager extends CompositeService {
       throw new HiveSQLException("Session does not exist: " + sessionHandle);
     }
     LOG.info("Session closed, " + sessionHandle + ", current sessions:" + 
getOpenSessionCount());
+    closeSessionInternal(session);
+  }
+
+  private void closeSessionInternal(HiveSession session) throws 
HiveSQLException {
     try {
       session.close();
     } finally {
@@ -683,5 +719,11 @@ public class SessionManager extends CompositeService {
     }
     return hiveServer2.getServerHost();
   }
+
+  public void allowSessions(boolean b) {
+    synchronized (sessionAddLock) {
+      this.allowSessions = b;
+    }
+  }
 }
 
diff --git 
a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java
 
b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java
index 8b61874..7ab7aee 100644
--- 
a/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java
+++ 
b/service/src/java/org/apache/hive/service/cli/thrift/EmbeddedThriftBinaryCLIService.java
@@ -32,7 +32,8 @@ import org.apache.hive.service.cli.ICLIService;
 public class EmbeddedThriftBinaryCLIService extends ThriftBinaryCLIService {
 
   public EmbeddedThriftBinaryCLIService() {
-    super(new CLIService(null), null);
+    // The non-test path that allows connections for the embedded service.
+    super(new CLIService(null, true), null);
     isEmbedded = true;
     HiveConf.setLoadHiveServer2Config(true);
   }
diff --git a/service/src/java/org/apache/hive/service/server/HiveServer2.java 
b/service/src/java/org/apache/hive/service/server/HiveServer2.java
index f1cd7b9..e72ab59 100644
--- a/service/src/java/org/apache/hive/service/server/HiveServer2.java
+++ b/service/src/java/org/apache/hive/service/server/HiveServer2.java
@@ -18,14 +18,9 @@
 
 package org.apache.hive.service.server;
 
-import java.io.BufferedReader;
 import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
-import java.util.Base64;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -212,7 +207,8 @@ public class HiveServer2 extends CompositeService {
       LOG.warn("Could not initiate the HiveServer2 Metrics system.  Metrics 
may not be reported.", t);
     }
 
-    cliService = new CLIService(this);
+    // Do not allow sessions - leader election or initialization will allow 
them for an active HS2.
+    cliService = new CLIService(this, false);
     addService(cliService);
     final HiveServer2 hiveServer2 = this;
     Runnable oomHook = new Runnable() {
@@ -707,6 +703,9 @@ public class HiveServer2 extends CompositeService {
     // If we're supporting dynamic service discovery, we'll add the service 
uri for this
     // HiveServer2 instance to Zookeeper as a znode.
     HiveConf hiveConf = getHiveConf();
+    if (!serviceDiscovery || !activePassiveHA) {
+      allowClientSessions();
+    }
     if (serviceDiscovery) {
       try {
         if (activePassiveHA) {
@@ -774,6 +773,7 @@ public class HiveServer2 extends CompositeService {
       }
       hiveServer2.startOrReconnectTezSessions();
       LOG.info("Started/Reconnected tez sessions.");
+      hiveServer2.allowClientSessions();
 
       // resolve futures used for testing
       if (HiveConf.getBoolVar(hiveServer2.getHiveConf(), 
ConfVars.HIVE_IN_TEST)) {
@@ -786,7 +786,7 @@ public class HiveServer2 extends CompositeService {
     public void notLeader() {
       LOG.info("HS2 instance {} LOST LEADERSHIP. Stopping/Disconnecting tez 
sessions..", hiveServer2.serviceUri);
       hiveServer2.isLeader.set(false);
-      hiveServer2.closeHiveSessions();
+      hiveServer2.closeAndDisallowHiveSessions();
       hiveServer2.stopOrDisconnectTezSessions();
       LOG.info("Stopped/Disconnected tez sessions.");
 
@@ -821,6 +821,10 @@ public class HiveServer2 extends CompositeService {
     initAndStartWorkloadManager(resourcePlan);
   }
 
+  private void allowClientSessions() {
+    cliService.getSessionManager().allowSessions(true);
+  }
+
   private void initAndStartTezSessionPoolManager(final WMFullResourcePlan 
resourcePlan) {
     // starting Tez session pool in start here to let parent session state 
initialize on CliService state, to avoid
     // SessionState.get() return null during createTezDir
@@ -860,17 +864,18 @@ public class HiveServer2 extends CompositeService {
     }
   }
 
-  private void closeHiveSessions() {
+  private void closeAndDisallowHiveSessions() {
     LOG.info("Closing all open hive sessions.");
-    if (cliService != null && 
cliService.getSessionManager().getOpenSessionCount() > 0) {
-      try {
-        for (HiveSession session : 
cliService.getSessionManager().getSessions()) {
-          
cliService.getSessionManager().closeSession(session.getSessionHandle());
-        }
-        LOG.info("Closed all open hive sessions");
-      } catch (HiveSQLException e) {
-        LOG.error("Unable to close all open sessions.", e);
+    if (cliService == null) return;
+    cliService.getSessionManager().allowSessions(false);
+    // No sessions can be opened after the above call. Close the existing ones 
if any.
+    try {
+      for (HiveSession session : cliService.getSessionManager().getSessions()) 
{
+        
cliService.getSessionManager().closeSession(session.getSessionHandle());
       }
+      LOG.info("Closed all open hive sessions");
+    } catch (HiveSQLException e) {
+      LOG.error("Unable to close all open sessions.", e);
     }
   }
 
diff --git 
a/service/src/test/org/apache/hive/service/auth/TestPlainSaslHelper.java 
b/service/src/test/org/apache/hive/service/auth/TestPlainSaslHelper.java
index 14e2832..8bfa7dc 100644
--- a/service/src/test/org/apache/hive/service/auth/TestPlainSaslHelper.java
+++ b/service/src/test/org/apache/hive/service/auth/TestPlainSaslHelper.java
@@ -42,7 +42,7 @@ public class TestPlainSaslHelper extends TestCase {
         hconf.getBoolVar(ConfVars.HIVE_SERVER2_ENABLE_DOAS));
 
 
-    CLIService cliService = new CLIService(null);
+    CLIService cliService = new CLIService(null, true);
     cliService.init(hconf);
     ThriftCLIService tcliService = new ThriftBinaryCLIService(cliService, 
null);
     tcliService.init(hconf);
diff --git 
a/service/src/test/org/apache/hive/service/cli/TestCLIServiceConnectionLimits.java
 
b/service/src/test/org/apache/hive/service/cli/TestCLIServiceConnectionLimits.java
index 5ecea9a..6ce40ec 100644
--- 
a/service/src/test/org/apache/hive/service/cli/TestCLIServiceConnectionLimits.java
+++ 
b/service/src/test/org/apache/hive/service/cli/TestCLIServiceConnectionLimits.java
@@ -329,7 +329,7 @@ public class TestCLIServiceConnectionLimits {
   private CLIService getService(HiveConf conf) {
     conf.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
       
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
-    CLIService service = new CLIService(null);
+    CLIService service = new CLIService(null, true);
     service.init(conf);
     service.start();
     return service;
diff --git 
a/service/src/test/org/apache/hive/service/cli/TestCLIServiceRestore.java 
b/service/src/test/org/apache/hive/service/cli/TestCLIServiceRestore.java
index 6b69d4d..1e0c427 100644
--- a/service/src/test/org/apache/hive/service/cli/TestCLIServiceRestore.java
+++ b/service/src/test/org/apache/hive/service/cli/TestCLIServiceRestore.java
@@ -45,7 +45,7 @@ public class TestCLIServiceRestore {
     HiveConf conf = new HiveConf();
     conf.setVar(HiveConf.ConfVars.HIVE_AUTHORIZATION_MANAGER,
       
"org.apache.hadoop.hive.ql.security.authorization.plugin.sqlstd.SQLStdHiveAuthorizerFactory");
-    CLIService service = new CLIService(null);
+    CLIService service = new CLIService(null, true);
     service.init(conf);
     service.start();
     return service;
diff --git 
a/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java
 
b/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java
index 7bae62d..f3770c2 100644
--- 
a/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java
+++ 
b/service/src/test/org/apache/hive/service/cli/TestRetryingThriftCLIServiceClient.java
@@ -183,7 +183,7 @@ public class TestRetryingThriftCLIServiceClient {
         }
       }
       if (service == null) {
-        service = new CLIService(server);
+        service = new CLIService(server, true);
       }
       RetryingThriftCLIServiceClient.CLIServiceClientWrapper client
         = 
RetryingThriftCLIServiceClientTest.newRetryingCLIServiceClient(hiveConf);
diff --git 
a/service/src/test/org/apache/hive/service/cli/session/TestPluggableHiveSessionImpl.java
 
b/service/src/test/org/apache/hive/service/cli/session/TestPluggableHiveSessionImpl.java
index 90237c0..ef09620 100644
--- 
a/service/src/test/org/apache/hive/service/cli/session/TestPluggableHiveSessionImpl.java
+++ 
b/service/src/test/org/apache/hive/service/cli/session/TestPluggableHiveSessionImpl.java
@@ -42,7 +42,7 @@ public class TestPluggableHiveSessionImpl {
         SampleHiveSessionImpl.class.getName());
     hiveConf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, false);
 
-    CLIService cliService = new CLIService(null);
+    CLIService cliService = new CLIService(null, true);
     cliService.init(hiveConf);
     ThriftBinaryCLIService service = new ThriftBinaryCLIService(cliService, 
null);
     service.init(hiveConf);
@@ -68,7 +68,7 @@ public class TestPluggableHiveSessionImpl {
         SampleHiveSessionImplWithUGI.class.getName());
     hiveConf.setBoolVar(HiveConf.ConfVars.HIVE_SERVER2_ENABLE_DOAS, true);
 
-    CLIService cliService = new CLIService(null);
+    CLIService cliService = new CLIService(null, true);
     cliService.init(hiveConf);
     ThriftBinaryCLIService service = new ThriftBinaryCLIService(cliService, 
null);
     service.init(hiveConf);
diff --git 
a/service/src/test/org/apache/hive/service/cli/session/TestSessionGlobalInitFile.java
 
b/service/src/test/org/apache/hive/service/cli/session/TestSessionGlobalInitFile.java
index af7a72e..9d00ec4 100644
--- 
a/service/src/test/org/apache/hive/service/cli/session/TestSessionGlobalInitFile.java
+++ 
b/service/src/test/org/apache/hive/service/cli/session/TestSessionGlobalInitFile.java
@@ -52,7 +52,7 @@ public class TestSessionGlobalInitFile extends TestCase {
    */
   private class FakeEmbeddedThriftBinaryCLIService extends 
ThriftBinaryCLIService {
     public FakeEmbeddedThriftBinaryCLIService(HiveConf hiveConf) {
-      super(new CLIService(null), null);
+      super(new CLIService(null, true), null);
       isEmbedded = true;
       cliService.init(hiveConf);
       cliService.start();
diff --git 
a/service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java
 
b/service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java
index d954692..5655458 100644
--- 
a/service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java
+++ 
b/service/src/test/org/apache/hive/service/cli/session/TestSessionManagerMetrics.java
@@ -79,7 +79,7 @@ public class TestSessionManagerMetrics {
     conf.setBoolVar(HiveConf.ConfVars.HIVEOPTIMIZEMETADATAQUERIES, false);
     MetricsFactory.init(conf);
 
-    sm = new SessionManager(null);
+    sm = new SessionManager(null, true);
     sm.init(conf);
 
     metrics = (CodahaleMetrics) MetricsFactory.getInstance();

Reply via email to