/** Reopens the session that was found to not be running. */ @Override public TezSessionState reopen(TezSessionState sessionState) throws Exception { HiveConf sessionConf = sessionState.getConf(); if (sessionState.getQueueName() != null && sessionConf.get(TezConfiguration.TEZ_QUEUE_NAME) == null) { sessionConf.set(TezConfiguration.TEZ_QUEUE_NAME, sessionState.getQueueName()); } reopenInternal(sessionState); return sessionState; }
/** Reopens the session that was found to not be running. */ public void reopenSession(TezSessionState sessionState, HiveConf conf, String[] additionalFiles, boolean keepTmpDir) throws Exception { HiveConf sessionConf = sessionState.getConf(); if (sessionConf != null && sessionConf.get(TezConfiguration.TEZ_QUEUE_NAME) != null) { // user has explicitly specified queue name conf.set(TezConfiguration.TEZ_QUEUE_NAME, sessionConf.get(TezConfiguration.TEZ_QUEUE_NAME)); } else { // default queue name when the initial session was created if (sessionState.getQueueName() != null) { conf.set(TezConfiguration.TEZ_QUEUE_NAME, sessionState.getQueueName()); } } // TODO: close basically resets the object to a bunch of nulls. // We should ideally not reuse the object because it's pointless and error-prone. sessionState.close(keepTmpDir); // Clean up stuff. sessionState.open(conf, additionalFiles); }
String queueName = session.getQueueName(); String confQueueName = conf.get(TezConfiguration.TEZ_QUEUE_NAME); LOG.info("Current queue name is " + queueName + " incoming queue name is " + confQueueName);
String queueName = session.getQueueName(); String confQueueName = conf.get(TezConfiguration.TEZ_QUEUE_NAME); LOG.info("Current queue name is " + queueName + " incoming queue name is " + confQueueName);
Mockito.when(session.getQueueName()).thenReturn("default"); Mockito.when(session.isDefault()).thenReturn(false); Mockito.when(session.getConf()).thenReturn(conf); assertEquals("default", session.getQueueName()); assertEquals("tezq1", poolManager.getSession(null, conf, false, false).getQueueName()); assertEquals("default", poolManager.getSession(null, conf, false, false).getQueueName()); Mockito.when(session.getQueueName()).thenReturn("tezq1"); poolManager.reopen(session); assertEquals("tezq1", poolManager.getSession(null, conf, false, false).getQueueName()); assertEquals("default", poolManager.getSession(null, conf, false, false).getQueueName()); assertEquals("tezq1", poolManager.getSession(null, conf, false, false).getQueueName()); } catch (Exception e) { e.printStackTrace();
assertEquals("a", sessionState.getQueueName()); poolManager.returnSession(sessionState); assertEquals("a", sessionState.getQueueName()); poolManager.returnSession(sessionState); assertEquals("a", first.getQueueName()); assertEquals("b", second.getQueueName()); poolManager.returnSession(first); poolManager.returnSession(second); TezSessionState third = poolManager.getSession(null, conf, true, false); assertEquals("b", third.getQueueName()); poolManager.returnSession(third); third = poolManager.getSession(null, conf, true, false); assertEquals("b", first.getQueueName()); assertEquals("a", second.getQueueName()); assertEquals("c", third.getQueueName()); assertEquals("c", third.getQueueName()); poolManager.returnSession(first);
@Test(timeout = 10000) public void testQueueName() throws Exception { HiveConf conf = createConf(); MockQam qam = new MockQam(); WorkloadManager wm = new WorkloadManagerForTest("test", conf, 1, qam); wm.start(); // The queue should be ignored. conf.set(TezConfiguration.TEZ_QUEUE_NAME, "test2"); TezSessionState session = wm.getSession(null, mappingInput("user"), conf); assertEquals("test", session.getQueueName()); assertEquals("test", conf.get(TezConfiguration.TEZ_QUEUE_NAME)); session.setQueueName("test2"); session = wm.getSession(session, mappingInput("user"), conf); assertEquals("test", session.getQueueName()); }
@Test public void testSessionPoolThreads() { // Make sure we get a correct number of sessions in each queue and that we don't crash. try { conf.setBoolVar(ConfVars.HIVE_SERVER2_ENABLE_DOAS, false); conf.setVar(ConfVars.HIVE_SERVER2_TEZ_DEFAULT_QUEUES, "0,1,2"); conf.setIntVar(ConfVars.HIVE_SERVER2_TEZ_SESSIONS_PER_DEFAULT_QUEUE, 4); conf.setIntVar(ConfVars.HIVE_SERVER2_TEZ_SESSION_MAX_INIT_THREADS, 16); poolManager = new TestTezSessionPoolManager(); poolManager.setupPool(conf); poolManager.startPool(conf, null); TezSessionState[] sessions = new TezSessionState[12]; int[] queueCounts = new int[3]; for (int i = 0; i < sessions.length; ++i) { sessions[i] = poolManager.getSession(null, conf, true, false); queueCounts[Integer.parseInt(sessions[i].getQueueName())] += 1; } for (int i = 0; i < queueCounts.length; ++i) { assertEquals(4, queueCounts[i]); } for (int i = 0; i < sessions.length; ++i) { poolManager.returnSession(sessions[i]); } } catch (Exception e) { e.printStackTrace(); fail(); } }
public void startPool() throws Exception { this.inited = true; for (int i = 0; i < blockingQueueLength; i++) { HiveConf newConf = new HiveConf(initConf); TezSessionState sessionState = defaultQueuePool.take(); newConf.set("tez.queue.name", sessionState.getQueueName()); sessionState.open(newConf); openSessions.add(sessionState); defaultQueuePool.put(sessionState); } }
String queueName = session.getQueueName(); LOG.info("Current queue name is " + queueName + " incoming queue name is " + conf.get("tez.queue.name"));