blob: 6d126ace9500c80c405eb429e64b60374f65000b [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::StatestoreSubscriber 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_1StatestoreSubscriber.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-types">Public Types</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="#friends">Friends</a> &#124;
<a href="classimpala_1_1StatestoreSubscriber-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">impala::StatestoreSubscriber Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for impala::StatestoreSubscriber:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classimpala_1_1StatestoreSubscriber__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_1StatestoreSubscriber_1_1Callbacks.html">Callbacks</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-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a892cd79b5b97edc1a4d0cb692be151d2"><td class="memItemLeft" align="right" valign="top">typedef std::map<br class="typebreak"/>
&lt; <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, <br class="typebreak"/>
TTopicDelta &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">TopicDeltaMap</a></td></tr>
<tr class="memdesc:a892cd79b5b97edc1a4d0cb692be151d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">A TopicDeltaMap is passed to each callback. See UpdateCallback for more details. <a href="#a892cd79b5b97edc1a4d0cb692be151d2">More...</a><br/></td></tr>
<tr class="separator:a892cd79b5b97edc1a4d0cb692be151d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afbaf06f3e5f1f339801d522b0091fc0c"><td class="memItemLeft" align="right" valign="top">typedef boost::function&lt; void(const <br class="typebreak"/>
<a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">TopicDeltaMap</a> &amp;state, <br class="typebreak"/>
std::vector&lt; TTopicDelta &gt;<br class="typebreak"/>
*topic_updates)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#afbaf06f3e5f1f339801d522b0091fc0c">UpdateCallback</a></td></tr>
<tr class="separator:afbaf06f3e5f1f339801d522b0091fc0c"><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:ae36a7a9bae5f9bb10a52ed6214ca1a5a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ae36a7a9bae5f9bb10a52ed6214ca1a5a">StatestoreSubscriber</a> (const std::string &amp;subscriber_id, const TNetworkAddress &amp;heartbeat_address, const TNetworkAddress &amp;statestore_address, <a class="el" href="classimpala_1_1MetricGroup.html">MetricGroup</a> *metrics)</td></tr>
<tr class="memdesc:ae36a7a9bae5f9bb10a52ed6214ca1a5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">statestore_address - the address of the statestore to register with <a href="#ae36a7a9bae5f9bb10a52ed6214ca1a5a">More...</a><br/></td></tr>
<tr class="separator:ae36a7a9bae5f9bb10a52ed6214ca1a5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc9a9b084411e93362c65e7b6a5b1ff2"><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_1StatestoreSubscriber.html#afc9a9b084411e93362c65e7b6a5b1ff2">AddTopic</a> (const <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a> &amp;topic_id, <a class="el" href="classbool.html">bool</a> is_transient, const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#afbaf06f3e5f1f339801d522b0091fc0c">UpdateCallback</a> &amp;callback)</td></tr>
<tr class="separator:afc9a9b084411e93362c65e7b6a5b1ff2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae362f9dfb8bf27163c4362f31a308772"><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_1StatestoreSubscriber.html#ae362f9dfb8bf27163c4362f31a308772">Start</a> ()</td></tr>
<tr class="memdesc:ae362f9dfb8bf27163c4362f31a308772"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns OK unless some error occurred, like a failure to connect. <a href="#ae362f9dfb8bf27163c4362f31a308772">More...</a><br/></td></tr>
<tr class="separator:ae362f9dfb8bf27163c4362f31a308772"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afed23c0b16a5e1ada4bbea0015748999"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#afed23c0b16a5e1ada4bbea0015748999">id</a> () const </td></tr>
<tr class="separator:afed23c0b16a5e1ada4bbea0015748999"><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:ab5b87989c7c4d22b507efef072411980"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, <br class="typebreak"/>
<a class="el" href="structimpala_1_1StatestoreSubscriber_1_1Callbacks.html">Callbacks</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab5b87989c7c4d22b507efef072411980">UpdateCallbacks</a></td></tr>
<tr class="separator:ab5b87989c7c4d22b507efef072411980"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8afab83e01741458ef3aa8370c883398"><td class="memItemLeft" align="right" valign="top">typedef boost::unordered_map<br class="typebreak"/>
&lt; <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, int64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a8afab83e01741458ef3aa8370c883398">TopicVersionMap</a></td></tr>
<tr class="separator:a8afab83e01741458ef3aa8370c883398"><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:ad5803fa31f6a5738fb7ded4a43b349cc"><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_1StatestoreSubscriber.html#ad5803fa31f6a5738fb7ded4a43b349cc">UpdateState</a> (const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">TopicDeltaMap</a> &amp;incoming_topic_deltas, const TUniqueId &amp;registration_id, std::vector&lt; TTopicDelta &gt; *subscriber_topic_updates, <a class="el" href="classbool.html">bool</a> *skipped)</td></tr>
<tr class="separator:ad5803fa31f6a5738fb7ded4a43b349cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3d6f3b8bec22de9521526aa62ad064c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#af3d6f3b8bec22de9521526aa62ad064c">Heartbeat</a> (const TUniqueId &amp;registration_id)</td></tr>
<tr class="memdesc:af3d6f3b8bec22de9521526aa62ad064c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called when the statestore sends a heartbeat message. Updates the failure detector. <a href="#af3d6f3b8bec22de9521526aa62ad064c">More...</a><br/></td></tr>
<tr class="separator:af3d6f3b8bec22de9521526aa62ad064c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9484addc4e8c80aca6a10b584a404642"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a9484addc4e8c80aca6a10b584a404642">RecoveryModeChecker</a> ()</td></tr>
<tr class="separator:a9484addc4e8c80aca6a10b584a404642"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab926c3659fa0dfa7ca419d410eb8305f"><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_1StatestoreSubscriber.html#ab926c3659fa0dfa7ca419d410eb8305f">Register</a> ()</td></tr>
<tr class="separator:ab926c3659fa0dfa7ca419d410eb8305f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a190aff056caef5690f3066f0f54e6a41"><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_1StatestoreSubscriber.html#a190aff056caef5690f3066f0f54e6a41">CheckRegistrationId</a> (const TUniqueId &amp;registration_id)</td></tr>
<tr class="separator:a190aff056caef5690f3066f0f54e6a41"><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:abc056863a86ea547bbd54656c9a0575c"><td class="memItemLeft" align="right" valign="top">const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#abc056863a86ea547bbd54656c9a0575c">subscriber_id_</a></td></tr>
<tr class="memdesc:abc056863a86ea547bbd54656c9a0575c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unique, but opaque, identifier for this subscriber. <a href="#abc056863a86ea547bbd54656c9a0575c">More...</a><br/></td></tr>
<tr class="separator:abc056863a86ea547bbd54656c9a0575c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf7ae93ff26655b854e7a98fdd719541"><td class="memItemLeft" align="right" valign="top">TNetworkAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#acf7ae93ff26655b854e7a98fdd719541">heartbeat_address_</a></td></tr>
<tr class="memdesc:acf7ae93ff26655b854e7a98fdd719541"><td class="mdescLeft">&#160;</td><td class="mdescRight">Address that the heartbeat service should be started on. <a href="#acf7ae93ff26655b854e7a98fdd719541">More...</a><br/></td></tr>
<tr class="separator:acf7ae93ff26655b854e7a98fdd719541"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f11b1888b0d856e01d289efa6077e63"><td class="memItemLeft" align="right" valign="top">TNetworkAddress&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a0f11b1888b0d856e01d289efa6077e63">statestore_address_</a></td></tr>
<tr class="memdesc:a0f11b1888b0d856e01d289efa6077e63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Address of the statestore. <a href="#a0f11b1888b0d856e01d289efa6077e63">More...</a><br/></td></tr>
<tr class="separator:a0f11b1888b0d856e01d289efa6077e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb79a2b995e5328fe4b0bd673ca10d9a"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr<br class="typebreak"/>
&lt; <a class="el" href="classStatestoreSubscriberIf.html">StatestoreSubscriberIf</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#adb79a2b995e5328fe4b0bd673ca10d9a">thrift_iface_</a></td></tr>
<tr class="separator:adb79a2b995e5328fe4b0bd673ca10d9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7c3999eac69077548f22772c80192d8"><td class="memItemLeft" align="right" valign="top">boost::shared_ptr&lt; <a class="el" href="classimpala_1_1ThriftServer.html">ThriftServer</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ae7c3999eac69077548f22772c80192d8">heartbeat_server_</a></td></tr>
<tr class="memdesc:ae7c3999eac69077548f22772c80192d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Container for the heartbeat server. <a href="#ae7c3999eac69077548f22772c80192d8">More...</a><br/></td></tr>
<tr class="separator:ae7c3999eac69077548f22772c80192d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6850007d07f73b300509be1fd3f40bb1"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr<br class="typebreak"/>
&lt; <a class="el" href="classimpala_1_1TimeoutFailureDetector.html">impala::TimeoutFailureDetector</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a6850007d07f73b300509be1fd3f40bb1">failure_detector_</a></td></tr>
<tr class="memdesc:a6850007d07f73b300509be1fd3f40bb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Failure detector that tracks heartbeat messages from the statestore. <a href="#a6850007d07f73b300509be1fd3f40bb1">More...</a><br/></td></tr>
<tr class="separator:a6850007d07f73b300509be1fd3f40bb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a10cf593e773daad628aa64d6b31cfd96"><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_1StatestoreSubscriber.html#a10cf593e773daad628aa64d6b31cfd96">recovery_mode_thread_</a></td></tr>
<tr class="memdesc:a10cf593e773daad628aa64d6b31cfd96"><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> in which RecoveryModeChecker runs. <a href="#a10cf593e773daad628aa64d6b31cfd96">More...</a><br/></td></tr>
<tr class="separator:a10cf593e773daad628aa64d6b31cfd96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab972143162e20f1758457e6758c04410"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab972143162e20f1758457e6758c04410">lock_</a></td></tr>
<tr class="separator:ab972143162e20f1758457e6758c04410"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5be8d3382d65898e0310fac283771fb"><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_1StatestoreSubscriber.html#ae5be8d3382d65898e0310fac283771fb">is_registered_</a></td></tr>
<tr class="separator:ae5be8d3382d65898e0310fac283771fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa45b5d93dfc88e3ac54e62e522427b7e"><td class="memItemLeft" align="right" valign="top">boost::mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#aa45b5d93dfc88e3ac54e62e522427b7e">registration_id_lock_</a></td></tr>
<tr class="separator:aa45b5d93dfc88e3ac54e62e522427b7e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6168307fe4ede47191ecb7c44d941b40"><td class="memItemLeft" align="right" valign="top">TUniqueId&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a6168307fe4ede47191ecb7c44d941b40">registration_id_</a></td></tr>
<tr class="separator:a6168307fe4ede47191ecb7c44d941b40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a23618aa4345cce55d83f33011af603b4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab5b87989c7c4d22b507efef072411980">UpdateCallbacks</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a23618aa4345cce55d83f33011af603b4">update_callbacks_</a></td></tr>
<tr class="separator:a23618aa4345cce55d83f33011af603b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c211908c8ab573e26307b6c513d53a3"><td class="memItemLeft" align="right" valign="top">std::map&lt; <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, <br class="typebreak"/>
<a class="el" href="classbool.html">bool</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a2c211908c8ab573e26307b6c513d53a3">topic_registrations_</a></td></tr>
<tr class="separator:a2c211908c8ab573e26307b6c513d53a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65b14aaee673a6bfe44495358f0c7f41"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a8afab83e01741458ef3aa8370c883398">TopicVersionMap</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a65b14aaee673a6bfe44495358f0c7f41">current_topic_versions_</a></td></tr>
<tr class="separator:a65b14aaee673a6bfe44495358f0c7f41"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58a05e063a904a32064a2053e3c604ff"><td class="memItemLeft" align="right" valign="top">boost::scoped_ptr<br class="typebreak"/>
&lt; <a class="el" href="namespaceimpala.html#ac468011cd4f6868b9b7e1f2acb56c94e">StatestoreClientCache</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a58a05e063a904a32064a2053e3c604ff">client_cache_</a></td></tr>
<tr class="memdesc:a58a05e063a904a32064a2053e3c604ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">statestore client cache - only one client is ever used. <a href="#a58a05e063a904a32064a2053e3c604ff">More...</a><br/></td></tr>
<tr class="separator:a58a05e063a904a32064a2053e3c604ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a659c52f90869723e50ab81a161965cac"><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_1StatestoreSubscriber.html#a659c52f90869723e50ab81a161965cac">metrics_</a></td></tr>
<tr class="memdesc:a659c52f90869723e50ab81a161965cac"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classimpala_1_1MetricGroup.html" title="MetricGroups may be organised hierarchically as a tree. ">MetricGroup</a> instance that all metrics are registered in. Not owned by this class. <a href="#a659c52f90869723e50ab81a161965cac">More...</a><br/></td></tr>
<tr class="separator:a659c52f90869723e50ab81a161965cac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a608844261bc61fbc3a5f323b39f6fc6e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceimpala.html#a67659fb7ecbc7faa1705c0fde687076f">BooleanProperty</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a608844261bc61fbc3a5f323b39f6fc6e">connected_to_statestore_metric_</a></td></tr>
<tr class="memdesc:a608844261bc61fbc3a5f323b39f6fc6e"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classimpala_1_1Metric.html" title="TODO: Add ToThrift() for conversion to an RPC-friendly format. ">Metric</a> to indicate if we are successfully registered with the statestore. <a href="#a608844261bc61fbc3a5f323b39f6fc6e">More...</a><br/></td></tr>
<tr class="separator:a608844261bc61fbc3a5f323b39f6fc6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb39f5e2fa795db5d46df4f2e4e8a93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceimpala.html#af291a879430eef445a800397361bc690">DoubleGauge</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#afeb39f5e2fa795db5d46df4f2e4e8a93">last_recovery_duration_metric_</a></td></tr>
<tr class="memdesc:afeb39f5e2fa795db5d46df4f2e4e8a93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of time last spent in recovery mode. <a href="#afeb39f5e2fa795db5d46df4f2e4e8a93">More...</a><br/></td></tr>
<tr class="separator:afeb39f5e2fa795db5d46df4f2e4e8a93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe503b062fff002d6544a0d5182fa1ac"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceimpala.html#afcf5d0484c3833cf0f4f6c681412e398">StringProperty</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#afe503b062fff002d6544a0d5182fa1ac">last_recovery_time_metric_</a></td></tr>
<tr class="memdesc:afe503b062fff002d6544a0d5182fa1ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">When the last recovery happened. <a href="#afe503b062fff002d6544a0d5182fa1ac">More...</a><br/></td></tr>
<tr class="separator:afe503b062fff002d6544a0d5182fa1ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3a0727dfbe61b9c62913e6ecbd91348"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1StatsMetric.html">StatsMetric</a>&lt; double &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#ae3a0727dfbe61b9c62913e6ecbd91348">topic_update_interval_metric_</a></td></tr>
<tr class="memdesc:ae3a0727dfbe61b9c62913e6ecbd91348"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accumulated statistics on the frequency of topic-update messages. <a href="#ae3a0727dfbe61b9c62913e6ecbd91348">More...</a><br/></td></tr>
<tr class="separator:ae3a0727dfbe61b9c62913e6ecbd91348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb98cfad8aabf894a0df39be04bdc477"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1MonotonicStopWatch.html">MonotonicStopWatch</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#acb98cfad8aabf894a0df39be04bdc477">topic_update_interval_timer_</a></td></tr>
<tr class="memdesc:acb98cfad8aabf894a0df39be04bdc477"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tracks the time between topic-update mesages. <a href="#acb98cfad8aabf894a0df39be04bdc477">More...</a><br/></td></tr>
<tr class="separator:acb98cfad8aabf894a0df39be04bdc477"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fa88fd4d81890b88e9a4d9e3e573992"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1StatsMetric.html">StatsMetric</a>&lt; double &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a0fa88fd4d81890b88e9a4d9e3e573992">topic_update_duration_metric_</a></td></tr>
<tr class="separator:a0fa88fd4d81890b88e9a4d9e3e573992"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00b32439e297666cdd5ba1052ee04309"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1MonotonicStopWatch.html">MonotonicStopWatch</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a00b32439e297666cdd5ba1052ee04309">heartbeat_interval_timer_</a></td></tr>
<tr class="memdesc:a00b32439e297666cdd5ba1052ee04309"><td class="mdescLeft">&#160;</td><td class="mdescRight">Tracks the time between heartbeat mesages. <a href="#a00b32439e297666cdd5ba1052ee04309">More...</a><br/></td></tr>
<tr class="separator:a00b32439e297666cdd5ba1052ee04309"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf036a4c0f68d974fc04146bcd9152be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classimpala_1_1StatsMetric.html">StatsMetric</a>&lt; double &gt; *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#aaf036a4c0f68d974fc04146bcd9152be">heartbeat_interval_metric_</a></td></tr>
<tr class="memdesc:aaf036a4c0f68d974fc04146bcd9152be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accumulated statistics on the frequency of heartbeat messages. <a href="#aaf036a4c0f68d974fc04146bcd9152be">More...</a><br/></td></tr>
<tr class="separator:aaf036a4c0f68d974fc04146bcd9152be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56bc5af9989d57bdc89fc5b61484a8d0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceimpala.html#afcf5d0484c3833cf0f4f6c681412e398">StringProperty</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#a56bc5af9989d57bdc89fc5b61484a8d0">registration_id_metric_</a></td></tr>
<tr class="memdesc:a56bc5af9989d57bdc89fc5b61484a8d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Current registration ID, in string form. <a href="#a56bc5af9989d57bdc89fc5b61484a8d0">More...</a><br/></td></tr>
<tr class="separator:a56bc5af9989d57bdc89fc5b61484a8d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aaf307b7060c34c9ec4fc080b870dcd3f"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classimpala_1_1StatestoreSubscriber.html#aaf307b7060c34c9ec4fc080b870dcd3f">StatestoreSubscriberThriftIf</a></td></tr>
<tr class="memdesc:aaf307b7060c34c9ec4fc080b870dcd3f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subscriber thrift implementation, needs to access UpdateState. <a href="#aaf307b7060c34c9ec4fc080b870dcd3f">More...</a><br/></td></tr>
<tr class="separator:aaf307b7060c34c9ec4fc080b870dcd3f"><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>A <a class="el" href="classimpala_1_1StatestoreSubscriber.html">StatestoreSubscriber</a> communicates with a statestore periodically through the exchange of topic update messages. These messages contain updates from the statestore to a list of 'topics' that the subscriber is interested in; in response the subscriber sends a list of changes that it wishes to make to a topic. The statestore also sends more frequent 'heartbeat' messages that confirm the connection between statestore and subscriber is still active. Clients of the subscriber register topics of interest, and a function to call once an update has been received. Each callback may optionally add one or more updates to a list of topic updates to be sent back to the statestore. See AddTopic for the requirements placed on these callbacks. Topics must be subscribed to before the subscriber is connected to the statestore: there is no way to add a new subscription after the subscriber has successfully registered. If the subscriber does not receive heartbeats from the statestore within a configurable period of time, the subscriber enters 'recovery mode', where it continually attempts to re-register with the statestore. Recovery mode is not triggered if a heartbeat takes a long time to process locally. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00064">64</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a class="anchor" id="a892cd79b5b97edc1a4d0cb692be151d2"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::map&lt;<a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, TTopicDelta&gt; <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">impala::StatestoreSubscriber::TopicDeltaMap</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>A TopicDeltaMap is passed to each callback. See UpdateCallback for more details. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00079">79</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div>
</div>
<a class="anchor" id="a8afab83e01741458ef3aa8370c883398"></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;<a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, int64_t&gt; <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a8afab83e01741458ef3aa8370c883398">impala::StatestoreSubscriber::TopicVersionMap</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>Mapping of TopicId to the last version of the topic this subscriber successfully processed. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00190">190</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div>
</div>
<a class="anchor" id="afbaf06f3e5f1f339801d522b0091fc0c"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef boost::function&lt;void (const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">TopicDeltaMap</a>&amp; state, std::vector&lt;TTopicDelta&gt;* topic_updates)&gt; <a class="el" href="classimpala_1_1StatestoreSubscriber.html#afbaf06f3e5f1f339801d522b0091fc0c">impala::StatestoreSubscriber::UpdateCallback</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Function called to update a service with new state. Called in a separate thread to the one in which it is registered. Every UpdateCallback is invoked every time that an update is received from the statestore. Therefore the callback should not assume that the TopicDeltaMap contains an entry for their particular topic of interest. If a delta for a particular topic does not have the 'is_delta' flag set, clients should assume that the delta contains the entire known state for that topic. This occurs particularly after statestore failure, and usually clients will need to republish any local state that is missing. <a class="el" href="structimpala_1_1StatestoreSubscriber_1_1Callbacks.html">Callbacks</a> may publish new updates to any topic via the topic_updates parameter, although updates for unknown topics (i.e. those with no subscribers) will be ignored. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00099">99</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div>
</div>
<a class="anchor" id="ab5b87989c7c4d22b507efef072411980"></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;<a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, <a class="el" href="structimpala_1_1StatestoreSubscriber_1_1Callbacks.html">Callbacks</a>&gt; <a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab5b87989c7c4d22b507efef072411980">impala::StatestoreSubscriber::UpdateCallbacks</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>Mapping of topic ids to their associated callbacks. Because this mapping stores a pointer to an UpdateCallback, memory errors will occur if an UpdateCallback is deleted before being unregistered. The UpdateCallback destructor checks for such problems, so that we will have an assertion failure rather than a memory error. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00177">177</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ae36a7a9bae5f9bb10a52ed6214ca1a5a"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">impala::StatestoreSubscriber::StatestoreSubscriber </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>subscriber_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>heartbeat_address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const TNetworkAddress &amp;&#160;</td>
<td class="paramname"><em>statestore_address</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>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>statestore_address - the address of the statestore to register with </p>
<p>Only constructor. subscriber_id - should be unique across the cluster, identifies this subscriber heartbeat_address - the local address on which the heartbeat service which communicates with the statestore should be started. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00089">89</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="metrics_8h_source.html#l00223">impala::MetricGroup::AddGauge()</a>, <a class="el" href="metrics_8h_source.html#l00231">impala::MetricGroup::AddProperty()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00194">client_cache_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00200">connected_to_statestore_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00222">heartbeat_interval_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00203">last_recovery_duration_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00206">last_recovery_time_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00197">metrics_</a>, <a class="el" href="metrics_8h_source.html#l00211">impala::MetricGroup::RegisterMetric()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00225">registration_id_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00216">topic_update_duration_metric_</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00209">topic_update_interval_metric_</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="afc9a9b084411e93362c65e7b6a5b1ff2"></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::StatestoreSubscriber::AddTopic </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a> &amp;&#160;</td>
<td class="paramname"><em>topic_id</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>is_transient</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#afbaf06f3e5f1f339801d522b0091fc0c">UpdateCallback</a> &amp;&#160;</td>
<td class="paramname"><em>callback</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a topic to the set of topics that updates will be received for. When a topic update is received, the supplied UpdateCallback will be invoked. Therefore clients should ensure that it is safe to invoke callback for the entire lifetime of the subscriber; in particular this means that the subscriber should be torn-down before any objects that own callbacks. Must be called before <a class="el" href="classimpala_1_1StatestoreSubscriber.html#ae362f9dfb8bf27163c4362f31a308772" title="Returns OK unless some error occurred, like a failure to connect. ">Start()</a>, in which case it will return <a class="el" href="classimpala_1_1Status.html#a580565665ea944eb64f3f495b1bee1e0">Status::OK</a>. Otherwise an error will be returned. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00126">126</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8cc_source.html#l00054">impala::CALLBACK_METRIC_PATTERN</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00170">impala::StatestoreSubscriber::Callbacks::callbacks</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00151">is_registered_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00147">lock_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00197">metrics_</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00167">impala::StatestoreSubscriber::Callbacks::processing_time_metric</a>, <a class="el" href="metrics_8h_source.html#l00211">impala::MetricGroup::RegisterMetric()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00186">topic_registrations_</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00181">update_callbacks_</a>.</p>
<p>Referenced by <a class="el" href="impala-server_8cc_source.html#l00226">impala::ImpalaServer::ImpalaServer()</a>, and <a class="el" href="admission-controller_8cc_source.html#l00201">impala::AdmissionController::Init()</a>.</p>
</div>
</div>
<a class="anchor" id="a190aff056caef5690f3066f0f54e6a41"></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::StatestoreSubscriber::CheckRegistrationId </td>
<td>(</td>
<td class="paramtype">const TUniqueId &amp;&#160;</td>
<td class="paramname"><em>registration_id</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>Returns OK if registration_id == registration_id_, or if registration_id_ is not yet set, an error otherwise. Used to confirm that RPCs from the statestore are intended for the current registration epoch. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00263">263</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="debug-util_8cc_source.html#l00097">impala::PrintId()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00162">registration_id_</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00155">registration_id_lock_</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00279">Heartbeat()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="af3d6f3b8bec22de9521526aa62ad064c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::StatestoreSubscriber::Heartbeat </td>
<td>(</td>
<td class="paramtype">const TUniqueId &amp;&#160;</td>
<td class="paramname"><em>registration_id</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>Called when the statestore sends a heartbeat message. Updates the failure detector. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00279">279</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8cc_source.html#l00263">CheckRegistrationId()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00140">failure_detector_</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00222">heartbeat_interval_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00219">heartbeat_interval_timer_</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="stopwatch_8h_source.html#l00096">impala::MonotonicStopWatch::Reset()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00051">impala::STATESTORE_ID</a>, <a class="el" href="collection-metrics_8h_source.html#l00112">impala::StatsMetric&lt; T &gt;::Update()</a>, and <a class="el" href="logging_8h_source.html#l00056">VLOG_RPC</a>.</p>
</div>
</div>
<a class="anchor" id="afed23c0b16a5e1ada4bbea0015748999"></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&amp; impala::StatestoreSubscriber::id </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00120">120</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8h_source.html#l00124">subscriber_id_</a>.</p>
</div>
</div>
<a class="anchor" id="a9484addc4e8c80aca6a10b584a404642"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void impala::StatestoreSubscriber::RecoveryModeChecker </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>Run in a separate thread. In a loop, check failure_detector_ to see if the statestore is still sending heartbeat messages. If not, enter 'recovery mode' where a reconnection is repeatedly attempted. Once reconnected, all existing subscriptions and services are reregistered and normal operation resumes. During recovery mode, any public methods that are started will block on lock_, which is only released when recovery finishes. In practice, all registrations are made early in the life of an impalad before the statestore could be detected as failed. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00211">211</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8h_source.html#l00200">connected_to_statestore_metric_</a>, <a class="el" href="udf-debug_8h_source.html#l00027">impala_udf::DebugString()</a>, <a class="el" href="stopwatch_8h_source.html#l00105">impala::MonotonicStopWatch::ElapsedTime()</a>, <a class="el" href="failure-detector_8h_source.html#l00036">impala::FailureDetector::FAILED</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00140">failure_detector_</a>, <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00203">last_recovery_duration_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00206">last_recovery_time_metric_</a>, <a class="el" href="timestamp-value_8h_source.html#l00105">impala::TimestampValue::LocalTime()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00147">lock_</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00058">impala::SLEEP_INTERVAL_MS</a>, <a class="el" href="time_8cc_source.html#l00021">impala::SleepForMs()</a>, <a class="el" href="stopwatch_8h_source.html#l00081">impala::MonotonicStopWatch::Start()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00051">impala::STATESTORE_ID</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00124">subscriber_id_</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="ab926c3659fa0dfa7ca419d410eb8305f"></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::StatestoreSubscriber::Register </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>Creates a client of the remote statestore and sends a list of topics to register for. Returns OK unless there is some problem connecting, or the statestore reports an error. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00141">141</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8h_source.html#l00194">client_cache_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00200">connected_to_statestore_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00127">heartbeat_address_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00219">heartbeat_interval_timer_</a>, <a class="el" href="debug-util_8cc_source.html#l00097">impala::PrintId()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00162">registration_id_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00155">registration_id_lock_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00225">registration_id_metric_</a>, <a class="el" href="status_8h_source.html#l00242">RETURN_IF_ERROR</a>, <a class="el" href="stopwatch_8h_source.html#l00081">impala::MonotonicStopWatch::Start()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00130">statestore_address_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00124">subscriber_id_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00186">topic_registrations_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00212">topic_update_interval_timer_</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00181">update_callbacks_</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="ae362f9dfb8bf27163c4362f31a308772"></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::StatestoreSubscriber::Start </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns OK unless some error occurred, like a failure to connect. </p>
<p>Registers this subscriber with the statestore, and starts the heartbeat service, as well as a thread to check for failure and initiate recovery mode. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00176">176</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="status_8cc_source.html#l00184">impala::Status::GetDetail()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00127">heartbeat_address_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00137">heartbeat_server_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00151">is_registered_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00147">lock_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00197">metrics_</a>, <a class="el" href="status_8h_source.html#l00172">impala::Status::ok()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00143">recovery_mode_thread_</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, <a class="el" href="status_8h_source.html#l00242">RETURN_IF_ERROR</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00134">thrift_iface_</a>.</p>
</div>
</div>
<a class="anchor" id="ad5803fa31f6a5738fb7ded4a43b349cc"></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::StatestoreSubscriber::UpdateState </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classimpala_1_1StatestoreSubscriber.html#a892cd79b5b97edc1a4d0cb692be151d2">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">const TUniqueId &amp;&#160;</td>
<td class="paramname"><em>registration_id</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>, </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>skipped</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>Called when the statestore sends a topic update. Each registered callback is called in turn with the given map of incoming_topic_deltas from the statestore. Each TTopicDelta sent from the statestore to the subscriber will contain the topic name, a list of additions to the topic, a list of deletions from the topic, and the version range the update covers. A from_version of 0 indicates a non-delta update. In response, any updates to the topic by the subscriber are aggregated in subscriber_topic_updates and returned to the statestore. Each update is a TTopicDelta that contains a list of additions to the topic and a list of deletions from the topic. Additionally, if a subscriber has received an unexpected delta update version range, they can request a new delta update by setting the "from_version" field of the TTopicDelta response. The next statestore update will be based off the version the subscriber responds with. If the subscriber is in recovery mode, this method returns immediately. Returns an error if some error was encountered (e.g. the supplied registration ID was unexpected), and OK otherwise. The output parameter 'skipped' is set to true if the subscriber chose not to process this topic-update (if, for example, a concurrent update was being processed, or if the subscriber currently believes it is recovering). Doing so indicates that no topics were updated during this call. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8cc_source.html#l00290">290</a> of file <a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.cc</a>.</p>
<p>References <a class="el" href="statestore-subscriber_8cc_source.html#l00263">CheckRegistrationId()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00191">current_topic_versions_</a>, <a class="el" href="stopwatch_8h_source.html#l00105">impala::MonotonicStopWatch::ElapsedTime()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00147">lock_</a>, <a class="el" href="status_8h_source.html#l00087">impala::Status::OK</a>, <a class="el" href="stopwatch_8h_source.html#l00096">impala::MonotonicStopWatch::Reset()</a>, <a class="el" href="status_8h_source.html#l00242">RETURN_IF_ERROR</a>, <a class="el" href="stopwatch_8h_source.html#l00081">impala::MonotonicStopWatch::Start()</a>, <a class="el" href="stopwatch_8h_source.html#l00088">impala::MonotonicStopWatch::Stop()</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00216">topic_update_duration_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00209">topic_update_interval_metric_</a>, <a class="el" href="statestore-subscriber_8h_source.html#l00212">topic_update_interval_timer_</a>, <a class="el" href="collection-metrics_8h_source.html#l00112">impala::StatsMetric&lt; T &gt;::Update()</a>, and <a class="el" href="statestore-subscriber_8h_source.html#l00181">update_callbacks_</a>.</p>
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a class="anchor" id="aaf307b7060c34c9ec4fc080b870dcd3f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">friend class <a class="el" href="classimpala_1_1StatestoreSubscriberThriftIf.html">StatestoreSubscriberThriftIf</a></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Subscriber thrift implementation, needs to access UpdateState. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00228">228</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a58a05e063a904a32064a2053e3c604ff"></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="namespaceimpala.html#ac468011cd4f6868b9b7e1f2acb56c94e">StatestoreClientCache</a>&gt; impala::StatestoreSubscriber::client_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>statestore client cache - only one client is ever used. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00194">194</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="a608844261bc61fbc3a5f323b39f6fc6e"></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="namespaceimpala.html#a67659fb7ecbc7faa1705c0fde687076f">BooleanProperty</a>* impala::StatestoreSubscriber::connected_to_statestore_metric_</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_1Metric.html" title="TODO: Add ToThrift() for conversion to an RPC-friendly format. ">Metric</a> to indicate if we are successfully registered with the statestore. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00200">200</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="a65b14aaee673a6bfe44495358f0c7f41"></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_1StatestoreSubscriber.html#a8afab83e01741458ef3aa8370c883398">TopicVersionMap</a> impala::StatestoreSubscriber::current_topic_versions_</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="statestore-subscriber_8h_source.html#l00191">191</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="a6850007d07f73b300509be1fd3f40bb1"></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_1TimeoutFailureDetector.html">impala::TimeoutFailureDetector</a>&gt; impala::StatestoreSubscriber::failure_detector_</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>Failure detector that tracks heartbeat messages from the statestore. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00140">140</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00279">Heartbeat()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>.</p>
</div>
</div>
<a class="anchor" id="acf7ae93ff26655b854e7a98fdd719541"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TNetworkAddress impala::StatestoreSubscriber::heartbeat_address_</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>Address that the heartbeat service should be started on. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00127">127</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="aaf036a4c0f68d974fc04146bcd9152be"></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_1StatsMetric.html">StatsMetric</a>&lt;double&gt;* impala::StatestoreSubscriber::heartbeat_interval_metric_</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>Accumulated statistics on the frequency of heartbeat messages. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00222">222</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00279">Heartbeat()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="a00b32439e297666cdd5ba1052ee04309"></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_1MonotonicStopWatch.html">MonotonicStopWatch</a> impala::StatestoreSubscriber::heartbeat_interval_timer_</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>Tracks the time between heartbeat mesages. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00219">219</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00279">Heartbeat()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="ae7c3999eac69077548f22772c80192d8"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::shared_ptr&lt;<a class="el" href="classimpala_1_1ThriftServer.html">ThriftServer</a>&gt; impala::StatestoreSubscriber::heartbeat_server_</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>Container for the heartbeat server. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00137">137</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="ae5be8d3382d65898e0310fac283771fb"></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::StatestoreSubscriber::is_registered_</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>Set to true after Register(...) is successful, after which no more topics may be subscribed to. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00151">151</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00126">AddTopic()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="afeb39f5e2fa795db5d46df4f2e4e8a93"></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="namespaceimpala.html#af291a879430eef445a800397361bc690">DoubleGauge</a>* impala::StatestoreSubscriber::last_recovery_duration_metric_</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>Amount of time last spent in recovery mode. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00203">203</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="afe503b062fff002d6544a0d5182fa1ac"></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="namespaceimpala.html#afcf5d0484c3833cf0f4f6c681412e398">StringProperty</a>* impala::StatestoreSubscriber::last_recovery_time_metric_</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>When the last recovery happened. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00206">206</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="ab972143162e20f1758457e6758c04410"></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::StatestoreSubscriber::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>Class-wide lock. Protects all subsequent members. Most private methods must be called holding this lock; this is noted in the method comments. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00147">147</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00126">AddTopic()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="a659c52f90869723e50ab81a161965cac"></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::StatestoreSubscriber::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><a class="el" href="classimpala_1_1MetricGroup.html" title="MetricGroups may be organised hierarchically as a tree. ">MetricGroup</a> instance that all metrics are registered in. Not owned by this class. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00197">197</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00126">AddTopic()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="a10cf593e773daad628aa64d6b31cfd96"></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::StatestoreSubscriber::recovery_mode_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> in which RecoveryModeChecker runs. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00143">143</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="a6168307fe4ede47191ecb7c44d941b40"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TUniqueId impala::StatestoreSubscriber::registration_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>Set during <a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab926c3659fa0dfa7ca419d410eb8305f">Register()</a>, this is the unique ID of the current registration with the statestore. If this subscriber must recover, or disconnects and then reconnects, the registration_id_ will change after <a class="el" href="classimpala_1_1StatestoreSubscriber.html#ab926c3659fa0dfa7ca419d410eb8305f">Register()</a> is called again. This allows the subscriber to reject communication from the statestore that pertains to a previous registration. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00162">162</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00263">CheckRegistrationId()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="aa45b5d93dfc88e3ac54e62e522427b7e"></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::StatestoreSubscriber::registration_id_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 registration_id_. Must be taken after lock_ if both are to be taken together. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00155">155</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00263">CheckRegistrationId()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="a56bc5af9989d57bdc89fc5b61484a8d0"></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="namespaceimpala.html#afcf5d0484c3833cf0f4f6c681412e398">StringProperty</a>* impala::StatestoreSubscriber::registration_id_metric_</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>Current registration ID, in string form. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00225">225</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>.</p>
</div>
</div>
<a class="anchor" id="a0f11b1888b0d856e01d289efa6077e63"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TNetworkAddress impala::StatestoreSubscriber::statestore_address_</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>Address of the statestore. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00130">130</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="abc056863a86ea547bbd54656c9a0575c"></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::StatestoreSubscriber::subscriber_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, but opaque, identifier for this subscriber. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00124">124</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8h_source.html#l00120">id()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00211">RecoveryModeChecker()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="adb79a2b995e5328fe4b0bd673ca10d9a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">boost::shared_ptr&lt;<a class="el" href="classStatestoreSubscriberIf.html">StatestoreSubscriberIf</a>&gt; impala::StatestoreSubscriber::thrift_iface_</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>Implementation of the heartbeat thrift interface, which proxies calls onto this object. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00134">134</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00176">Start()</a>.</p>
</div>
</div>
<a class="anchor" id="a2c211908c8ab573e26307b6c513d53a3"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::map&lt;<a class="el" href="classimpala_1_1Statestore.html#aa0a261a02804c62cb4b204a498e2e3ed">Statestore::TopicId</a>, <a class="el" href="classbool.html">bool</a>&gt; impala::StatestoreSubscriber::topic_registrations_</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>One entry for every topic subscribed to. The value is whether this subscriber considers this topic to be 'transient', that is any updates it makes will be deleted upon failure or disconnection. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00186">186</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00126">AddTopic()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>.</p>
</div>
</div>
<a class="anchor" id="a0fa88fd4d81890b88e9a4d9e3e573992"></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_1StatsMetric.html">StatsMetric</a>&lt;double&gt;* impala::StatestoreSubscriber::topic_update_duration_metric_</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>Accumulated statistics on the time taken to process each topic-update message from the statestore (that is, to call all callbacks) </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00216">216</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="ae3a0727dfbe61b9c62913e6ecbd91348"></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_1StatsMetric.html">StatsMetric</a>&lt;double&gt;* impala::StatestoreSubscriber::topic_update_interval_metric_</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>Accumulated statistics on the frequency of topic-update messages. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00209">209</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00089">StatestoreSubscriber()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="acb98cfad8aabf894a0df39be04bdc477"></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_1MonotonicStopWatch.html">MonotonicStopWatch</a> impala::StatestoreSubscriber::topic_update_interval_timer_</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>Tracks the time between topic-update mesages. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00212">212</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<a class="anchor" id="a23618aa4345cce55d83f33011af603b4"></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_1StatestoreSubscriber.html#ab5b87989c7c4d22b507efef072411980">UpdateCallbacks</a> impala::StatestoreSubscriber::update_callbacks_</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>Callback for all services that have registered for updates (indexed by the associated SubscriptionId), and associated lock. </p>
<p>Definition at line <a class="el" href="statestore-subscriber_8h_source.html#l00181">181</a> of file <a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a>.</p>
<p>Referenced by <a class="el" href="statestore-subscriber_8cc_source.html#l00126">AddTopic()</a>, <a class="el" href="statestore-subscriber_8cc_source.html#l00141">Register()</a>, and <a class="el" href="statestore-subscriber_8cc_source.html#l00290">UpdateState()</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>be/src/statestore/<a class="el" href="statestore-subscriber_8h_source.html">statestore-subscriber.h</a></li>
<li>be/src/statestore/<a class="el" href="statestore-subscriber_8cc_source.html">statestore-subscriber.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_1StatestoreSubscriber.html">StatestoreSubscriber</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>