blob: 9b8b6913bf04737db37c9a77aacf0e9b85242c1f [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.6"/>
<title>Impala: impala::AdmissionController Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Impala
</div>
<div id="projectbrief">Impalaistheopensource,nativeanalyticdatabaseforApacheHadoop.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="annotated.html"><span>Class&#160;List</span></a></li>
<li><a href="classes.html"><span>Class&#160;Index</span></a></li>
<li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class&#160;Members</span></a></li>
</ul>
</div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classimpala_1_1AdmissionController.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-types">Private Types</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#pri-static-attribs">Static Private Attributes</a> &#124;
<a href="classimpala_1_1AdmissionController-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::AdmissionController Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for impala::AdmissionController:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1AdmissionController__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala_1_1AdmissionController_1_1PoolMetrics.html">PoolMetrics</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structimpala_1_1AdmissionController_1_1QueueNode.html">QueueNode</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7c53240e1646f444a0f580fd08eefce0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a7c53240e1646f444a0f580fd08eefce0">AdmissionController</a> (<a class="el" href="classimpala_1_1RequestPoolService.html">RequestPoolService</a> *request_pool_service, <a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *metrics, const std::string &amp;backend_id)</td></tr>
<tr class="separator:a7c53240e1646f444a0f580fd08eefce0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad8bbd30570cd7d96150b4057a6f536e0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ad8bbd30570cd7d96150b4057a6f536e0">~AdmissionController</a> ()</td></tr>
<tr class="separator:ad8bbd30570cd7d96150b4057a6f536e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3eadc9184d6eb4cd276a98e6b69c2a62"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery</a> (<a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> *schedule)</td></tr>
<tr class="separator:a3eadc9184d6eb4cd276a98e6b69c2a62"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f5b55dbb10581faeead72b2d42aca81"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a5f5b55dbb10581faeead72b2d42aca81">ReleaseQuery</a> (<a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> *schedule)</td></tr>
<tr class="separator:a5f5b55dbb10581faeead72b2d42aca81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65daa40a8a8a70dd089d292abeff6e74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a65daa40a8a8a70dd089d292abeff6e74">Init</a> (<a class="el" href="classimpala_1_1StatestoreSubscriber.html">StatestoreSubscriber</a> *subscriber)</td></tr>
<tr class="memdesc:a65daa40a8a8a70dd089d292abeff6e74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registers with the subscription manager. <a href="#a65daa40a8a8a70dd089d292abeff6e74">More...</a><br/></td></tr>
<tr class="separator:a65daa40a8a8a70dd089d292abeff6e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private Types</h2></td></tr>
<tr class="memitem:a329707d7db4e9ace3e6102797e706460"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; std::string, TPoolStats &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a></td></tr>
<tr class="memdesc:a329707d7db4e9ace3e6102797e706460"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of pool names to pool statistics. <a href="#a329707d7db4e9ace3e6102797e706460">More...</a><br/></td></tr>
<tr class="separator:a329707d7db4e9ace3e6102797e706460"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ed0926d769de793ee374ae9bdb5d757"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_set<br class="typebreak"/>
&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a4ed0926d769de793ee374ae9bdb5d757">PoolSet</a></td></tr>
<tr class="memdesc:a4ed0926d769de793ee374ae9bdb5d757"><td class="mdescLeft">&#160;</td><td class="mdescRight">A set of pool names. <a href="#a4ed0926d769de793ee374ae9bdb5d757">More...</a><br/></td></tr>
<tr class="separator:a4ed0926d769de793ee374ae9bdb5d757"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1690f42681dc37923f2b08725e144ecc"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; std::string, <a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a1690f42681dc37923f2b08725e144ecc">PerBackendPoolStatsMap</a></td></tr>
<tr class="separator:a1690f42681dc37923f2b08725e144ecc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94481d8b134825d50a3d4f05b82db5de"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="classimpala_1_1InternalQueue.html">InternalQueue</a>&lt; <a class="el" href="structimpala_1_1AdmissionController_1_1QueueNode.html">QueueNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a94481d8b134825d50a3d4f05b82db5de">RequestQueue</a></td></tr>
<tr class="separator:a94481d8b134825d50a3d4f05b82db5de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a098deea1cb8aed24d6126ab57cfce275"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; std::string, <a class="el" href="classimpala_1_1AdmissionController.html#a94481d8b134825d50a3d4f05b82db5de">RequestQueue</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a098deea1cb8aed24d6126ab57cfce275">RequestQueueMap</a></td></tr>
<tr class="memdesc:a098deea1cb8aed24d6126ab57cfce275"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of pool names to request queues. <a href="#a098deea1cb8aed24d6126ab57cfce275">More...</a><br/></td></tr>
<tr class="separator:a098deea1cb8aed24d6126ab57cfce275"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee5da036860de4aab64be4509f7d4b72"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; std::string, <a class="el" href="structimpala_1_1AdmissionController_1_1PoolMetrics.html">PoolMetrics</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#aee5da036860de4aab64be4509f7d4b72">PoolMetricsMap</a></td></tr>
<tr class="memdesc:aee5da036860de4aab64be4509f7d4b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of pool names to pool metrics. <a href="#aee5da036860de4aab64be4509f7d4b72">More...</a><br/></td></tr>
<tr class="separator:aee5da036860de4aab64be4509f7d4b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a416f815f1cddfc7001f58d89d078f9a9"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; std::string, <br class="typebreak"/>
TPoolConfigResult &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a416f815f1cddfc7001f58d89d078f9a9">PoolConfigMap</a></td></tr>
<tr class="separator:a416f815f1cddfc7001f58d89d078f9a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ab0269833591c2dd811ccc5c574ce2fb9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9">UpdatePoolStats</a> (const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">StatestoreSubscriber::TopicDeltaMap</a> &amp;incoming_topic_deltas, std::vector&lt; TTopicDelta &gt; *subscriber_topic_updates)</td></tr>
<tr class="memdesc:ab0269833591c2dd811ccc5c574ce2fb9"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classimpala_1_1Statestore.html">Statestore</a> subscriber callback that updates the pool stats state. <a href="#ab0269833591c2dd811ccc5c574ce2fb9">More...</a><br/></td></tr>
<tr class="separator:ab0269833591c2dd811ccc5c574ce2fb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7fed1c05abce5e7b81a851434304629"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#af7fed1c05abce5e7b81a851434304629">HandleTopicUpdates</a> (const std::vector&lt; TTopicItem &gt; &amp;topic_updates)</td></tr>
<tr class="separator:af7fed1c05abce5e7b81a851434304629"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad18062356ca354667dd4c05ebee965dc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ad18062356ca354667dd4c05ebee965dc">HandleTopicDeletions</a> (const std::vector&lt; std::string &gt; &amp;topic_deletions)</td></tr>
<tr class="separator:ad18062356ca354667dd4c05ebee965dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebc543270eced39669683d79c7dd7771"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#aebc543270eced39669683d79c7dd7771">UpdateClusterAggregates</a> (const std::string &amp;pool_name)</td></tr>
<tr class="separator:aebc543270eced39669683d79c7dd7771"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6a784c31caf0bcf105972b482b4cb65"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ad6a784c31caf0bcf105972b482b4cb65">UpdateLocalMemUsage</a> (const std::string &amp;pool_name)</td></tr>
<tr class="separator:ad6a784c31caf0bcf105972b482b4cb65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a36b9c6d8901b6f89513a41e4be44c4b3"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a36b9c6d8901b6f89513a41e4be44c4b3">AddPoolUpdates</a> (std::vector&lt; TTopicDelta &gt; *subscriber_topic_updates)</td></tr>
<tr class="separator:a36b9c6d8901b6f89513a41e4be44c4b3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f78757edf844681c0a1fe6e66725551"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a3f78757edf844681c0a1fe6e66725551">DequeueLoop</a> ()</td></tr>
<tr class="memdesc:a3f78757edf844681c0a1fe6e66725551"><td class="mdescLeft">&#160;</td><td class="mdescRight">Dequeues and admits queued queries when notified by dequeue_cv_. <a href="#a3f78757edf844681c0a1fe6e66725551">More...</a><br/></td></tr>
<tr class="separator:a3f78757edf844681c0a1fe6e66725551"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cd5911d0554e50c45302d5b36c99176"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a6cd5911d0554e50c45302d5b36c99176">CanAdmitRequest</a> (const std::string &amp;<a class="el" href="expr-benchmark_8cc.html#a3a5de7bd423fbc0afc4cf935c166ca6b">pool</a>, const int64_t max_requests, const int64_t mem_limit, const <a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> &amp;schedule, <a class="el" href="classbool.html">bool</a> admit_from_queue)</td></tr>
<tr class="separator:a6cd5911d0554e50c45302d5b36c99176"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95058fd2be0fb2744833b3b1217bda9e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1Status.html">Status</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a95058fd2be0fb2744833b3b1217bda9e">RejectRequest</a> (const std::string &amp;<a class="el" href="expr-benchmark_8cc.html#a3a5de7bd423fbc0afc4cf935c166ca6b">pool</a>, const int64_t max_requests, const int64_t mem_limit, const int64_t max_queued, const <a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> &amp;schedule)</td></tr>
<tr class="separator:a95058fd2be0fb2744833b3b1217bda9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbd0c9f6a74dc024e5b728fff2f6a67a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structimpala_1_1AdmissionController_1_1PoolMetrics.html">PoolMetrics</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#adbd0c9f6a74dc024e5b728fff2f6a67a">GetPoolMetrics</a> (const std::string &amp;pool_name)</td></tr>
<tr class="separator:adbd0c9f6a74dc024e5b728fff2f6a67a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a5d662daad4d68e75e0c7875d26fb8f4f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1RequestPoolService.html">RequestPoolService</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a5d662daad4d68e75e0c7875d26fb8f4f">request_pool_service_</a></td></tr>
<tr class="separator:a5d662daad4d68e75e0c7875d26fb8f4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fb9f9ada488890e635e4bbcf3a423be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a6fb9f9ada488890e635e4bbcf3a423be">metrics_</a></td></tr>
<tr class="memdesc:a6fb9f9ada488890e635e4bbcf3a423be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Metrics subsystem access. <a href="#a6fb9f9ada488890e635e4bbcf3a423be">More...</a><br/></td></tr>
<tr class="separator:a6fb9f9ada488890e635e4bbcf3a423be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a47435152317a498ac54bbeb57e99b731"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr&lt; <a class="el" href="classimpala_1_1Thread.html">Thread</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a47435152317a498ac54bbeb57e99b731">dequeue_thread_</a></td></tr>
<tr class="memdesc:a47435152317a498ac54bbeb57e99b731"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classimpala_1_1Thread.html" title="TODO: Consider allowing fragment IDs as category parameters. ">Thread</a> dequeuing and admitting queries. <a href="#a47435152317a498ac54bbeb57e99b731">More...</a><br/></td></tr>
<tr class="separator:a47435152317a498ac54bbeb57e99b731"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e5834ab9a7dc4ebc4b6287c834f8661"><td class="memItemLeft" align="right" valign="top">const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a0e5834ab9a7dc4ebc4b6287c834f8661">backend_id_</a></td></tr>
<tr class="memdesc:a0e5834ab9a7dc4ebc4b6287c834f8661"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unique id for this impalad, used to construct topic keys. <a href="#a0e5834ab9a7dc4ebc4b6287c834f8661">More...</a><br/></td></tr>
<tr class="separator:a0e5834ab9a7dc4ebc4b6287c834f8661"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af933abc2c4d3692cb5dd12d681db9c6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1ThriftSerializer.html">ThriftSerializer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#af933abc2c4d3692cb5dd12d681db9c6b">thrift_serializer_</a></td></tr>
<tr class="memdesc:af933abc2c4d3692cb5dd12d681db9c6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes/deserializes TPoolStats when sending and receiving topic updates. <a href="#af933abc2c4d3692cb5dd12d681db9c6b">More...</a><br/></td></tr>
<tr class="separator:af933abc2c4d3692cb5dd12d681db9c6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06bbb5b167f4ab3330dff9129a56a45e"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a06bbb5b167f4ab3330dff9129a56a45e">admission_ctrl_lock_</a></td></tr>
<tr class="separator:a06bbb5b167f4ab3330dff9129a56a45e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98611ef25500b5cfce27b64d69d2dfad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a98611ef25500b5cfce27b64d69d2dfad">local_pool_stats_</a></td></tr>
<tr class="separator:a98611ef25500b5cfce27b64d69d2dfad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99080dfa78407542de46711625115ce1"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a4ed0926d769de793ee374ae9bdb5d757">PoolSet</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a99080dfa78407542de46711625115ce1">pools_for_updates_</a></td></tr>
<tr class="separator:a99080dfa78407542de46711625115ce1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2daa040681ba2782f9f0eb41bd3197ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a1690f42681dc37923f2b08725e144ecc">PerBackendPoolStatsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a2daa040681ba2782f9f0eb41bd3197ea">per_backend_pool_stats_map_</a></td></tr>
<tr class="separator:a2daa040681ba2782f9f0eb41bd3197ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27925375d7267b51db301e1363cb6afb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a27925375d7267b51db301e1363cb6afb">cluster_pool_stats_</a></td></tr>
<tr class="separator:a27925375d7267b51db301e1363cb6afb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2894d0d3e37b8e062afd67f7766717c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a098deea1cb8aed24d6126ab57cfce275">RequestQueueMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a2894d0d3e37b8e062afd67f7766717c6">request_queue_map_</a></td></tr>
<tr class="separator:a2894d0d3e37b8e062afd67f7766717c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab07407fa20f5ef686de5824840286d76"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#aee5da036860de4aab64be4509f7d4b72">PoolMetricsMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ab07407fa20f5ef686de5824840286d76">pool_metrics_map_</a></td></tr>
<tr class="separator:ab07407fa20f5ef686de5824840286d76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9f3248cc32b91bc8f8c797a514889e7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1AdmissionController.html#a416f815f1cddfc7001f58d89d078f9a9">PoolConfigMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ab9f3248cc32b91bc8f8c797a514889e7">pool_config_cache_</a></td></tr>
<tr class="separator:ab9f3248cc32b91bc8f8c797a514889e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93cba7aa65cbe957f1e4d3e06287fc29"><td class="memItemLeft" align="right" valign="top">boost::condition_variable&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a93cba7aa65cbe957f1e4d3e06287fc29">dequeue_cv_</a></td></tr>
<tr class="separator:a93cba7aa65cbe957f1e4d3e06287fc29"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f609ac7ccf0ac4b1026056bf499aed6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classbool.html">bool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#a1f609ac7ccf0ac4b1026056bf499aed6">done_</a></td></tr>
<tr class="memdesc:a1f609ac7ccf0ac4b1026056bf499aed6"><td class="mdescLeft">&#160;</td><td class="mdescRight">If true, tear down the dequeuing thread. This only happens in unit tests. <a href="#a1f609ac7ccf0ac4b1026056bf499aed6">More...</a><br/></td></tr>
<tr class="separator:a1f609ac7ccf0ac4b1026056bf499aed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-attribs"></a>
Static Private Attributes</h2></td></tr>
<tr class="memitem:ae1c785763be5dd8c886750cf8dfde0c4"><td class="memItemLeft" align="right" valign="top">static const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1AdmissionController.html#ae1c785763be5dd8c886750cf8dfde0c4">IMPALA_REQUEST_QUEUE_TOPIC</a></td></tr>
<tr class="separator:ae1c785763be5dd8c886750cf8dfde0c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The <a class="el" href="classimpala_1_1AdmissionController.html">AdmissionController</a> is used to make local admission decisions based on cluster state disseminated by the statestore. Requests are submitted for execution to a given pool via <a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery()</a>. A request will either be admitted immediately, queued, or rejected. This decision is based on per-pool estimates of the total number of concurrently executing queries across the entire cluster, their memory usage, and the total number of queued requests across the entire cluster. When the number of concurrently executing queries goes above a configurable per-pool threshold or the memory usage of those queries goes above a per-pool memory limit, requests will be queued. When the total number of queued requests in a particular pool goes above a configurable threshold, incoming requests to that pool will be rejected. TODO: When we resolve users-&gt;pools, explain the model and configuration story. (There is one hard-coded pool right now, configurable via gflags.) The pool statistics are updated by the statestore using the IMPALA_REQUEST_QUEUE_TOPIC topic. Every &lt;impalad, pool&gt; pair is sent as a topic update when pool statistics change, and the topic updates from other impalads are used to re-compute the total per-pool stats. When there are queued requests, the number of executing queries drops below the configured maximum, and the memory usage of those queries is below the memory limit, a number of queued requests will be admitted according to the following formula: N = (#local_pool_queued / #global_pool_queued) * (pool_limit - #global_pool_running) If there is a memory limit specified but no limit on the number of running queries, we will dequeue and admit all of the queued requests because we don't attempt to estimate request memory usage. Because the pool statistics are only updated on statestore heartbeats and all decisions are made locally, the total pool statistics are estimates. As a result, more requests may be admitted or queued than the configured thresholds, which are really soft limits. Because the memory usage (tracked by the per-pool mem trackers) may not reflect the peak memory usage of a query for some time, it would be possible to over admit requests if they are submitted much faster than running queries were to start using memory. However, to avoid this, we use the request's memory estimate from planning (even though we know these estimates may be off) before admitting a request, and we also keep track of the sum of the memory estimates for all running queries, per-pool. The local, per-pool mem_usage is set to the maximum of the estimate and the actual per-pool current consumption. We then need to update the local and cluster mem_usage stats when admitting (in <a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery()</a> and <a class="el" href="classimpala_1_1AdmissionController.html#a3f78757edf844681c0a1fe6e66725551" title="Dequeues and admits queued queries when notified by dequeue_cv_. ">DequeueLoop()</a>) as well as in <a class="el" href="classimpala_1_1AdmissionController.html#a5f5b55dbb10581faeead72b2d42aca81">ReleaseQuery()</a>. When requests are submitted very quickly and the memory estimates from planning are significantly off this strategy can still result in over or under subscription, but this is not completely unavoidable unless we can produce better estimates. TODO: We can reduce the effect of very high estimates by using a weighted combination of the estimate and the actual consumption as a function of time. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00081">81</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a1690f42681dc37923f2b08725e144ecc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;std::string, <a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a>&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a1690f42681dc37923f2b08725e144ecc">impala::AdmissionController::PerBackendPoolStatsMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Mimics the statestore topic, i.e. stores a local copy of the logical data structure that the statestore broadcasts. The local stats are not stored in this map because we need to be able to clear the stats for all remote backends when a full topic update is received. By storing the local pool stats in local_pool_stats_, we can simply clear() the map. Pool names -&gt; full topic keys (i.e. "&lt;topic&gt;!&lt;backend_id&gt;") -&gt; pool stats </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00211">211</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a416f815f1cddfc7001f58d89d078f9a9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;std::string, TPoolConfigResult&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a416f815f1cddfc7001f58d89d078f9a9">impala::AdmissionController::PoolConfigMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Map of pool names to the most recent pool configs returned by request_pool_service_. Stored so that the dequeue thread does not need to access the configs via the request pool service again (which involves a JNI call and error checking). </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00238">238</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="aee5da036860de4aab64be4509f7d4b72"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;std::string, <a class="el" href="structimpala_1_1AdmissionController_1_1PoolMetrics.html">PoolMetrics</a>&gt; <a class="el" href="classimpala_1_1AdmissionController.html#aee5da036860de4aab64be4509f7d4b72">impala::AdmissionController::PoolMetricsMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Map of pool names to pool metrics. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00232">232</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a4ed0926d769de793ee374ae9bdb5d757"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_set&lt;std::string&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a4ed0926d769de793ee374ae9bdb5d757">impala::AdmissionController::PoolSet</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>A set of pool names. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00199">199</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a329707d7db4e9ace3e6102797e706460"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;std::string, TPoolStats&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">impala::AdmissionController::PoolStatsMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Map of pool names to pool statistics. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00192">192</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a94481d8b134825d50a3d4f05b82db5de"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef <a class="el" href="classimpala_1_1InternalQueue.html">InternalQueue</a>&lt;<a class="el" href="structimpala_1_1AdmissionController_1_1QueueNode.html">QueueNode</a>&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a94481d8b134825d50a3d4f05b82db5de">impala::AdmissionController::RequestQueue</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Queue for the queries waiting to be admitted for execution. Once the maximum number of concurrently executing queries has been reached, incoming queries are queued and admitted FCFS. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00225">225</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<a class="anchor" id="a098deea1cb8aed24d6126ab57cfce275"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">typedef boost::unordered_map&lt;std::string, <a class="el" href="classimpala_1_1AdmissionController.html#a94481d8b134825d50a3d4f05b82db5de">RequestQueue</a>&gt; <a class="el" href="classimpala_1_1AdmissionController.html#a098deea1cb8aed24d6126ab57cfce275">impala::AdmissionController::RequestQueueMap</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Map of pool names to request queues. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00228">228</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a7c53240e1646f444a0f580fd08eefce0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">impala::AdmissionController::AdmissionController </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1RequestPoolService.html">RequestPoolService</a> *&#160;</td>
<td class="paramname"><em>request_pool_service</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *&#160;</td>
<td class="paramname"><em>metrics</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>backend_id</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00176">176</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00178">dequeue_thread_</a>, and <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>.</p>
</div>
</div>
<a class="anchor" id="ad8bbd30570cd7d96150b4057a6f536e0"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">impala::AdmissionController::~AdmissionController </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00187">187</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00189">admission_ctrl_lock_</a>, <a class="el" href="admission-controller_8h_source.html#l00243">dequeue_cv_</a>, <a class="el" href="admission-controller_8h_source.html#l00178">dequeue_thread_</a>, and <a class="el" href="admission-controller_8h_source.html#l00246">done_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a36b9c6d8901b6f89513a41e4be44c4b3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::AddPoolUpdates </td>
<td>(</td>
<td class="paramtype">std::vector&lt; TTopicDelta &gt; *&#160;</td>
<td class="paramname"><em>subscriber_topic_updates</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds updates for local pools that have changed to the subscriber topic updates. Called by <a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9" title="Statestore subscriber callback that updates the pool stats state. ">UpdatePoolStats()</a> before handling updates. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00568">568</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00181">backend_id_</a>, <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="admission-controller_8h_source.html#l00105">IMPALA_REQUEST_QUEUE_TOPIC</a>, <a class="el" href="admission-controller_8h_source.html#l00163">impala::AdmissionController::PoolMetrics::local_in_queue</a>, <a class="el" href="admission-controller_8h_source.html#l00165">impala::AdmissionController::PoolMetrics::local_mem_usage</a>, <a class="el" href="admission-controller_8h_source.html#l00161">impala::AdmissionController::PoolMetrics::local_num_running</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="admission-controller_8cc_source.html#l00138">impala::MakePoolTopicKey()</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="admission-controller_8h_source.html#l00203">pools_for_updates_</a>, <a class="el" href="thrift-util_8h_source.html#l00048">impala::ThriftSerializer::Serialize()</a>, <a class="el" href="admission-controller_8h_source.html#l00184">thrift_serializer_</a>, and <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="a3eadc9184d6eb4cd276a98e6b69c2a62"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> impala::AdmissionController::AdmitQuery </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> *&#160;</td>
<td class="paramname"><em>schedule</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Submits the request for admission. Returns immediately if rejected, but otherwise blocks until the request is admitted. When this method returns, schedule-&gt;is_admitted() is true if and only if the request was admitted. For all calls to <a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery()</a>, <a class="el" href="classimpala_1_1AdmissionController.html#a5f5b55dbb10581faeead72b2d42aca81">ReleaseQuery()</a> should also be called after the query completes to ensure that the pool statistics are updated. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00265">265</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="runtime-profile_8cc_source.html#l00406">impala::RuntimeProfile::AddInfoString()</a>, <a class="el" href="admission-controller_8h_source.html#l00189">admission_ctrl_lock_</a>, <a class="el" href="admission-controller_8cc_source.html#l00211">CanAdmitRequest()</a>, <a class="el" href="admission-controller_8h_source.html#l00159">impala::AdmissionController::PoolMetrics::cluster_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="internal-queue_8h_source.html#l00202">impala::InternalQueue&lt; T &gt;::Contains()</a>, <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="internal-queue_8h_source.html#l00085">impala::InternalQueue&lt; T &gt;::Enqueue()</a>, <a class="el" href="promise_8h_source.html#l00059">impala::Promise&lt; T &gt;::Get()</a>, <a class="el" href="query-schedule_8cc_source.html#l00086">impala::QuerySchedule::GetClusterMemoryEstimate()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="request-pool-service_8cc_source.html#l00152">impala::RequestPoolService::GetPoolConfig()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="admission-controller_8h_source.html#l00117">impala::AdmissionController::QueueNode::is_admitted</a>, <a class="el" href="promise_8h_source.html#l00092">impala::Promise&lt; T &gt;::IsSet()</a>, <a class="el" href="admission-controller_8h_source.html#l00133">impala::AdmissionController::PoolMetrics::local_admitted</a>, <a class="el" href="admission-controller_8h_source.html#l00167">impala::AdmissionController::PoolMetrics::local_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="admission-controller_8h_source.html#l00136">impala::AdmissionController::PoolMetrics::local_queued</a>, <a class="el" href="admission-controller_8h_source.html#l00141">impala::AdmissionController::PoolMetrics::local_rejected</a>, <a class="el" href="admission-controller_8h_source.html#l00149">impala::AdmissionController::PoolMetrics::local_time_in_queue_ms</a>, <a class="el" href="admission-controller_8h_source.html#l00143">impala::AdmissionController::PoolMetrics::local_timed_out</a>, <a class="el" href="runtime-profile_8h_source.html#l00286">impala::RuntimeProfile::EventSequence::MarkEvent()</a>, <a class="el" href="time_8h_source.html#l00035">impala::MonotonicMillis()</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="admission-controller_8h_source.html#l00239">pool_config_cache_</a>, <a class="el" href="admission-controller_8h_source.html#l00203">pools_for_updates_</a>, <a class="el" href="pretty-printer_8h_source.html#l00033">impala::PrettyPrinter::Print()</a>, <a class="el" href="admission-controller_8cc_source.html#l00086">impala::PROFILE_INFO_KEY_ADMISSION_RESULT</a>, <a class="el" href="admission-controller_8cc_source.html#l00087">impala::PROFILE_INFO_VAL_ADMIT_IMMEDIATELY</a>, <a class="el" href="admission-controller_8cc_source.html#l00088">impala::PROFILE_INFO_VAL_ADMIT_QUEUED</a>, <a class="el" href="admission-controller_8cc_source.html#l00089">impala::PROFILE_INFO_VAL_REJECTED</a>, <a class="el" href="admission-controller_8cc_source.html#l00090">impala::PROFILE_INFO_VAL_TIME_OUT</a>, <a class="el" href="admission-controller_8cc_source.html#l00083">impala::QUERY_EVENT_COMPLETED_ADMISSION</a>, <a class="el" href="admission-controller_8cc_source.html#l00082">impala::QUERY_EVENT_SUBMIT_FOR_ADMISSION</a>, <a class="el" href="query-schedule_8h_source.html#l00121">impala::QuerySchedule::query_events()</a>, <a class="el" href="query-schedule_8h_source.html#l00077">impala::QuerySchedule::query_id()</a>, <a class="el" href="admission-controller_8cc_source.html#l00243">RejectRequest()</a>, <a class="el" href="internal-queue_8h_source.html#l00147">impala::InternalQueue&lt; T &gt;::Remove()</a>, <a class="el" href="query-schedule_8h_source.html#l00081">impala::QuerySchedule::request_pool()</a>, <a class="el" href="admission-controller_8h_source.html#l00172">request_pool_service_</a>, <a class="el" href="admission-controller_8h_source.html#l00229">request_queue_map_</a>, <a class="el" href="status_8h_source.html#l00242">RETURN_IF_ERROR</a>, <a class="el" href="promise_8h_source.html#l00038">impala::Promise&lt; T &gt;::Set()</a>, <a class="el" href="query-schedule_8h_source.html#l00119">impala::QuerySchedule::set_is_admitted()</a>, <a class="el" href="admission-controller_8cc_source.html#l00119">impala::STATUS_TIME_OUT</a>, <a class="el" href="query-schedule_8h_source.html#l00120">impala::QuerySchedule::summary_profile()</a>, <a class="el" href="logging_8h_source.html#l00057">VLOG_QUERY</a>, and <a class="el" href="logging_8h_source.html#l00056">VLOG_RPC</a>.</p>
</div>
</div>
<a class="anchor" id="a6cd5911d0554e50c45302d5b36c99176"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> impala::AdmissionController::CanAdmitRequest </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>max_requests</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>mem_limit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> &amp;&#160;</td>
<td class="paramname"><em>schedule</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classbool.html">bool</a>&#160;</td>
<td class="paramname"><em>admit_from_queue</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns OK if the request can be admitted, i.e. admitting would not go over the limits for this pool. Otherwise, the error message specifies the reason the request can not be admitted immediately. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00211">211</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="status_8cc_source.html#l00162">impala::Status::Expected()</a>, <a class="el" href="query-schedule_8cc_source.html#l00086">impala::QuerySchedule::GetClusterMemoryEstimate()</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="pretty-printer_8h_source.html#l00033">impala::PrettyPrinter::Print()</a>, <a class="el" href="admission-controller_8cc_source.html#l00113">impala::QUEUED_MEM_LIMIT</a>, <a class="el" href="admission-controller_8cc_source.html#l00111">impala::QUEUED_NUM_RUNNING</a>, and <a class="el" href="admission-controller_8cc_source.html#l00116">impala::QUEUED_QUEUE_NOT_EMPTY</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>.</p>
</div>
</div>
<a class="anchor" id="a3f78757edf844681c0a1fe6e66725551"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::DequeueLoop </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Dequeues and admits queued queries when notified by dequeue_cv_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00595">595</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00189">admission_ctrl_lock_</a>, <a class="el" href="admission-controller_8cc_source.html#l00211">CanAdmitRequest()</a>, <a class="el" href="admission-controller_8h_source.html#l00159">impala::AdmissionController::PoolMetrics::cluster_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="internal-queue_8h_source.html#l00103">impala::InternalQueue&lt; T &gt;::Dequeue()</a>, <a class="el" href="admission-controller_8h_source.html#l00243">dequeue_cv_</a>, <a class="el" href="admission-controller_8h_source.html#l00246">done_</a>, <a class="el" href="internal-queue_8h_source.html#l00198">impala::InternalQueue&lt; T &gt;::empty()</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="internal-queue_8h_source.html#l00070">impala::InternalQueue&lt; T &gt;::head()</a>, <a class="el" href="admission-controller_8h_source.html#l00117">impala::AdmissionController::QueueNode::is_admitted</a>, <a class="el" href="promise_8h_source.html#l00092">impala::Promise&lt; T &gt;::IsSet()</a>, <a class="el" href="admission-controller_8h_source.html#l00138">impala::AdmissionController::PoolMetrics::local_dequeued</a>, <a class="el" href="admission-controller_8h_source.html#l00167">impala::AdmissionController::PoolMetrics::local_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="admission-controller_8h_source.html#l00239">pool_config_cache_</a>, <a class="el" href="admission-controller_8h_source.html#l00203">pools_for_updates_</a>, <a class="el" href="query-schedule_8h_source.html#l00077">impala::QuerySchedule::query_id()</a>, <a class="el" href="admission-controller_8h_source.html#l00229">request_queue_map_</a>, <a class="el" href="admission-controller_8h_source.html#l00122">impala::AdmissionController::QueueNode::schedule</a>, <a class="el" href="promise_8h_source.html#l00038">impala::Promise&lt; T &gt;::Set()</a>, <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>, and <a class="el" href="logging_8h_source.html#l00056">VLOG_RPC</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00176">AdmissionController()</a>.</p>
</div>
</div>
<a class="anchor" id="adbd0c9f6a74dc024e5b728fff2f6a67a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structimpala_1_1AdmissionController_1_1PoolMetrics.html">AdmissionController::PoolMetrics</a> * impala::AdmissionController::GetPoolMetrics </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>pool_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the metrics for a pool. The metrics are initialized if they don't already exist. Returns NULL if there is no metrics system available. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00686">686</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="metrics_8h_source.html#l00239">impala::MetricGroup::AddCounter()</a>, <a class="el" href="metrics_8h_source.html#l00223">impala::MetricGroup::AddGauge()</a>, <a class="el" href="admission-controller_8cc_source.html#l00066">impala::CLUSTER_IN_QUEUE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00070">impala::CLUSTER_MEM_ESTIMATE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00068">impala::CLUSTER_MEM_USAGE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00064">impala::CLUSTER_NUM_RUNNING_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00050">impala::LOCAL_ADMITTED_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00060">impala::LOCAL_COMPLETED_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00054">impala::LOCAL_DEQUEUED_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00074">impala::LOCAL_IN_QUEUE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00078">impala::LOCAL_MEM_ESTIMATE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00076">impala::LOCAL_MEM_USAGE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00072">impala::LOCAL_NUM_RUNNING_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00052">impala::LOCAL_QUEUED_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00056">impala::LOCAL_REJECTED_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00062">impala::LOCAL_TIME_IN_QUEUE_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8cc_source.html#l00058">impala::LOCAL_TIMED_OUT_METRIC_KEY_FORMAT</a>, <a class="el" href="admission-controller_8h_source.html#l00175">metrics_</a>, and <a class="el" href="admission-controller_8h_source.html#l00233">pool_metrics_map_</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00554">UpdateLocalMemUsage()</a>.</p>
</div>
</div>
<a class="anchor" id="ad18062356ca354667dd4c05ebee965dc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::HandleTopicDeletions </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>topic_deletions</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes stats from the per_backend_pool_stats_map_ from topic deletions. Called by <a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9" title="Statestore subscriber callback that updates the pool stats state. ">UpdatePoolStats()</a>. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00494">494</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="admission-controller_8cc_source.html#l00124">impala::ParsePoolTopicKey()</a>, <a class="el" href="admission-controller_8h_source.html#l00212">per_backend_pool_stats_map_</a>, and <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="af7fed1c05abce5e7b81a851434304629"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::HandleTopicUpdates </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; TTopicItem &gt; &amp;&#160;</td>
<td class="paramname"><em>topic_updates</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the per_backend_pool_stats_map_ with topic_updates. Called by <a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9" title="Statestore subscriber callback that updates the pool stats state. ">UpdatePoolStats()</a>. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00459">459</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00181">backend_id_</a>, <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="jni-thrift-util_8h_source.html#l00045">impala::DeserializeThriftMsg()</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="admission-controller_8cc_source.html#l00124">impala::ParsePoolTopicKey()</a>, <a class="el" href="admission-controller_8h_source.html#l00212">per_backend_pool_stats_map_</a>, <a class="el" href="logging_8h_source.html#l00057">VLOG_QUERY</a>, and <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="a65daa40a8a8a70dd089d292abeff6e74"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> impala::AdmissionController::Init </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1StatestoreSubscriber.html">StatestoreSubscriber</a> *&#160;</td>
<td class="paramname"><em>subscriber</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Registers with the subscription manager. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00201">201</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="status_8cc_source.html#l00166">impala::Status::AddDetail()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00126">impala::StatestoreSubscriber::AddTopic()</a>, <a class="el" href="admission-controller_8h_source.html#l00105">IMPALA_REQUEST_QUEUE_TOPIC</a>, and <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="a95058fd2be0fb2744833b3b1217bda9e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> impala::AdmissionController::RejectRequest </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>pool</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>max_requests</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>mem_limit</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int64_t&#160;</td>
<td class="paramname"><em>max_queued</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> &amp;&#160;</td>
<td class="paramname"><em>schedule</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an error status if this request must be rejected; the error message specifies the reason the request is rejected. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00243">243</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="query-schedule_8cc_source.html#l00086">impala::QuerySchedule::GetClusterMemoryEstimate()</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="pretty-printer_8h_source.html#l00033">impala::PrettyPrinter::Print()</a>, <a class="el" href="admission-controller_8cc_source.html#l00095">impala::REASON_DISABLED_MEM_LIMIT</a>, <a class="el" href="admission-controller_8cc_source.html#l00096">impala::REASON_DISABLED_REQUESTS_LIMIT</a>, <a class="el" href="admission-controller_8cc_source.html#l00097">impala::REASON_QUEUE_FULL</a>, <a class="el" href="admission-controller_8cc_source.html#l00098">impala::REASON_REQ_OVER_MEM_LIMIT</a>, and <a class="el" href="admission-controller_8cc_source.html#l00094">impala::STATUS_REJECTED</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>.</p>
</div>
</div>
<a class="anchor" id="a5f5b55dbb10581faeead72b2d42aca81"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1Status.html">Status</a> impala::AdmissionController::ReleaseQuery </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classimpala_1_1QuerySchedule.html">QuerySchedule</a> *&#160;</td>
<td class="paramname"><em>schedule</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the pool statistics when a query completes (either successfully, is cancelled or failed). This should be called for all requests that have been submitted via <a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery()</a>. (If the request was not admitted, this is a no-op.) This does not block. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00395">395</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00189">admission_ctrl_lock_</a>, <a class="el" href="admission-controller_8h_source.html#l00159">impala::AdmissionController::PoolMetrics::cluster_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="admission-controller_8h_source.html#l00243">dequeue_cv_</a>, <a class="el" href="query-schedule_8cc_source.html#l00086">impala::QuerySchedule::GetClusterMemoryEstimate()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="query-schedule_8h_source.html#l00118">impala::QuerySchedule::is_admitted()</a>, <a class="el" href="admission-controller_8h_source.html#l00146">impala::AdmissionController::PoolMetrics::local_completed</a>, <a class="el" href="admission-controller_8h_source.html#l00167">impala::AdmissionController::PoolMetrics::local_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="admission-controller_8h_source.html#l00203">pools_for_updates_</a>, <a class="el" href="query-schedule_8h_source.html#l00077">impala::QuerySchedule::query_id()</a>, <a class="el" href="query-schedule_8h_source.html#l00081">impala::QuerySchedule::request_pool()</a>, and <a class="el" href="logging_8h_source.html#l00056">VLOG_RPC</a>.</p>
</div>
</div>
<a class="anchor" id="aebc543270eced39669683d79c7dd7771"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::UpdateClusterAggregates </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>pool_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Re-computes the cluster_pool_stats_ aggregate stats for all pools. Called by <a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9" title="Statestore subscriber callback that updates the pool stats state. ">UpdatePoolStats()</a> after handling updates and deletions. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00508">508</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8h_source.html#l00181">backend_id_</a>, <a class="el" href="admission-controller_8h_source.html#l00155">impala::AdmissionController::PoolMetrics::cluster_in_queue</a>, <a class="el" href="admission-controller_8h_source.html#l00159">impala::AdmissionController::PoolMetrics::cluster_mem_estimate</a>, <a class="el" href="admission-controller_8h_source.html#l00157">impala::AdmissionController::PoolMetrics::cluster_mem_usage</a>, <a class="el" href="admission-controller_8h_source.html#l00153">impala::AdmissionController::PoolMetrics::cluster_num_running</a>, <a class="el" href="admission-controller_8h_source.html#l00220">cluster_pool_stats_</a>, <a class="el" href="admission-controller_8cc_source.html#l00148">impala::DebugPoolStats()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="admission-controller_8h_source.html#l00212">per_backend_pool_stats_map_</a>, and <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="ad6a784c31caf0bcf105972b482b4cb65"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::UpdateLocalMemUsage </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>pool_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates the memory usage of the local pool stats based on the most recent mem tracker consumption. Called by <a class="el" href="classimpala_1_1AdmissionController.html#ab0269833591c2dd811ccc5c574ce2fb9" title="Statestore subscriber callback that updates the pool stats state. ">UpdatePoolStats()</a> before sending local pool updates. Must hold admission_ctrl_lock_. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00554">554</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="mem-tracker_8h_source.html#l00298">impala::MemTracker::consumption()</a>, <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>, <a class="el" href="mem-tracker_8cc_source.html#l00134">impala::MemTracker::GetRequestPoolMemTracker()</a>, <a class="el" href="admission-controller_8h_source.html#l00165">impala::AdmissionController::PoolMetrics::local_mem_usage</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="admission-controller_8h_source.html#l00203">pools_for_updates_</a>, and <a class="el" href="expr-benchmark_8cc_source.html#l00090">tracker</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="ab0269833591c2dd811ccc5c574ce2fb9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::AdmissionController::UpdatePoolStats </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">StatestoreSubscriber::TopicDeltaMap</a> &amp;&#160;</td>
<td class="paramname"><em>incoming_topic_deltas</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::vector&lt; TTopicDelta &gt; *&#160;</td>
<td class="paramname"><em>subscriber_topic_updates</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classimpala_1_1Statestore.html">Statestore</a> subscriber callback that updates the pool stats state. </p>
<p>Definition at line <a class="el" href="admission-controller_8cc_source.html#l00428">428</a> of file <a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a>.</p>
<p>References <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8h_source.html#l00189">admission_ctrl_lock_</a>, <a class="el" href="admission-controller_8h_source.html#l00243">dequeue_cv_</a>, <a class="el" href="admission-controller_8cc_source.html#l00494">HandleTopicDeletions()</a>, <a class="el" href="admission-controller_8cc_source.html#l00459">HandleTopicUpdates()</a>, <a class="el" href="admission-controller_8h_source.html#l00105">IMPALA_REQUEST_QUEUE_TOPIC</a>, <a class="el" href="admission-controller_8h_source.html#l00196">local_pool_stats_</a>, <a class="el" href="admission-controller_8h_source.html#l00212">per_backend_pool_stats_map_</a>, <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00554">UpdateLocalMemUsage()</a>, and <a class="el" href="logging_8h_source.html#l00059">VLOG_ROW</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00201">Init()</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a06bbb5b167f4ab3330dff9129a56a45e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::mutex impala::AdmissionController::admission_ctrl_lock_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Protects all access to all variables below. Coordinates access to the results of the promise <a class="el" href="structimpala_1_1AdmissionController_1_1QueueNode.html#a87a37821bc622783280b87cce6a16b18">QueueNode::is_admitted</a>, but the lock is not required to wait on the promise. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00189">189</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00187">~AdmissionController()</a>.</p>
</div>
</div>
<a class="anchor" id="a0e5834ab9a7dc4ebc4b6287c834f8661"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string impala::AdmissionController::backend_id_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Unique id for this impalad, used to construct topic keys. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00181">181</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00459">HandleTopicUpdates()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>.</p>
</div>
</div>
<a class="anchor" id="a27925375d7267b51db301e1363cb6afb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a> impala::AdmissionController::cluster_pool_stats_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The (estimated) total pool statistics for the entire cluster. Includes the current local stats in local_pool_stats_. Updated when (a) IMPALA_REQUEST_QUEUE_TOPIC updates are received by aggregating the stats in per_backend_pool_stats_map_ and (b) when local stats change (i.e. <a class="el" href="classimpala_1_1AdmissionController.html#a3eadc9184d6eb4cd276a98e6b69c2a62">AdmitQuery()</a>, <a class="el" href="classimpala_1_1AdmissionController.html#a5f5b55dbb10581faeead72b2d42aca81">ReleaseQuery()</a>, and when dequeuing in <a class="el" href="classimpala_1_1AdmissionController.html#a3f78757edf844681c0a1fe6e66725551" title="Dequeues and admits queued queries when notified by dequeue_cv_. ">DequeueLoop()</a>). Pool names -&gt; estimated total pool stats </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00220">220</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00211">CanAdmitRequest()</a>, <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00243">RejectRequest()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>.</p>
</div>
</div>
<a class="anchor" id="a93cba7aa65cbe957f1e4d3e06287fc29"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::condition_variable impala::AdmissionController::dequeue_cv_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Notifies the dequeuing thread that pool stats have changed and it may be possible to dequeue and admit queries. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00243">243</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00187">~AdmissionController()</a>.</p>
</div>
</div>
<a class="anchor" id="a47435152317a498ac54bbeb57e99b731"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::scoped_ptr&lt;<a class="el" href="classimpala_1_1Thread.html">Thread</a>&gt; impala::AdmissionController::dequeue_thread_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classimpala_1_1Thread.html" title="TODO: Consider allowing fragment IDs as category parameters. ">Thread</a> dequeuing and admitting queries. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00178">178</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00176">AdmissionController()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00187">~AdmissionController()</a>.</p>
</div>
</div>
<a class="anchor" id="a1f609ac7ccf0ac4b1026056bf499aed6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classbool.html">bool</a> impala::AdmissionController::done_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If true, tear down the dequeuing thread. This only happens in unit tests. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00246">246</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00187">~AdmissionController()</a>.</p>
</div>
</div>
<a class="anchor" id="ae1c785763be5dd8c886750cf8dfde0c4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const string impala::AdmissionController::IMPALA_REQUEST_QUEUE_TOPIC</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00105">105</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00201">Init()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="a98611ef25500b5cfce27b64d69d2dfad"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a329707d7db4e9ace3e6102797e706460">PoolStatsMap</a> impala::AdmissionController::local_pool_stats_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The local pool statistics. Updated when requests are executed, queued, and completed. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00196">196</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00459">HandleTopicUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00554">UpdateLocalMemUsage()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="a6fb9f9ada488890e635e4bbcf3a423be"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a>* impala::AdmissionController::metrics_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Metrics subsystem access. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00175">175</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>.</p>
</div>
</div>
<a class="anchor" id="a2daa040681ba2782f9f0eb41bd3197ea"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a1690f42681dc37923f2b08725e144ecc">PerBackendPoolStatsMap</a> impala::AdmissionController::per_backend_pool_stats_map_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00212">212</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00494">HandleTopicDeletions()</a>, <a class="el" href="admission-controller_8cc_source.html#l00459">HandleTopicUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00508">UpdateClusterAggregates()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00428">UpdatePoolStats()</a>.</p>
</div>
</div>
<a class="anchor" id="ab9f3248cc32b91bc8f8c797a514889e7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a416f815f1cddfc7001f58d89d078f9a9">PoolConfigMap</a> impala::AdmissionController::pool_config_cache_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00239">239</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>.</p>
</div>
</div>
<a class="anchor" id="ab07407fa20f5ef686de5824840286d76"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#aee5da036860de4aab64be4509f7d4b72">PoolMetricsMap</a> impala::AdmissionController::pool_metrics_map_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00233">233</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00686">GetPoolMetrics()</a>.</p>
</div>
</div>
<a class="anchor" id="a99080dfa78407542de46711625115ce1"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a4ed0926d769de793ee374ae9bdb5d757">PoolSet</a> impala::AdmissionController::pools_for_updates_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The set of local pools that have changed between topic updates that need to be sent to the statestore. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00203">203</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>, <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>, <a class="el" href="admission-controller_8cc_source.html#l00395">ReleaseQuery()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00554">UpdateLocalMemUsage()</a>.</p>
</div>
</div>
<a class="anchor" id="a5d662daad4d68e75e0c7875d26fb8f4f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1RequestPoolService.html">RequestPoolService</a>* impala::AdmissionController::request_pool_service_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Used for user-to-pool resolution and looking up pool configurations. Not owned by the <a class="el" href="classimpala_1_1AdmissionController.html">AdmissionController</a>. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00172">172</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>.</p>
</div>
</div>
<a class="anchor" id="a2894d0d3e37b8e062afd67f7766717c6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1AdmissionController.html#a098deea1cb8aed24d6126ab57cfce275">RequestQueueMap</a> impala::AdmissionController::request_queue_map_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00229">229</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00265">AdmitQuery()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00595">DequeueLoop()</a>.</p>
</div>
</div>
<a class="anchor" id="af933abc2c4d3692cb5dd12d681db9c6b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classimpala_1_1ThriftSerializer.html">ThriftSerializer</a> impala::AdmissionController::thrift_serializer_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Serializes/deserializes TPoolStats when sending and receiving topic updates. </p>
<p>Definition at line <a class="el" href="admission-controller_8h_source.html#l00184">184</a> of file <a class="el" href="admission-controller_8h_source.html">admission-controller.h</a>.</p>
<p>Referenced by <a class="el" href="admission-controller_8cc_source.html#l00568">AddPoolUpdates()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>be/src/scheduling/<a class="el" href="admission-controller_8h_source.html">admission-controller.h</a></li>
<li>be/src/scheduling/<a class="el" href="admission-controller_8cc_source.html">admission-controller.cc</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespaceimpala.html">impala</a></li><li class="navelem"><a class="el" href="classimpala_1_1AdmissionController.html">AdmissionController</a></li>
<li class="footer">Generated on Thu May 7 2015 16:10:50 for Impala by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 </li>
</ul>
</div>
</body>
</html>