private void updateSessionTriggerProvidersOnMasterThread() { for (Map.Entry<String, PoolState> entry : pools.entrySet()) { String poolName = entry.getKey(); PoolState poolState = entry.getValue(); final List<Trigger> triggers = Collections.unmodifiableList(poolState.getTriggers()); final List<TezSessionState> sessionStates = Collections.unmodifiableList(poolState.getSessions()); SessionTriggerProvider sessionTriggerProvider = perPoolProviders.get(poolName); if (sessionTriggerProvider != null) { perPoolProviders.get(poolName).setTriggers(triggers); perPoolProviders.get(poolName).setSessions(sessionStates); } else { perPoolProviders.put(poolName, new SessionTriggerProvider(sessionStates, triggers)); } } }
private void resetAndQueueKill(Map<WmTezSession, KillQueryContext> toKillQuery, KillQueryContext killQueryContext, Map<WmTezSession, GetRequest> toReuse) { WmTezSession toKill = killQueryContext.session; toKillQuery.put(toKill, killQueryContext); // The way this works is, a session in WM pool will move back to tez AM pool on a kill and will get // reassigned back to WM pool on GetRequest based on user pool mapping. Only if we remove the session from active // sessions list of its WM pool will the queue'd GetRequest be processed String poolName = toKill.getPoolName(); if (poolName != null) { PoolState poolState = pools.get(poolName); if (poolState != null) { poolState.getSessions().remove(toKill); Iterator<SessionInitContext> iter = poolState.getInitializingSessions().iterator(); while (iter.hasNext()) { if (iter.next().session == toKill) { iter.remove(); break; } } } } toKill.clearWm(); GetRequest req = toReuse.remove(toKill); if (req != null) { req.sessionToReuse = null; } }